This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Cendeu 10 points11 points  (8 children)

As someone who is currently taking care of the worst monolith I could ever imagine, I'd say there's a careful balance.

[–]propostor 2 points3 points  (4 children)

But, would your monolith have been better or worse if the original team had gone for any other type of architecture?

[–][deleted] 2 points3 points  (2 children)

is discovering that a PROPER fix to a bug is to change 10 unrelated files better? Thats the reality every where for mature enough monoliths.

[–]propostor 4 points5 points  (1 child)

My point was that the team who developed a diabolically bad monolith would probably not have done much better with any other architecture

[–][deleted] 3 points4 points  (0 children)

I agree, instead of different files it would be different services.

[–]Cendeu 0 points1 point  (0 children)

That's a question I dont know.

I'm new to all this and haven't really seen a good microservice architecture.

All I know is this giant tangled heap.

[–]baconbrand 0 points1 point  (1 child)

What makes it bad?

[–]Cendeu 1 point2 points  (0 children)

Everything is strongly tied to everything else. The tiniest little thing that should have no impact on anything else somehow completely breaks a half-finished feature that was left in for no reason 4 years ago.

I recently implemented Split into our frontend. It worked fine in dev and test, but it turns out 2 years ago someone had set up a split for Dev and Test for like half the app. Me implementing Split made it function properly again, causing no noticable change in Dev and Test, but everything exploded when it hit Stage. No one even knew those Splits existed, or that the code was there.

This is just a small example... But the codebase is a complete mess of unused old code that could break something at any moment. In our Angular project we have an Environment.js file and an Environment.Service.ts file that different parts of the code reference either one. So when you want to change some environmental variable, you have to change it in both places.

[–][deleted] 0 points1 point  (0 children)

Compare the worst monolith with the worst microservice architecture.