Hacker News new | ask | show | jobs
by bsiemon 3094 days ago
I disagree. Companies that start with a monolith then face an exceptionally difficult task of 'moving to micro services' because they need that architecture to support team growth. This task amounts to replacing the engine of a running car.

I agree in general the tools are lacking but if you use AWS,GCP, or w/e you get a huge boost on the tooling.

3 comments

You can also have structure and strong separation between different parts of the system inside a monolith.

I see the point of microservices for cases where you want to use different tech stack for one part of system or need special scalability. I don't see the point in going that route to only have separation between components or being able to split work.

If you are afraid that you won't get the monolith architecture right, you should be afraid of the same thing with microservices.

>This task amounts to replacing the engine of a running car.

I hate this phraseology, and IMO it's a telltale sign of a new or inexperienced professional developer (another variation: "replace jet engine while in flight"). All non-greenfield development forbids breaking the existing system in order to make changes. This is a daunting responsibility, but it's inherent and assumed, so only college kids who have never had to maintain a running system before talk about it like it's noteworthy.

If someone needs a microservice architecture to support team growth, it just means they don't know how to manage a team, and have to let every dev or pair of devs have their own little kingdom.

Yes, I can definitely attest to this. For all of the people saying "start with a monolith", having started with a Monolith I can tell you to start with microservices. Even if they all live on the same box, even if they live in the same process, build your software from the start with microservice architecture in mind (eg: understand your boundaries, develop against them - if you can't break a component behind a boundary into a separate process trivially, it's a bad component).
That’s called modular architecture and has nothing to do with microservices.
Microservices encompasses quite a lot, including designing where your module/service boundaries lie. The same ideas exist in many different places (DDD).