1

Out of the Monolith, Into Microservices - DeveloperMarch · 2019-05-17 · circuit-breaker { max-failures = 5 call-timeout = 10 seconds reset-timeout = 10 seconds }

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Out of the Monolith, Into Microservices

Why Microservices?

Scalability Fault isolation

Localized Complexity Future proofed

Use case

Microservices Monolith

Microservices

What makes a Good Service?

Bounded Contexts Shared DB

Bounded Context1

Bounded Context2

Bounded Context3

Bounded Context4

Domain

Bounded Context Microservice

Integration

Sync vs Async

Orchestration vs Choreography

Smart Endpoints & Dumb pipelines

Splitting the Monolith

Service 1 : Java REST services, Raptor framework - Spring Boot Service 2 : Reactive services, Squbs framework – Actor Model, Akka Streams Service 3, 4 : Java Daemon, Raptor framework – Spring Boot Service 5 : Java Batch, Raptor framework – Spring Batch Few other available options : Rx Java, Graph QL, Node.js, Elastic search, No SQLs Hadoop – pig scripts, AMQ, YAM, Kafka, C++

Service2 Reactive

Service3 Daemon

Service4 Daemon

Service1 REST

Service5 Batch

Queue 2

Queue 1

1 2 3

4

5

6

7

8

9

Reactive Microservices

Deployment

Continuous Integration

Deployment

Continuous Delivery

Continuous Deployment

Monitoring

Dev - Ops

Learnings

Macro/Micro/Nano Contracts Correlation IDs Testing

Performance

Timeouts Bulk heads Circuit breakers

circuit-breaker { max-failures = 5 call-timeout = 10 seconds reset-timeout = 10 seconds }

downstreamservice { type = squbs.httpclient akka.http.host-connection-pool { min-connections = 5 max-connections = 30 } }