In a previous column, I discussed the important shift taking place toward microservices and provided a characterization of the key aspects of this new architectural approach. Here I discuss the factors that will help enterprises transition to a microservices approach to software development.
Culture and skill: Evaluate your organization’s culture and skill and make any necessary changes before starting. Enterprises need to look at cultural tolerance for risk and failure, then make changes in structure, responsibility and authority. Specific skills around APIs, open-source tools and modern DevOps practices are essential ingredients to the success of a microservices initiative.
Tools: Microservices are only possible because of the rapid evolution in build automation tools, testing automation, and the abundance of frameworks over the last decade. The absorption of agile into modern software development is also a key factor. It goes without saying that teams using a microservices approach must have a solid Continuous Integration/Continuous Delivery workflow anchored in a solid implementation of CI tools.
Tools spanning collaborative development, deployment configuration management and application performance analytics are also key ingredients. Strong microservices teams have to overcome any aversion to experimenting with new or open-source tools. Microservices can be hard to manage because of their sprawling distribution. Building the infrastructure to fully support a microservices architecture may be tantamount to the buildout of a complete PaaS and IaaS layer, and you should leverage public or private cloud systems.
Developer infrastructure: Effective microservices delivery relies on decentralization and decoupling between the teams working on the services. At the same time, standardization on tool chains enables efficiencies in rolling out new services and for developers moving between projects and teams.
What should be standardized and what DevOps workflows should be used have to be negotiated as the environment scales up. The early adopters of microservices have tended to standardize to a great degree on tooling across teams, and they have a separate developer infrastructure group that manages the developer tooling stack. Given the low maturity and open-source nature of many of the tools used in modern microservices, the skill needed for developers and DevOps specialists who manage the developer infrastructure should not be underestimated.
Greenfields: Choose a microservices approach for new opportunities, rather than a modernization effort involving the re-architecting of existing systems. Research favors the use of microservices architectures that are organically built.
In re-architecting systems, sizing services properly can be difficult. The practices around taking systems and applying microservices architectures are still evolving and are thus riskier to undertake. This means finding new initiatives, often around some aspect of the enterprise transformation agenda.
Incremental: Proceed with an incremental service rollout. Avoid launching too many services at once, and be aware that you may have to change course on short notice. While certain services may be straightforward to design and implement, the overall microservices architecture can be complex and hard to manage at first.
Performance: While there are challenges in designing high-quality software systems, performance is often the hardest to solve in microservices environments. Microservices architecture is distributed and operates across networks. This means that system functions that might have historically resided inside of the same address space, or run on the same machine, now have to work across network connections and API boundaries.
The importance of this depends on the function and implementation, but it also depends on the ability to use caching layers and optimizations in API-management layers and other components. Strong network architecture expertise is important.
Microservices architecture is not the solution to every IT problem, and with the current state of knowledge, it should be employed on the right projects. The above checklist should help enterprises moving in the direction of microservices tackle it with a higher degree of success.
This column is based on the recently released IDC Report, “The Emergence of Microservices as a New Architectural Approach to Building New Software Systems” (IDC #256906, June 2015).