SCHOOL PROJECT

Distributed Event Ticketing System

Microservices event ticketing platform with 5 Go services, message queuing, and monitoring.

01 Project Overview

A microservices-based event ticketing platform built as a school project to explore distributed systems architecture. The system consists of 5 independent Go services communicating through RabbitMQ, fronted by an Nginx API gateway, with a Next.js frontend. Includes full infrastructure monitoring with Prometheus and Grafana, and load testing with k6.

02 Microservices Architecture

Next.js Frontend
Nginx API Gateway → Routes to services
Go Services:
├── Auth Service | User authentication & authorization
├── Event Service | Event CRUD & management
├── Booking Service | Ticket reservations & seat management
├── Payment Service | Payment processing
└── Notification Service | Email/SMS notifications
Infrastructure: RabbitMQ (messaging) | PostgreSQL (data) | Redis (cache)
Monitoring: Prometheus + Grafana | k6 Load Testing

03 Technology Stack

Go RabbitMQ PostgreSQL Redis Docker Nginx Next.js Prometheus Grafana k6

04 Key Learnings

Service Communication

Designed inter-service communication using RabbitMQ for asynchronous event-driven interactions, ensuring services remain loosely coupled and independently deployable.

Observability

Implemented Prometheus metrics collection across all services with Grafana dashboards for real-time monitoring and k6 load testing to validate performance under stress.

API Gateway Pattern

Used Nginx as an API gateway to route requests to the appropriate microservice, handle SSL termination, and provide a unified entry point for the frontend.

ALX Nexus