Order platform architecture
Mobile / Web App
HTTPS
POST /api/v1/orders
ORDER PLATFORM
(k8s ns: orders-prod)
API Gateway
JWT AuthFilter
RateLimiter
Router
scope: orders:write
100 req/s per user_id
/api/v1/orders/** -> order
route by path
Order Service (Spring Boot)
Query Service
Controller layer
OrderView
OrderController
OrderValidator
GET /orders/{id}
POST /api/v1/orders
--strict
sku_rules.yml
SearchIndex
Domain layer
q=status:PAID
PricingEngine
Inventory
TaxCalculator
DiscountRules
Checker
region: IN-MH
by user_id
reserve()
Infra layer
OrderRepository
EventPublisher
PaymentClient
JPA -> Oracle
Kafka producer
mTLS, 2s t/o
Data & messaging
Oracle
Kafka
payment-svc
Redis
schema ORDERS
topic orders.v1
external
read model, TTL 5m
Call tree: POST /api/v1/orders
POST /api/v1/orders
OrderController.create(req)
OrderValidator.validate(req)
SkuRules.check(sku)
throws InvalidOrderException
HTTP 400
OrderService.place(cmd)
@Transactional
InventoryChecker.reserve(items)
inventory-svc
(retry x3)
PricingEngine.quote(items)
TaxCalculator.forRegion("IN-MH")
DiscountRules.apply(user_id)
PaymentClient.charge(amount)
payment-svc
on failure: InventoryChecker.release(items)
OrderRepository.save(order)
Oracle ORDERS
EventPublisher.publish(OrderPlaced)
Kafka orders.v1
OrderView.project(event)
(async)