This repository contains a suite of backend services for managing student-related activities in an academic context, implemented as part of an Msc course assessment.
⚡ Note: This is a multi-service repository. Each service lives in its own directory.
Service Directory | Description | Technology |
---|---|---|
student_service/ |
Authentication (JWT), Student profiles, Courses listing, Enrolment, Graduation eligibility | Java 21, Spring Boot 3.3.x, Spring Security, Spring Data JPA, PostgreSQL 14, Flyway, Docker |
finance_service/ |
Invoice creation, status tracking, payments | Java 17, Spring Boot, Spring Data JPA, MariaDB 10.6, Docker |
library_service/ |
Library account creation, book returns, fines | Python 3.7, Flask, MariaDB 10.6, Docker |
We orchestrate all services and shared infrastructure using two docker compose
files:
-
Infra stack:
docker-compose/docker-compose.infra.yml
- Postgres (Student DB)
- MariaDB (Finance DB)
- MariaDB (Library DB)
- RabbitMQ (*Pub/Sub)
- Consul (Service Discovery)
- Traefik (Proxy)
-
App stack:
docker-compose/docker-compose.app.yml
- API Gateway (Spring Cloud Gateway)
- Student Service [student-service]
- Finance Service [finance-service]
- Library Service [library-service]
All compose services share the
sesc_infra_net
andsesc_app_net
networks.
- Docker & Docker Compose (v2+)
- Java 21 (for student-service)
- Python 3.7+ (for library-service development)
-
Clone and navigate
git clone https://github.com/enkaypeter/sesc_microservices.git
-
Build Entire Stack
make build
-
Start Infrastructure
make infra
-
Start Application Services
make app
-
Verify
- student-service API: http://localhost:8090/swagger-ui/index.html
- finance-service API: http://localhost:8081
- library-service API: http://localhost:8082
-
Shutdown
make down-v
-
Event-Driven Enhancements:
- Publish
StudentCreatedEvent
andInvoiceCreatedEvent
via RabbitMQ. - Implement subscribers in Finance and Library for consistency.
- Publish
-
Observability & Resilience:
- Expose Prometheus metrics and add Grafana dashboards.
- Enable distributed tracing with OpenTelemetry.
-
CI/CD & Deployment:
- Add GitHub Actions (or equivalent) to build, test, and push Docker images.
-
Developer Experience & Front-End:
- Add a front-end that consumes the Student API.
- Improve local dev with a
Makefile
orbash
script to spin up all services.
This project is part of an MSc Course Assessment and not intended for production use without further enhancements.