avatarRico Fritzsche

Summary

Microservices, while touted as a revolutionary software architecture, often fall short in delivering their promised benefits, especially in large enterprises due to cultural, structural, and financial factors.

Abstract

The article discusses the author's journey with microservices, from initial optimism to a more critical perspective. While microservices promise a utopian vision of independent teams delivering value rapidly, the real world often presents different challenges. These include the substantial investment in infrastructure, misunderstood concepts of DevOps culture, and the centralization tendencies of larger organizations, which can stifle the autonomy and independence that microservices are supposed to bring. The article also discusses Conway's Law, suggesting that the structure of a software system will reflect the social structure of the organization that produced it, making microservices a poor fit for large enterprises. The author concludes by emphasizing the need for organizations to respect their inherent social structures before adopting microservices, acknowledging that there are no silver bullets in software architecture.

Bullet points

  • The author initially championed microservices, speaking at conferences and guiding clients, but now holds a more critical perspective.
  • The dream sold by microservices is a utopian vision of independent teams delivering value rapidly, but the real world presents different challenges.
  • Microservices are not a one-size-fits-all solution and serve as the perfect solution very seldom.
  • The adoption of microservices necessitates a substantial investment in infrastructure, which companies often underestimate.
  • The DevOps culture is often misunderstood and misapplied in enterprises, creating separate "DevOps" teams rather than integrating DevOps into each development team.
  • Larger organizations tend to incline towards centralization, which can override the autonomy and independence that microservices are supposed to bring.
  • Conway's Law suggests that the structure of a software system will reflect the social structure of the organization that produced it, making microservices a poor fit for large enterprises.
  • The author concludes that there are no silver bullets in software architecture, and the best solutions are often found through careful consideration, not blind adherence.

Microservices: The Million-Dollar Mistake Your Company is Making

In the middle of the last decade, as I was elbow-deep in code, tinkering with concepts like service discovery, a buzzword began to echo through the halls of tech companies worldwide — “microservices”. I was there at the dawn, championing the concept, speaking at conferences, and guiding clients on the fascinating journey towards this promising architecture. At that time, Kubernetes was barely a whisper on the wind. However, my perspective today in 2023 differs drastically from the optimism of those initial years.

Photo by Marvin Meyer on Unsplash

The dream sold by the microservices architecture was enticing — a utopian vision of independent teams, unhindered by technology or deployment constraints, delivering value rapidly and independently. But the real world, as it tends to do, had different plans.

Microservices are not a one-size-fits-all solution. Far from it. I’ve observed that they serve as the perfect solution very seldom. This statement might jar with the prevailing narrative, but let’s venture deeper to understand why.

Firstly, the adoption of microservices necessitates a substantial investment in infrastructure. Companies often underestimate the toll this takes, not just financially, but also in terms of time and human resources. To maintain the delicate balance that a microservices architecture demands, one must pour immense resources into developing and sustaining a sophisticated DevOps setup.

This leads me to another often misunderstood concept — the DevOps culture. In an ideal world, DevOps is more than just a fancy term; it represents a cultural shift where developers and operations collaborate seamlessly. However, in many enterprises I’ve observed, they’re doing it wrong. They create separate “DevOps” squads or teams to manage Kubernetes clusters, centralized CI/CD pipelines, infrastructure, and automation. The outcome? Developers find themselves working in a ready-to-use yet restrictive environment, far from the promised autonomy of the microservices approach.

In this configuration, the gap between developers and operations persists, albeit disguised under a trendy name. The supposed transformation from an operations unit to a DevOps team appears more cosmetic than substantive. Despite the inclusion of Infrastructure as Code (IaC), we’re still seeing the same siloed pattern with a different label.

In the true spirit of microservices, DevOps should not be seen as another team, but rather a role within each development team. This approach provides the needed autonomy, encourages rapid decision-making, and ultimately brings us closer to the original ethos of the microservices architecture.

However, the cost is not the only issue. Larger organizations tend to incline towards centralization. The drive for standardization and control tends to override the autonomy and independence that microservices are supposed to bring. Decision-makers enforce strict regulations on tech stacks, deployment pipelines, and other processes, creating an antithetical environment where the spirit of microservices suffocates.

As a result, the purported benefits of technology independence and faster deployments remain untapped. You might ask, “why is this the case?” To answer that, we need to understand that the underlying issues stem from a deep-rooted corporate culture that is averse to the decentralization of decision-making. And culture, as any seasoned executive will tell you, is not something you can change with a new software architecture.

Now, don’t get me wrong. I’m not suggesting that microservices are inherently flawed. Far from it. I’ve seen them work wonders in organizations where conditions are suitable. Start-ups and smaller companies with less bureaucratic inertia, for example, can truly harness the benefits of a microservices architecture.

However, it’s crucial to recognize that implementing microservices isn’t just about breaking down a monolith application into smaller, manageable services. It’s about understanding the readiness of your organization, the flexibility of your infrastructure, and the willingness of your people to adapt.

So, here’s my appeal to all the decision-makers out there. Before you rush to ride the wave of the latest tech trend, pause. Ask yourself, “Does this really make sense for us?” The answer could save you countless hours and a fortune in resources.

Big companies, characterized by their centralized structure and hierarchical culture, often attempt to embrace the microservices approach, hoping to harvest its touted benefits. However, in many cases, this is a path fraught with obstacles. Why? The answer lies in a principle known as Conway’s Law.

Named after computer programmer Melvin Conway, this law suggests that the structure of a software system will reflect the social structure of the organization that produced it. Now, if you take a moment to visualize the organizational structure of a typical large enterprise, you’re likely to picture an intricate web of interconnected departments and teams, governed by a top-down hierarchy.

So, when such an organization tries to implement microservices — an architectural style that thrives on decentralized, small, cross-functional teams — it’s like trying to fit a square peg into a round hole. The centralization and tightly-coupled interdependencies that typify large enterprises run contrary to the philosophy of microservices.

Hence, these organizations find themselves in a quagmire, struggling to reap the benefits of microservices, and in the process, draining substantial resources. Remember, the problem isn’t with the tool, but rather with forcing the tool into an environment it’s not suited for.

In summary, it’s essential for organizations to acknowledge and respect their inherent social structures before jumping on the microservices bandwagon. This approach requires more than just a technological shift; it’s also about a deep-seated cultural and structural transformation.

Remember, technology is a tool that serves your organization — not the other way around. Microservices, or any other architectural style, should adapt to your business’s needs, culture, and long-term vision, not force you to adapt to it.

After nearly a decade on the frontline of microservices implementation, I’ve learned that there are no silver bullets in software architecture. Each choice comes with its trade-offs, and the shiny new solution on the market isn’t always the best fit for your unique scenario. As is often the case, the most effective solution may be a balanced approach, embracing the lessons learned from both monoliths and microservices.

In conclusion, microservices have their place in the software development ecosystem, but they’re not the universal panacea they’re often made out to be. It’s high time we acknowledged that the real world of microservices implementation is far from the utopian vision sold to us, and it’s okay to be critical and question the hype. After all, the best solutions are often found through careful consideration, not blind adherence.

Microservices
Enterprise Software
Software Architecture
Software Development
Coding
Recommended from ReadMedium