Skip to content

Eddie4k-code/BuyTicket

Repository files navigation

This application demonstrates the use of microservices

I had a lot of fun working on this application! :)

Microservices Ticket Marketplace

Services

Auth Service

The Auth service handles user sign-ins and sign-outs. It ensures secure authentication and manages user sessions. By utilizing this service, users can securely access the ticket marketplace and perform actions based on their authenticated state.

Client Service

The Client service is responsible for the frontend part of the application. It utilizes Next.js and React to provide a dynamic and responsive user interface. Users can browse available tickets, make purchases, and view their orders through this service.

Expiration Service

The Expiration service tracks and manages order expirations. It utilizes a timer mechanism to determine when orders should be considered expired. This service ensures that orders are automatically canceled if not completed within a specific time frame, providing a seamless user experience.

Orders Service

The Orders service is in charge of managing all aspects related to orders. It handles the creation, modification, and retrieval of orders. By utilizing this service, users can place orders for tickets and manage their existing orders effectively.

Tickets Service

The Tickets service handles all operations related to tickets. It allows users to create new tickets, update existing ones, and retrieve ticket information. This service plays a vital role in the ticket marketplace by ensuring accurate and up-to-date ticket listings.

Payments Service

The Payments service is responsible for processing payments within the ticket marketplace. It handles the creation and management of payment transactions, ensuring secure and reliable payment processing. By utilizing this service, users can complete their purchases and receive confirmation of successful payments.

Infrastructure and Tools

Skaffold

Skaffold is utilized in this application to streamline the development and deployment workflow. It automates the building, tagging, and deployment of services, allowing for efficient and rapid development iterations. Skaffold integrates seamlessly with Kubernetes, making it an excellent tool for managing microservices-based projects.

Kubernetes

Kubernetes is employed as the container orchestration platform for this application. It provides scalability, resilience, and load balancing capabilities to the microservices architecture. Kubernetes ensures that services are distributed across multiple pods and can be scaled horizontally based on demand. This makes the application more robust and resilient to failures.

Docker

Docker is used for containerization in this application. Each service is packaged into a Docker container, which encapsulates its dependencies and provides consistency across different environments. Docker containers are lightweight, portable, and enable efficient deployment and scaling of microservices.

NATS

NATS (NATS Streaming or NATS.io) is utilized for inter-service communication within the microservices architecture. It provides a lightweight and scalable messaging system that enables services to communicate asynchronously.

NGINX

Nginx acts as a load balancer in this application. It distributes incoming requests across multiple instances of the Client service, ensuring optimal resource utilization and improved performance. Nginx plays a crucial role in managing the high volume of user traffic and helps maintain the responsiveness and availability of the ticket marketplace.