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.