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.
Monolithic vs Microservices Architecture in E-commerce
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. One 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 architecture 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 shift from monolith to microservices. Is your organization at this stage?
When to Use Microservices: Signs Your Business Needs It
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.
1. Scalability and Speed Issues:
If you are having trouble making your monolithic application meet your need for scalability, agility and delivery speed.
2. Frequent Testing Needs
If you have a need for frequent testing then it might be time to migrate to a more manageable microservices architecture.
3. Updating Legacy Applications
If you have legacy applications that need to be rewritten in modern programming languages to keep up with new business requirements.
4. Reusing Applications Across Channels
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.
5. Communication Challenges in Large Teams
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 Not to Use Microservices
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.
1. Simple Features
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.
2. MVP or Proof of Concept
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.
3. Small Development Teams
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.
Conclusion
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.