JetSetGo is a Spring based microservices project using technologies like Spring Cloud (Eureka, Config, Gateway, Stream), Spring Data JPA, JWT etc. among other technologies. It simulates the backend of a flight booking system and was built with the primary focus of implementing a full fledged microservices architecture.
The API allows users to:
- register and login
- fetch flight details based on location and date
- book seats, fetch bookings and delete bookings
- checkin
Postman generated API Documentation can be found here.
The project consists of 7 different services that interact with each other using internal REST calls or Messaging. Each service handles the responsibilities of it's own domain. Here is the detailed breakdown for each service:
Service | Responsibility |
---|---|
Eureka | Service registration and discovery |
Gateway | Routing and Authentication |
Config | Hosts configuration properties for each of the services |
Auth | User registration and login |
Flight | Fetch flight details, reserve seats and vacate seats on a flight |
Booking | Fetch, create and delete bookings |
Checkin | Checkin functionality |
The application uses Spring Cloud Stream along with RabbitMQ for messaging. The following message flows are used in the application:
- Checkin subscribes to Booking for new bookings that are yet to checkin
- Booking subscribes to Checkin for updates to checkin status & seat number
- Flight and Checkin subscribes to Booking for cancellation updates
- Dockerizing the application, including the database and message binder.
- Deploying the application to the web.
- Maybe use Kafka instead of RabbitMQ.