I had an interesting hour long phone interview with the lead engineer at a startup that apparently went through a big crash, with major bad press, where almost everyone left. But now they're back for incarnation #2. All the C-level people are new, but this engineer has been around a while. So yeah - lots of dysfunction - which is a concern.
They have a node app that sat there on node .10.x for 5 years w/o updating node or any packages. He just recently updated it. But they're calling it a "monolith" and they want to break it into microservices. I'd be coming in to help build out the microservice platform and making a lot of decisions.
Fortunately I have a lot of experience in that area. Unfortunately all my experience tells me that unless you're Netflix - you're probably better off with a well-written monolith or a few smaller apps.
Just a few of the problems I've seen:
- You gotta have full-blown DevOps out the gate. Figuring out CI/CD from scratch as you build out microservices leads to a huge mess.
- You always need some level of app-level governance across microservices - which to some degree turns your microservices back into a big app.
- Versioning and deprecation are not trivial problems and require coordination with clients.
- Shared library vs. microservice generator vs. let devs wing it is an ongoing tug-of-war with downsides to each approach.
- Reporting and logging are exponentially harder.
- Allowing any microservice to talk to any other microservice can get out of hand and quickly lead to mistakes that can't be undone - like fixing a malformed end-point. You can add something like a service bus - where at least you can fix things in a global place. But that adds a ton more complexity and it's own issues of course.
- Each microservice getting it's own cordoned-off database leads to all kinds of contortions and extra chattiness. Sharing a DB is supposed to be an anti-pattern.
These are just a few off the top of my head. Basically I see no way that "Hey, we're still figuring out a lot of things as we go, but we know we want microservices" ends well.
Do companies generally still think microservices are the way to go, or are they kind of coming to the same conclusions?
I'll laugh if Netflix comes out with a "Why we are sunsetting our microservices and going back to a monolith" blog post in a few years.
Last edited by suzzer99; 07-15-2018 at 10:10 PM.