Reminder: Microservices ate my application - an anti-pattern
You are receiving this email because you subscribed to microservices.io.
Learn about the service collaboration patterns (Saga, API composition, etc) in my online, self-paced bootcamp. It's available for USD $95 - limited time early. Find out more and enroll.
I'm available to help your organization accelerate software delivery: architecture consulting and workshops. Learn more
Microservices adoption anti-pattern: microservices ate my application
It’s been a while since I’ve written about anti-patterns of microservices adoption. These days, however, I often encounter a previously undocumented anti-pattern that I’ve named Microservices ate my application. It describes a situation where technology - in this case the microservice architecture - becomes a scapegoat for the mistakes made by the engineering organization. The anti-pattern’s name is inspired by the English expression The dog ate my homework, which refers to an implausible excuse for failing to complete a homework assignment.
The anti-pattern: microservices ate my architecture
An instance of this anti-pattern looks something like this. An organization struggles to use the microservice architecture pattern to build an application. They encounter numerous persistent problems, including slow development, inconsistent data, poor performance, and low availability. But instead of taking ownership of the decisions that they made, which is the reason for the trainwreck, the organization blames the microservice architecture.
Swarms of microservices don’t attack projects
While it’s easy and convenient to blame the microservice architecture, the reality is that microservices do not travel in swarms attacking innocent projects. The root cause of the train wreck lies elsewhere - specifically in a combination of two problems. The first problem is that organizations sometimes make poor architectural design decisions. The second problem is that organizations often ignore the warning signs that something is amiss. Let’s look at each problem in turn starting with poor architectural decision making.
Problem #1: Poor architectural design decisions => poor architecture
An application’s architecture is the composition of a set of design decisions. The quality of an architecture is, therefore, a reflection of the quality of the architectural design decisions. Poor design decisions often lead to architectural problems - an issue that is especially true when using the microservice architecture pattern. There are numerous design decisions to make, many of which are highly consequential, even small missteps can have far-reaching impacts.
Problem #2: Ignoring signs that something is amiss
The second reason train wreck projects occur is that organizations ignore clear warning signs signaling the need for a course correction. Development projects don’t fail overnight — there are always early indicators that something is going wrong. An organization must be vigilant and act when there are signs that something is amiss. For example, if development is slowing down, it’s essential to investigate why.
Let’s now look at ways to avoid this anti-pattern.
Avoiding the Microservices ate my application anti-pattern
There are four recommended ways to avoid the Microservices ate my application anti-pattern:
- Own your design decisions
- Improve your design decision making process
- Reduce risk by make smaller, safer and reversible changes.
- Track and improve metrics
Let’s look at each recommendation in turn.
Recommendation #1: own your design decisions
The first of three recommendations is for you and your organization to take ownership of your design decisions.
If a decision turns out to be flawed, take responsibility for it — that’s part of the process.
Mistakes are inevitable, but they also present valuable learning opportunities.
Freedom to admit your mistakes, of course, requires a generative culture that encourages learning and growth.
Recommendation #2: improve your design decision making process
The second recommendation is for you and your organization to improve your process for making architectural design decisions. A good way to make better design decisions it is to practice deliberative design. Deliberative design is a 7 step process:
- Understand the context
- Define the problem
- Define the criteria for assessing suitability of a solution
- Find candidate solutions
- Evaluate the trade-offs of each candidate solution
- Pick the best solution
- Document the solution
Examples of critical architectural design decisions that should be made using a deliberative design process include:
- Whether to use a monolith first (usually) or microservice first (sometimes) approach when starting development
- When to refactor a monolith to microservices, e.g. Big decisions: Should you migrate your monolith to microservices?part 1 and part 2
- When to define a new service, e.g. A service should exist to solve a problem
Recommendation #3: make smaller, safer and reversible changes
The third recommendation is to reduce risk by making smaller, safer and reversible changes. You will get feedback from production and users much faster if you make smaller changes. It will also make it much easier to recover from mistakes. For example, an organization should incrementally refactor a monolith to microservices using the Strangler Fig pattern rather than doing a big bang rewrite. For more details, see the series of articles that starts with Microservices rules #10: Make smaller, safer, and reversible changes - part 1/
Recommendation #4: track and improve metrics
The fourth recommendation is for an organization to continuously track and review key metrics (microservices rules #1) including:
- The DORA metrics
- Design-time coupling metrics, e.g. analyze Git histories to identify services that regularly change in lock step and track frequency of breaking changes made to each service’s API
- Team sentiment including the DevEx metrics
These metrics should be regularly reviewed and action taken if there are problems.
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.
Learn more about how I can help
Older messages
Reminder: The problem with tight runtime coupling and how to avoid it
Tuesday, January 14, 2025
You are receiving this email because you subscribed to microservices.io On Wednesday, January 22, 2025 at 6pm, I'll be giving a talk in Melbourne Australia.The talk is: Enabling DevOps and Team
The problem with tight runtime coupling and how to avoid it
Thursday, January 9, 2025
You are receiving this email because you subscribed to microservices.io On Wednesday, January 22, 2025 at 6pm, I'll be giving a talk in Melbourne Australia.The talk is: Enabling DevOps and Team
Reminder: Loose design-time coupling: part of the wiring of a winning organization
Friday, November 15, 2024
You are receiving this email because you subscribed to microservices.io Next week, I'll be teaching a public workshop in Milan. I hope you will enroll. Loose design-time coupling: part of the
Loose design-time coupling: part of the wiring of a winning organization
Tuesday, November 12, 2024
You are receiving this email because you subscribed to microservices.io Next week, I'll be teaching a public workshop in Milan. I hope you will enroll. Loose design-time coupling: part of the
Reducing insider trading in a microservice architecture
Wednesday, November 6, 2024
You are receiving this email because you subscribed to microservices.io In November, I'll be teaching public workshops in Berlin and Milan. I hope you will enroll. My service collaboration patterns
You Might Also Like
Say Goodbye to Type Erasure
Thursday, February 27, 2025
View in browser 🔖 Articles Practical Kotlin: When and How to Use inline reified, noinline, and crossinline Master Kotlin's inline reified functions to tackle type erasure and boost performance!
SRE Weekly Issue #464
Thursday, February 27, 2025
View on sreweekly.com A message from our sponsor, incident.io: For years, on-call has felt more like a burden than a solution. But modern teams are making a change. On Feb 26 at 1 PM EST, hear why—and
Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds, More
Thursday, February 27, 2025
Home | News | How To | Webcasts | Whitepapers | Advertise .NET Insight February 27, 2025 THIS ISSUE SPONSORED BY: ■ Visual Studio Live! Las Vegas: .NET Developer Training Conference ■ VSLive! 4-Day
Re: Tomorrow's Password Class: How to sign up!
Thursday, February 27, 2025
Hi there, Do you reuse passwords? Do you struggle to remember unique passwords across accounts? Have you tried setting up a password manager but found it to be a hassle? You might not realize how
Documenting Event-Driven Architecture with EventCatalog and David Boyne
Thursday, February 27, 2025
If you're wondering on how to document Event-Driven Architecture, or you don't know that you should, I have something for you. We discussed with David Boyne, why data governance practices and
wpmail.me issue#708
Thursday, February 27, 2025
wpMail.me wpmail.me issue#708 - The weekly WordPress newsletter. No spam, no nonsense. - February 27, 2025 Is this email not displaying correctly? View it in your browser. News & Articles Shaping
Hackers stole 1Password logins - here's how
Thursday, February 27, 2025
Amazon AI races ahead; Research agents; Smartwatch trade-in -- ZDNET ZDNET Tech Today - US February 27, 2025 thief stealing passwords Hackers stole this engineer's 1Password database. Could it
New Golang-Based Backdoor Uses Telegram Bot API for Evasive C2 Operations
Thursday, February 27, 2025
THN Daily Updates Newsletter cover ⚡ LIVE WEBINAR ➟ Building Resilient Identity: Reducing Security Debt in 2025 Attacks Evolve, So Can Your Defenses--Learn How to Mitigate Risk and Optimize Identity
Reminder: What developer productivity metrics actually measure
Thursday, February 27, 2025
You are receiving this email because you subscribed to microservices.io. Considering migrating a monolith to microservices? Struggling with the microservice architecture? I can help: architecture
⚡ THN Weekly Recap: Google Secrets Stolen, Windows Hack, New Crypto Scams & More
Thursday, February 27, 2025
From Google espionage to crypto scams, this week's Cyber Recap uncovers it all—read more now ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏