Microservices first appeared around the 2000s in large internet companies, who had to economically serve millions of simultaneous users. After 10 years of advances in other fields, such as DevOps and containers, microservices stepped onto the path of broad adoption in the industry.
However, the introduction of microservices into enterprises (B2B systems) was provoked by reasons, different from those that were present in the consumer market (B2C systems). Let’s take a closer look at what makes enterprise microservices different.
Higher development productivity. Making even small changes in a large enterprise system is a long and difficult task. To perform a 5-minute change, developers may need to spend a few days learning the code and fixing unforeseen problems. Furthermore, system releases may cost a test team weeks of work. In contrast, a microservice, by definition, is a small component. The smaller a component, the easier it is to understand, modify, and fix. Because of this, changes are fast, the breaking effect is minimal, and releases are almost instant with automated tests and CI/CD pipelines.
Lower development complexity. When a new developer is added to a team, it may take months for him to become familiar with the entire enterprise system and starts being productive. Learning a microservice takes just a few hours, after which the developer can already start writing code. This makes a huge difference, as companies no longer need to keep large development teams. Once a project has been started, they can bring subcontractors and make them work on microservices, one at a time. Upon project completion, the team can be scaled down to cut redundant costs.
Incremental delivery. Changes in large monolithic systems are complex and slow. In addition to the challenges associated with making the changes themselves, release processes are burdensome, and companies tend to bundle several changes into one big release. This single release can take from weeks to months to finish. Since microservices are completely independent of each other, teams are able to change microservices individually and push each modification into production in a matter of days or even hours.
Mixing technologies. The independent nature of microservices allows mixing various technologies within a single system, which was almost unthinkable in traditional enterprise systems. Before, the entire system would have to be implemented in one programming language, and the data - stored in a single shared database. Today, technologies become obsolete in a matter of years, while renovating a system requires serious rewrites. However, by utilizing a microservice architecture, each microservice can be written in its own programming language and can use its own persistent storage. When new technologies become available, they can be incrementally introduced into the system, one microservice at a time.
The advantages listed above also help enterprises reduce costs, speed up time to market, simplify outsourcing, and innovate faster.
As you can see, higher scalability is not the primary reason, why enterprises are migrating to microservice-based systems. If an enterprise system serves only a few hundred simultaneous users (as most of them usually do), they can still greatly benefit from microservices.
Sergey Seroukhov, Enterprise Innovation Consulting