Hacker News new | ask | show | jobs
by merb 3746 days ago
Actually what you describe here is mostly why I think that it was stupid to rebuilt otto.de from scratch. microservices are a improvment over a monolith inside a bigger Application with a big team. Microservices are happening caused by team sizes and management overhead, it had nothing to do that a monolith is bad at all. And that's why I dislike all the fancy posts about them, nothing stops you from doing all the same things with a monolith, especially when you have a small team. As your team grows you mostly change to a service oriented architecture and evolve from there. it mostly isn't a good practice to start with a microservice architecture without having a monolith that you need to split (I know there are some but stil.. it's hard to say that the overhead it produces with a "few" people is valueable). Actually a lot inside this article explains what parts were easy, however the hard parts about such systems are mostly not written anywhere near, which is most managing logs, faulty systems, automatic routing, versioning, database migrations if the system has a database, updating servers, service discovery, service load-balancing, service monitoring, edge service router and that are prolly just a few of the dozen things which makes such systems harder.
1 comments

We did not rebuild otto.de from scratch because we wanted a microservice architecture. We had to rebuild otto.de, because the old monolithic shop was not meeting non-functional (and a single functional) requirements anymore. And we had to rebuild it, because the old shop was based on a standard product, so we were unable to simply refactor it. When we started the development, we were looking for an architecture that is meeting our requirements - and we did not chose microservices in the beginning, but self-contained systems (http://scs-architecture.org, https://en.wikipedia.org/wiki/Self-contained_Systems). Microservices were introduced later, when the first SCS became too large again. I think, you should not use microservices, because they are interesting. You should use microservices, when you have problems that are addressed by this architectural style.

I totally agree, that microservice architectures (just like any other kind of distributed system) have a lot of challenges. It is hard to solve the problems, that you mentioned. My article was about the good parts - but I could very well imagine to write a follow-up about all the challenges :-)

--Guido