and maintained by a single, sometimes large, team • Built and deployed as a single unit • May be deployed frequently or infrequently Characteristics of a monolith
and maintained by a single, sometimes large, team • Built and deployed as a single unit • May be deployed frequently or infrequently • Moderate- to high-risk deployments Characteristics of a monolith
and maintained by a single, usually small team • Independently evolvable • Autonomously deployable • Governs its own state Characteristics of a microservice
and maintained by a single, usually small team • Independently evolvable • Autonomously deployable • Governs its own state • Incorporates resiliency patterns Characteristics of a microservice
and maintained by a single, usually small team • Independently evolvable • Autonomously deployable • Governs its own state • Incorporates resiliency patterns • Encapsulates a single domain model Characteristics of a microservice
single repository • Owned and maintained by a single, usually small team • Independently evolvable • Autonomously deployable • Governs its own state • Incorporates resiliency patterns • Encapsulates a single domain model • May be deployed very frequently
single repository • Owned and maintained by a single, usually small team • Independently evolvable • Autonomously deployable • Governs its own state • Incorporates resiliency patterns • Encapsulates a single domain model • May be deployed very frequently • Lower-risk deployments
• These teams must collaborate very closely to avoid deadlock • Microservices must adopt things like automated service discovery, circuit breaker patterns, etc., to automate as much of the coordination as possible Implications of adopting microservices
• These teams must collaborate very closely to avoid deadlock • Microservices must adopt things like automated service discovery, circuit breaker patterns, etc., to automate as much of the coordination as possible • You need a deployment platform that supports your teams in working like this Implications of adopting microservices
independent, autonomous, empowered team • These teams must collaborate very closely to avoid deadlock • Microservices must adopt things like automated service discovery, circuit breaker patterns, etc., to automate as much of the coordination as possible • You need a deployment platform that supports your teams in working like this • If microservice boundaries aren’t aligned with the change dimensions of the business, you’ll realize little (maybe negative) benefit
independent, autonomous, empowered team • These teams must collaborate very closely to avoid deadlock • Microservices must adopt things like automated service discovery, circuit breaker patterns, etc., to automate as much of the coordination as possible • You need a deployment platform that supports your teams in working like this • If microservice boundaries aren’t aligned with the change dimensions of the business, you’ll realize little (maybe negative) benefit • If you don’t get all of this right, it can be way worse than a monolith
• Identify and expose core business domains • Identify bounded contexts, aggregates, and commands • Identify risks and potential trouble spots Existing monolith to microservices
• Identify and expose core business domains • Identify bounded contexts, aggregates, and commands • Identify risks and potential trouble spots • A obvious starting point usually emerges quickly Existing monolith to microservices
pulling on some of those threads • Google “Should that be a Microservice?” and find Pivotal’s blog series • Read Domain-Driven Design Distilled, by Vaughn Vernon • Watch this video: http://bit.ly/dburkes-stack2018 • Try these analysis techniques on one of your existing monolithic apps! Next steps
of a monolithic application that we are building • Implement the contexts separately, enforcing the boundaries, but assemble it all into a single monolithic application for deployment Towards better monoliths
of a monolithic application that we are building • Implement the contexts separately, enforcing the boundaries, but assemble it all into a single monolithic application for deployment • The quick-start and conceptual simplicity of a monolith, with a clear path to extracting services when the time is right to do so Towards better monoliths