Microservice architecture is constantly gaining popularity. RST Software Masters is one of few Polish software houses that can boast about having practical experience in implementing architectures based on microservices. We want to share insights from our approach to designing IT systems in the context of multiple years of experience with migrating a monolithic system to one with multiple coexisting microservices.
Naturally, microservices are no panacea – however, in terms of business, they can provide many advantages. These include the possibility to have numerous programming teams working on system development at the same time, which allows for simultaneous development in multiple fields. It's worth remembering that microservices facilitate control over system upgrades, if only by wider automated testing of code.
Also, the option to build separate microservices using various technologies is very valuable. Every microservice built using a different technology? Monolith wouldn't allow that. However, within a microservice architecture a given technology – if better suited – can be individually used with a single feature or type of service that it needs to support.
Keeping control over a monolith that has grown throughout the years is hard despite keeping extensive documentation on team management and knowledge distribution levels – simply said, within a team of several dozen of developers building a complex monolith, it would be hard to find a single person that would still have a good grasp of the construction of the system after a month or two of work.