Careeroza
Architecture Overview
The Whole System
This capstone puts every level together. ShopEase is split by business capability; each service owns its data, talks synchronously only when it needs an answer right now, and uses Kafka events for everything else.
React web app Android app
| |
web-bff (BFF, OAuth2 client) mobile-bff
\_______________ ____________/
v
Ingress (TLS, api.shopease.in) -> API Gateway (JWT check, rate limit, routes)
|
+-------------+----------+-----------+--------------+----------------+
v v v v v
product-svc user-svc order-svc inventory-svc payment-svc --> Razorpay
(catalogue) (profile, address) (saga orchestr.) (stock) (payments)
Postgres Postgres Postgres Postgres Postgres
+ Redis | + outbox + outbox + outbox
+ Elastic | \ | /
| +------> Kafka (order-events, inventory-*, payment-*)
| |
+--------------------------------> notification-svc (SMS, email, push)
Platform: Keycloak (auth) | Kubernetes | Prometheus + Grafana | Zipkin/Tempo | Loki | Argo CDTechnology Choices
| Concern | Choice | Learned in |
|---|---|---|
| Service framework | Spring Boot 3.x, Java 21, virtual threads | Spring Boot material |
| Persistence | Spring Data JPA + PostgreSQL, Flyway migrations | Hibernate & JPA material |
| Edge | Spring Cloud Gateway + Kubernetes Ingress | Medium level + this level |
| Discovery and config | Kubernetes Services/DNS, ConfigMaps, Secrets | Containers module |
| Sync calls | RestClient / OpenFeign + Resilience4j | Medium level |
| Async events | Apache Kafka, transactional outbox, idempotent consumers | Medium level + Distributed Data module |
| Distributed transactions | Orchestrated saga in order-service | Distributed Data module |
| Security | Keycloak (OIDC), JWT resource servers, client credentials | Spring Security material + Security module |
| Observability | Micrometer Tracing, Prometheus, Grafana, Loki, structured logs | Observability module |
| Delivery | GitHub Actions, GHCR, Argo CD, Argo Rollouts canary | CI/CD module |