Fetch
PrivateA polyglot microservices food delivery platform, built as a deep dive into distributed transactions, failure isolation, and observability.
// architecture
6 services behind an API gateway · database-per-service PostgreSQL · RabbitMQ Saga with idempotency, DLQs, and circuit breakers · OpenTelemetry traces to Jaeger, metrics to Prometheus/Grafana · Docker and Kubernetes
// overview
Six independently deployable services (auth, users, restaurants, orders, payments, delivery) spanning Node.js/TypeScript and Python/FastAPI, behind an API gateway with database-per-service PostgreSQL. Order placement runs as a Saga over RabbitMQ, every service is traced end to end, and the whole system runs containerised on Kubernetes.
- ·Six independently deployable services behind an API gateway: auth, users, restaurants, orders, payments, delivery.
- ·Polyglot by design. Node.js/TypeScript and Python/FastAPI services interoperating over REST.
- ·Database-per-service PostgreSQL, avoiding shared-database coupling between services.
- ·RS256-signed JWTs verified independently at each service boundary via public key, so no service has to call auth to authenticate a request.
- ·Event-driven order flow over RabbitMQ implementing the Saga pattern for distributed transactions, with idempotency keys and the inbox pattern preventing duplicate processing on redelivery.
- ·Dead letter queues, retry policies, and circuit breakers isolate failures instead of letting them cascade.
- ·Instrumented end to end with OpenTelemetry, exporting traces to Jaeger and metrics to Prometheus and Grafana, with request IDs propagated through structured logs across every service.
- ·Containerised with Docker and orchestrated on Kubernetes, using Redis for caching and idempotency state.
Architecture diagram
coming soon
Demo walkthrough
coming soon