Components - DistributedTravels/Documentation GitHub Wiki
Application Components
All services within the architecture communicate with each other via a message broker. Implementation wise RabbitMQ message broker has been chosen. Frontend communicates with RESTful API of a WebAPI gateway to request data from within system. An abstract representation of the architecture is displayed on the drawing below.
Offers
Service responsible for collecting data from other services to create and display trips for users. Offer creation consists of obtaining data about availablility from Hotels and Transport services then matching it accordingly to build trip offers.
Reservations
Service providing a way to make reservations for specific configurations of trip offers.
Hotels
Service provides data about hotels, their characteristics and rooms inside them. This component is also responsible for noticing about reservations made in a specific term on specific rooms.
Transport
Service responsible for delivering information about available travel destinations and means of transportation (specific flights). Other functionalities of this service consist of reserving and booking plane seats.
Payments
A small, simple service that's responsible for processing payments for trips. Simulates credit card payments, payment processing time and potential errors during the process returning various (2) error states.
WebAPI
A bridge service between frontend and backend of the application. It communicates with all backend services via asynchronous communication provided by RabbitMQ, while delivering REST API available for frontend requests, communication and data transfer.
Frontend
A javascript based webpage exposed for client's use, built in React.JS.