Ordered
Rozproszony system e-commerce wzorowany na Allegro
Ordered to backend marketplace'u e-commerce zbudowany od podstaw jako architektura mikroserwisowa. Zaczął jako monolit - z płatnościami przez Stripe, koszykiem, adresami dostawy i pełną obserwowalnością - który świadomie rozłożyłem na sześć niezależnych usług metodą Strangler Fig, żeby przećwiczyć realne problemy systemów rozproszonych: spójność danych bez transakcji rozproszonych, service discovery, centralną konfigurację i obserwowalność na poziomie całego systemu, nie pojedynczej aplikacji.
Architektura systemu Ordered - sześć usług za jednym gatewayem.
Co warto wiedzieć:
- Sześć niezależnych usług domenowych (zamówienia, produkty, użytkownicy, engagement) plus Eureka (service discovery) i API Gateway
- Centralna konfiguracja przez Spring Cloud Config Server (profil natywny), z sekretem JWT trzymanym w jednym miejscu
- Kafka w trybie KRaft z wzorcem transactional outbox dla zdarzeń typu „zamówienie dostarczone”
- Stateless uwierzytelnianie JWT z niestandardowymi claimami (userId, role), odczytywanymi na gatewayu i w usługach
- Wspólna biblioteka ordered-commons centralizująca uwierzytelnianie, obsługę wyjątków i odpowiedzi stronicowane
- Pełny stack obserwowalności: Prometheus, Grafana (auto-provisionowany dashboard), Jaeger 2.x
- Load testy w Gatlingu (symulacje ścieżki użytkownika i obciążenia katalogu produktów) - 100% sukcesu, p95 ~779ms / ~207ms
- Dokumentacja API przez springdoc-openapi ze zagregowanym Swagger UI na poziomie gatewaya
stack
- Java 21
- Spring Boot 4.1
- Spring Cloud (Eureka, Gateway, Config Server)
- Kafka
- PostgreSQL
- MongoDB
- Redis
- Docker
- Gatling
- GitHub Actions