Hacker News new | ask | show | jobs
by Cthulhu_ 1887 days ago
Microservice is a misnomer; it should have a responsibility, but that could be 10 lines of code or 10 million.

Anyway, it sounds like you have a distributed monolith. If you cannot maintain and deploy a microservice independently, it should not be a microservice.

2 comments

I don't build microservices anymore. All of the reasons listed in this thread tend to cause bottlnecks. I aim for domain services. Define your domains, and build a program to service it.
That's microservices. Microservices handle a bounded domain. At least in traditional advice for splitting microservices. The microservice provide an api for that domain.
Doesn't a "service" handle a domain?
Putting micro in front of service was a bad idea. Lots of people have the wrong idea because of that.
No, that's SOA. Microservices are almost always described as quite small.
The "Building Microservices" book, which used to be the goto book for microservices suggests on page 31 to page 38 that bounded domains are a good model for microservices.

The main difference between SOA and microservices is dump pipes vs smart pipes. Not service size. As explained in that book.

Most people trying to implement microservices seem to have not read much about them outside of blogs.

Quoting some book does not change the fact that most people understand SOA as being team or domain-bound and microservices as being much smaller.
I'm assuming most people adopting micro-services weren't even around when SOA was a big thing.

People not reading the literature then implementing it badly isn't problem with the idea. In the same way that not studying calculus then doing badly isn't a problem of calculus.

Most of these issues around microservices like how to split them so they don't cause issues, are known and solved problems. Just people have not read the literature other than the odd "blog". Like don't do microservices, for your first iteration. Backwards compaitble apis, and understand your bounded contexts from your first iteration before you try.

They end up creating chatty nano services with tons of version fixed cross dependencies.

Interesting because I always thought SOA was just a slightly older term for microservices.
> Anyway, it sounds like you have a distributed monolith. If you cannot maintain and deploy a microservice independently, it should not be a microservice.

We can maintain and deploy them independently, but it was annoying to try to track which version was deployed where and having to check it out independently, etc.

The overhead was incredibly high. So we plopped them all into a single monorepo as sub projects. We can still update each one individually but we know what is live on the website is what is in the head of that branch.

As someone whose last website was a monolith (Clara.io), we do feel we are getting the benefits of micro services with little of their downsides now. It is like night and day.

It may be we have a lot of micro services for the size of our team - 20+ micro services and a team size of around 12.