Microservices Design
At most companies, large and small, there is one persistent problem; lack of documentation of any kind.
This was literally the case when I joined a big US bank to work on their Capital Markets Analysis publishing system. The core system was used by about $4-5K global employees who lived and died by the system availability, hanging on by the goodwill of the "regional servers”, metaphorically speaking.
When I joined there was not even a single page of support documentation, nothing, nada. We had to create everything from scratch. While reverse-engineering the system from its logs and code over the next 6 months I was able to sketch out the basic physical and logical architecture of the system.
It turned out it was so convoluted that it almost appeared that it was so on purpose. At least that was my initial reaction, later, I realized the pseudo-design was not on-purpose there simply was no design. This is what happens when you have a group of developers design a full-scale system ad-hoc without any oversight.
Obviously they all bailed out before this was discovered so there was no “warranty” to be claimed by the users.
Actually, I was hired as the warranty underwriter, so to speak. My task was to provide the warranty, i.e., fix whatever needed fixing.
My solution, to break the monolith into microservices, is documented in this writeup. It gives the clean, short, easy-to-follow story of how this was done.
Monolith to Microservices Phased Journey