Microservices is the new buzzword that is growing louder in the last few years. Everyone wants to build their applications using microservices even if that architecture might not be necessary for every app (more on that later). In fact, microservices is a fairly new architecture that was first ushered onto the world stage at a 2011 software architecture convention to describe experimental work that had started to make software systems more scalable and efficient.
This article gives you a peek into what microservices are , the benefits of microservices and more importantly, when to not use them.
What are microservices?
In the history of software evolution, there are two key moments that led to the new microservices architecture. The first is the advancement of cloud technology and the second was the growing complexity of web applications. The microservices architecture takes advantage of cloud technology and addresses the challenges of complex IT platforms. ‘Micro’ doesn’t necessarily mean small but that it is usually built for a single function.
In the real world, the honeycomb is a perfect analogy for the evolutionary microservices architecture. Bees build their honeycomb starting small i.e the build one hexagonal cell of wax and then keep adding on to it till a solid structure is formed. If any of the waxy cells get destroyed, it does not affect the rest of the beehive. That is how the microservices pattern behaves.
In short, the microservices architecture is a loosely coupled set of applications. Each application is built around a specific function that behaves independently and can communicate with other applications through application programming interfaces (APIs). These APIs and microservices are essential coupledom and APIs are all developed on specific standards that are language agnostic. That means that all microservices use the same protocol for information transfer.
The microservices architecture is exactly opposite to that of a monolithic platform that is built using a single programming language and is designed as a single process that encapsulates several functions. This is why monolithic platforms find it very difficult to be agile as it is almost impossible to scale up just one function without affecting another, make quick updates or introduce new technology. The advantage of microservices platform is that it makes all 3 easily possible.
Why did Amazon pioneer microservices
Amazon was one of the pioneers (Netflix was the other) that showed the benefits of microservices in transforming a complete business. And this transformation led to Amazon to develop open-source solutions. Pne of the most important advantages of microservices is that it led to the development of AWS or Amazon web services – the world’s most comprehensive cloud computing platform.
Amazon started initially as an online book store but its services quickly grew. It’s technology platform was initially built as a two-tier monolith but as the business became larger and more complex, Amazon found itself slowed down because it could not deploy changes quickly enough. With hundreds of developers working on numerous components that were tightly packed together, the code base was growing more convoluted and development cycles were slowing down. The system was crying for a clean up. The solution they came up with was that every feature of the platform would be provided as a microservice. And each service would communication with the other through APIs.
Amazon came up with the ‘two-pizza” standard and “you build it, you run it” to make sure the system did not degenerate into chaos. Two pizzas should feed a microservices team i.e the team size should be small enough that the team would be productive without lengthy meeting. They would also be completely responsible for DevOps and the feature it controlled.
This example holds good for a large number of businesses that started small and grew big. A monolithic architecture works well for smaller businesses and startups since a monolithic archtecture is faster to set up and quick to deploy. However, as businesses grow large, the code base grows too complex and then the monolithic architecture starts to be an albatross. It is time then to shif from monolith to microservices. Is your organization at this stage?
Monolith to microservices: When is the right time to move
At iTech India, we have helped many companies to implement microservices based applications. This is what we have noticed – most companies migrate to microservices architecture when their business is growing rapidly and they face productivity and communication issues between teams.
Here are the reasons why companies move from a monolith to microservices architecture. If your business is looking for the same benefits then your company might be an ideal candidate for microservices.
- If you are having trouble making your monolithic application meet your need for scalability, agility and delivery speed.
- If you have a need for frequent testing then it might be time to migrate to a more manageable microservices architecture.
- If you have legacy applications that need to be rewritten in modern programming languages to keep up with new business requirements.
- If you have stand alone applications or modules that need to be reused across different channels. For instance ,search functionality, virtual assistants, authentication modules etc.
- Finally, if you have large development teams, many of them working remotely, and communication is a challenge then it would be advisable to split the monolithic application in to more manageable modules.
When are Microservices not right for your business
Microservices is not for everyone. They definitely are a valuable tool for businesses with complex IT infrastructure but it is not a technology trend that fits every business case. Here are few factors that could help you decide if the advantages of microservices might not be applicable for your organization.
- If an application consists of a small number of simple features than a monolithic architecture would work better. Microservices, as said before, are for complex concerns. If your application does not need to be broken into simpler parts then it’s best to stay away from microservices.
- If you are developing an MVP , testing a proof of concept or want your app to launch fast than it is better to use a monolithic pattern.
- If you have a team size of 10 or less in your development team then a microservices architecture would be too complex for the team to handle. After all. microservices have independent teams for each application function.
If your business is evaluating the need to move to a microservices architecture then we are the folks to help you get there. Get in touch with our team of experts to understand how we make the transition as easy as possible for every organization we have worked with. And if you are developing smaller applications, we are still the folks for you.