Skip to content
SYS–11Case studyAcademicAcademic · ÉTS

LOG430 — Architecture logicielle

Lab series from ÉTS's software-architecture course: a single store-management app is re-architected from one lab to the next. The path runs from a containerized monolith (Docker, CI/CD) to client-server with DAO, CQRS with polyglot persistence (PostgreSQL + Redis), REST then GraphQL APIs, caching and load balancing (Nginx, Locust load tests), observability (Prometheus), then a break-up into microservices behind an API gateway, an isolated payment microservice, an orchestrated saga with distributed tracing (Jaeger), event-driven architecture with Kafka (event sourcing, choreographed saga, Outbox pattern) and finally distributed databases (YugabyteDB / CockroachDB). The capstone, CanTelcoX, consolidates it into 5 DDD microservices (a database per service) behind a high-availability Kong gateway, with Redis caching and Prometheus/Grafana observability.

Role
Developer (mostly solo)
Type
Architecture coursework (ÉTS)
Stack
Python · Docker · Kafka · PostgreSQL
Status
Academic
01

Context

ÉTS software-architecture course: a single store-management app is re-architected from one lab to the next.

  • From a containerized monolith to microservices
  • REST then GraphQL APIs
  • Caching, load balancing, observability
  • Saga, Kafka and distributed databases
02

The journey

Each lab adds a production constraint and the system is re-architected to meet it.

  • DAO · CQRS · DDD · polyglot persistence (PostgreSQL + Redis)
  • API gateway (KrakenD / Kong) · load testing (Locust)
  • Orchestrated saga + distributed tracing (Jaeger)
  • Event sourcing + Outbox pattern (Kafka) · YugabyteDB / CockroachDB
03

Capstone — CanTelcoX

The capstone consolidates it all: 5 DDD microservices, a database per service, behind a high-availability Kong gateway.

12
repos · monolith → microservices
5
DDD microservices (db per service)
REST+GraphQL
+ Kafka · Saga
Grafana
Prometheus observability