Who am I? ozay_duman ozayduman ozayduman 12 years of experience Software Architect 4 years on microservices development & Cloud Native Applications
Centralised management of your services Order Service Payment Service Delivery Service Notification Service Accounting Service centralized architecture == single point of failure
How to organize teams to build a scalable system? Order Team Payment Team Delivery Team Order Service Payment Service Delivery Service Production CI/CD Pipeline
But there is a price to pay ! Complexity of developing a Distributed System Transaction Management Eventual Consistency Complexity of Deployment & Operating Network Latency Complexity of Testing Requires Cultural Change
Broker Based Messaging Order Service Payment Service Delivery Service Notification Service T O P I C Partition Partition Partition Producer Consumer Consumer Consumer • Message Ordering • Delivery Guarantees • Scalability • Persistence • Durability • Duplicate Message Handling
Transaction Log Mining (Tailing) Order Service T O P I C Partition Partition Partition Producer Transaction Log Event Table Transaction Log Miner Postgres WAL Debezium LinkedIn Databus Database
Sagas – orchestration based Inventory Service Delivery Service Payment Service REST API Message Broker Inventory Service Request Channel CreateOrderSaga Reply Channel Payment Service Request Channel Delivery Service Request Channel Create Order Saga Orchestrator Order Service Command Reply
Sagas – choreography based Order Service Inventory Service Delivery Service Payment Service REST API Message Broker Order Events Inventory Events Payment Events Delivery Events Publish Subscribe
Service Discovery Client Service Inventory Service Delivery Service Payment Service REST API REST API REST API 10.150.0.41:8080 10.90.0.23:7519 10.70.2.71:3333 dynamically changed dynamically assigned how to load balance?
Service Discovery-Self Registration Payment Service REST API 10.90.0.23:7519 register(‘payment’,10.90.0.23:7519); heartbeat(); unregister(); Service Registry @EnableEurekaClient
Service Discovery-Third Party Registration Payment Service REST API 10.90.0.23:7519 register(‘payment’,10.90.0.23:7519); heartbeat(); unregister(); Service Registry Registrator Health Check
Service Mesh REST API Circuit Breaker Service Discovery Load Balancing Security Order Service Distributed Tracing Traffic Routing Sidecar Proxy Deployment Infrastructure