The 5C Model for Software Design

Learn how to create a sustainable Software Architecture!

I do believe that SOLID principles are outdated and overrated. They were developed in the last century when OOP was popular. They became famous because they can be abbreviated as "SOLID". This is why I do believe that we need something new and more modern. Despite this I agree with every 5 of the SOLID-principles, it is just so that I do not believe that they are more important than other things when writing high-quality code.
The major problem with "microservices" is, that as a architectural-style it is totally unclear and not very well defined. If you really focus on the smallest possible boundary when creating a distributed system you will end up having maximized all the troubles with distributed systems. And there are actually a lot of challenges to solve when building distributed systems. So why should you do this? With 5C Design Model you can just build a hierarchical structure of your system. You can still distribute, but you will do that on the level of abstraction where it makes most sense. This is where the advantages of the distributed system outweigh the disadvantages.
No, because distribution sets the structure forever. The ideal structure is usually a decomposition of the functional requirements. If the requirements change, you will also have to change the modular structure of your software. If that happens in a distributed system, there will mostly not be a refactoring, as restructuring the code is hard for a distributed system. So you should rather stop erosion, but keep refactoring an easy task at the same time. You do this by using a tool, that checks if the structure of your software still follows the conceptual idea. Possible Tools could be Teamscale or Sonargraph.

Suggestions, opinions and inquiries about the 5C Design Model can be posted here. I will do my best to answer as soon as possible.