Microservices architecture disaster

Click For Summary

Discussion Overview

The discussion revolves around the challenges and considerations involved in transitioning from a monolithic architecture to a microservices architecture. Participants explore the implications of such a shift, including the potential benefits and drawbacks, as well as the motivations behind the desire to implement microservices.

Discussion Character

  • Debate/contested
  • Technical explanation
  • Conceptual clarification

Main Points Raised

  • One participant argues that creating microservices from a well-functioning monolith may lead to unnecessary complexity and overhead, suggesting that microservices should only be pursued if a complete rearchitecture is intended.
  • Another participant questions the rationale for changing a working system, proposing that issues such as excessive maintenance, security, and debugging capabilities could justify the transition to microservices.
  • Some participants highlight that breaking down a monolith into microservices allows for individual components to be scaled independently and updated without affecting the entire system.
  • There is a discussion about the resilience of microservices, with some noting that they can run on different machines, potentially reducing the risk of catastrophic failure compared to a monolithic architecture.
  • Concerns are raised about the assumption that transitioning to microservices can be done without adequate planning, testing, and debugging, indicating a need for careful consideration of the change process.

Areas of Agreement / Disagreement

Participants express differing views on the necessity and benefits of transitioning to microservices from a monolithic architecture. While some see clear advantages, others question the motivations and practicality of such a change, indicating that the discussion remains unresolved.

Contextual Notes

Participants acknowledge that the discussion involves various assumptions about the current state of the monolith and the specific business requirements driving the desire for change. There is also recognition that the implications of microservices can vary significantly based on the context of the application.

SlurrerOfSpeech
Messages
141
Reaction score
11
Let me describe the problem I see as an engineer when a business wants to create microservices out of its "monolith" (a term used derisively to describe an existing service that works quite well).

You have X that you want to divide into A, B, C, or maybe A, B, C, D, E. So you want to create 3 or 5 distinct responsibilities from X.

Services are not like classes. If X is designed properly, it might have 1,000 classes each with a single responsibility. But it would be incredibly wasteful to 1,000 services. Creating a service requires a lot of overhead comparing to creating a class (as simple as "right-click + new file" in an IDE). You have to create APIs, contracts, secure access keys, deployment scrips, etc. for each of the 1,000 services.

So, the couple services A, B, C you create are at best buckets that hold different code from X. What exact problem is being solved by taking 1 thing and slicing it into 3 things that are 1/3 the size? You just create a distributed monolith. X still exists.

Here is the point I am trying to make: You should only do this microservices thing if you are rearchitecting X. That means you are creating a new platform that accomplishes the same thing, and you might need to get rid of old business entities, old data flow, old concepts. There is no value in fulfilling a request like "We want our same platform but as microservices."

[/rant]
 
Technology news on Phys.org
SlurrerOfSpeech said:
Let me describe the problem I see as an engineer when a business wants to create microservices out of its "monolith" (a term used derisively to describe an existing service that works quite well).
First question would be: if it's working quite well, why fix it if it ain't broke?

There could be a few answers to this:
  1. It's broke.
  2. It requires excessive maintenance, and possibly downtime, to fix a small problem in a big application. The entire thing needs to be re-rested.
  3. Smaller services tend to be more secure. It is easier to prevent intrusion of a bunch of small rooms than to prevent intrusion of a large factory floor.
  4. Smaller services are far easier to debug.
  5. They want to leverage the micro-services with functionality not directly part of the main app.
etc.

Those are just off the top of my head but there's many more reasons. You can't apply an architectural principle in a vacuum, without first getting a clear understanding of the business requirements.
 
There is value though rearchitecting the monolith into component ms parts means individual parts can be spun up as copies to meet demand. It means individual ms parts can be replaced with newer designs or updated software.

Here’s a talk on ms from YouTube

 
True, That's another advantage: micro-services don't all have to run on the same machine. You avoid catastrophic failure.
 
DaveC426913 said:
True, That's another advantage: micro-services don't all have to run on the same machine. You avoid catastrophic failure.

Huh? You can have N running instances of a monolithic service.
 
SlurrerOfSpeech said:
Huh? You can have N running instances of a monolithic service.
Yes. But only one machine per monolith. So if it fails, the whole thing fails, instead of subcomponents failing one-at-a-time. Sure, you can have redundancy and failovers, but with smaller, distributed services, only smaller, distributed things fail.

I realize this is a bit of an over-simplification of major applications, but still my question remains: what is the business rationale for the change? You haven't told us why they want to do this.
 
SlurrerOfSpeech said:
Let me describe the problem I see as an engineer when a business wants to create microservices out of its "monolith"
By my experience this kind of change is often related to the assumption that a redo along the line of the actual buzzword can be done without much time assigned to planning, testing and debugging.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
Replies
4
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
Replies
6
Views
3K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 25 ·
Replies
25
Views
3K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 9 ·
Replies
9
Views
2K