3 ms·
You have no idea what you're talking about. Monitoring and logging is just as important with a monolith, how else are you gonna notice when something is going w
by tsss 6y ago
You have no idea what you're talking about. Monitoring and logging is just as important with a monolith, how else are you gonna notice when something is going wrong? In fact it is much more likely that your monolith will go down and lead to a significant outage because the monolith is bigger and thus has more failure points. Furthermore, a monolith that crashes will take _everything_ else with it whereas a microservice that is unavailable only impacts a part of your business. You can do some disaster recovery in your monolith to a certain degree but you will only be reimplementing things that K8S can already do.
> You will probably have one or two services that when they go down, your entire company is down
If you have microservices like that then your macro architecture is bad because one of the key points of an SOA is to limit the impact of failures. Probably you are using a lot of synchronous communication like REST because it was "easier" and now you have to pay the price. You chose consistency (which can be a valid choice) and now you complain about lack of availability when any undergrad knows you can not possibly have both (at a scale that requires partitioning). Using synchronous communication everywhere between microservices leads to a "distributed monolith" where you have to pay most of the costs of a SOA but get few of the benefits.
The one correct thing you said is that a microservice architecture is indeed a huge investment that requires sophisticated devops processes in order not to drown in operational tasks. Microservices are a good choice when you need to scale either in amount of users or developers beyond the capabilities of a monolith (i.e. you need an application that is partition tolerant). At that point you can chose between consistency + easier development or availability. No matter what choice you make, it will be painful but it can't be avoided.