Skip to content

Instantly share code, notes, and snippets.

@kevinsimper
Created January 21, 2015 12:28
Show Gist options
  • Save kevinsimper/9a8666cc68fcbb6b05e9 to your computer and use it in GitHub Desktop.
Save kevinsimper/9a8666cc68fcbb6b05e9 to your computer and use it in GitHub Desktop.
Monolith
You talked about the place you worked that they wanted to
have a micro service architecture, but they instead ended
up with a split up monolith app because they were all
dependent on each other.
Didn't they have messages queues, and wouldn't that make
it a microservice?
What is the principle for not ending up with a split up monolith?
@mrmrcoleman
Copy link

Hey Kevin,

The principle for not having a split monolith is that parts of the system can be replaced without affecting the user experience. The whole idea behind microservice architectures is agility and resilience at scale.

Agility is achieved by decoupling all the bits, or microservices. With a monolithic application the Mean Redeploy Impact (I'm calling this MRI because it amuses me) is always 100%, because we have to replace everything. We also have to do clever stuff to achieve zero-downtime deployments.

With a microservices architecture we can replace smaller parts of the system on the fly, which give us the opportunity to reduce our MRI to below 100%, which is a good thing.

So if you split your monolithic application into 20 small services that are all very tightly coupled, you probably still have an MRI close to 100%, which is not the idea.

Does that make any sense? I woke up at 4am.

Mark

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment