Microservices rules: what good looks like - July 2024 edition
microservice architecture architecting team topologies software delivery metrics microservices rulesYesterday, I gave this presentation at a company’s internal meetup. It’s the latest version of my Microservices Rules talk. These 11 rules are a great checklist that engineering leaders can use to assess the state of their organization, its delivery practices and its application’s architecture.
About the rules
As I previously described:
The microservice architecture has become increasingly popular over the past decade. Its key benefits include significantly improving the developer experience and accelerating software delivery. Sadly, however, microservices have often been widely misunderstood and used inappropriately. As a result, many organizations have struggled to benefit from their adoption. I’ve had numerous conversations where developers have complained that their new microservices-based applications are difficult to change.
In this presentation, I describe 11 development and architecture rules (a.k.a. best practices) that should prevent an organization from making a mess of its microservice architecture. I say should because given semantic diffusion and incredible ability of many organizations to misinterpret and misapply rules, there are no guarantees. However, I believe that if an organization follows these rules when adopting microservices, it will increase their chance of success.
The July 2024 version of the rules
Here’s the current list of rules:
- Practice continuous delivery/deployment
- Implement fast, automated deployment pipelines
- Apply Team Topologies: organizing for fast flow (was: Organize into small, cross-functional, loosely coupled teams)
- Provide a great developer experience (DevEx)
- Use a deliberative design process
- Design independently deployable services
- Design loosely coupled services
- Design testable services
- Develop observable services
- Big/risky change => smaller/safer and (ideally easily) reversible changes (was: Incrementally migrate from a monolith to microservices)
- Track and improve software metrics and KPIs
The motivations for the two changes are as follows:
- Rule #3 - It’s best to simply use Team Topologies as the guide for organizing teams for fast flow.
- Rule #10 - I generalized this rule since there’s a tendency for organizations to make big, risky changes in all kinds of situations, not just when migrating from a monolith to microservices. An organization might, for example, spend months reimplementing a subsystem and then spend a stress filled weekend migrating all users to that new subsystem. A better approach is to incrementally develop the new subsystem and then incrementally migrate users to it.
Slides
Speaking at your company
I’d be delighted to deliver this talk at your company. See here for more details.
Need help with accelerating software delivery?
I’m available to help your organization improve agility and competitiveness through better software architecture: training workshops, architecture reviews, etc.