Microservices are taking the development world by storm, greatly accelerating an organization’s agility and deployment cycle. To date, some of the world’s largest organizations have successfully adopted a microservices approach. But, they might not be for everyone. As organizations begin to realize the benefits of re-architecting monolithic applications, there’s still industry hesitation at the radical shift it entails. How do you decide if microservices are right for your organization?
Start by asking these three key questions:
Do you have a need for microservices?
Microservices are intended to help organizations achieve two basic goals — agility and scale — so start by evaluating your organization’s needs.
- Agility: Unwieldy monolithic applications or ESB infrastructures can require up to six months to deploy, creating lengthy release cycles that hamper an organization’s ability to keep pace with market requirements. In building, deploying, scaling and managing individual services in their own cycles, microservices enable you to move toward a more nimble continuous delivery environment.
- Scale: For organizations that want to make more efficient use of existing hardware resources, microservices enable an increase in computing density through containerization. Another scalability requirement may be rapid elasticity to accommodate peak loads and reduce resources during off-peak moments — for example, Amazon’s ability to process an influx of purchases on Cyber Monday or Netflix’s ability to handle traffic at the launch of new shows. Consistent performance is yet another especially critical need as organizations scale. If you need to update portions of your application, a microservices architecture enables independent deployment and scaling without affecting the rest of the application.
Do you really need microservices to solve your problems?
Even if you decide agility and scalability are priorities, full-scale microservices — and the complicated restructuring that accompanies them — may not be necessary. Instead, consider whether loosely coupled miniservices can sufficiently meet business needs. Though coarser-grained than microservices, miniservices offer many of the same agility and scalability benefits without the constraints of an event-driven architecture. They are domain-specific and request-driven, enabling organizations to more quickly apply pieces of a microservices approach without massive restructuring or maintenance. If your organization isn’t ready to restructure your data environments or doesn’t yet require the scale enabled by microservices, miniservices can be a practical stepping stone in the long-term transition.
Is your organization prepared for the operational complexity of microservices?
Perhaps the greatest hurdle to microservices adoption is its profound organizational impact on everything from system architecture to roles, responsibilities and even company culture. Once you deploy microservices, you need to govern them. Any company looking to make the switch must have mature agile and devops processes in place, as well as teams and resources prepared to support the new architecture.
From a process standpoint, the software development life cycle must be automated and set up for continuous delivery. Since microservices are immutable, components cannot be changed once deployed — only efficiently replaced and redeployed without the need for any heavyweight installers or configuration management. As a result, we see teams redeploying them as frequently as on a daily basis. Agile and devops are key to enabling this automation, along with heavy investment in containerization with technologies like Docker.
Team roles and responsibilities will also change drastically, as the microservice owner now oversees all stages of the delivery cycle from design and development to deployment, management and operations. We like to say that two pizzas should be enough to feed the team managing any particular function. Organizations need to structure agile teams accordingly and make sure they understand the new architectural paradigms and chain of accountability.
Once you’ve decided whether your organization has a true need for microservices, the next challenge is to determine where and when to implement them. There’s an immense landscape of solutions that have emerged to help organizations with the transition, and it will continue to evolve with industry adoption. Microservices are by no means a silver bullet for challenges of monolithic architecture, but when thoughtfully and strategically implemented, they can empower your team to reach new levels of scale and agility.
Read more for a deeper dive into microservices with Tony Pujals, Director of Cloud Engineering at Appcelerator.