Microservices can drive your digital agenda and provide you many benefits over legacy systems. But as I’ve described before microservices architectures can do more harm than good if not properly implemented.
From Innominds’ experience with global clients, there are a few pre-requisites that enterprises have to follow before embarking on the microservices journey.
You need to have a vision of the target architecture
Start with identifying all the services and partitioning them vertically into different groups i.e. core, aggregate, API, infrastructure. Identify the responsibilities of each group of services (single responsibility and separation of concerns) and also identify the relationships between the services i.e. which service can communicate with which service (ingress, egress points). Next, identify the 3rd party integration points.
Form teams based on business needs
Adopting a microservices architecture has a bigger impact on an enterprise as there are several moving parts. Management and stakeholders need to understand that there might be extra cost and time to get to a stable DevOps environment so as to accommodate, govern, and manage many services, given the fact that microservices deal with distributed systems with multitude of services.
Traditionally, organizations have been forming teams by technology i.e. separate teams for UI, UX, Server, Database, etc. This follows Conway's Law, which asserts that software organizations are constrained to produce application designs that are copies of their communication structures.
This generally leads to unintended friction points. We recommend that you should form teams based on business needs. The teams are comprised of engineers with the necessary competencies, the skills to take the product from conceptualization stage to retirement (including requirements gathering, design and implementation, testing, production deployment, post-production support, etc.).
Ramp-up team on new technologies
The development of microservices (irrespective of the technology stack) involves a learning curve that needs to be factored into the project schedule. Having the entire team ramped-up on the new technologies and having them on the same wavelength is an integral part of the initiative's success.
Select the right microservices platform
This can’t be emphasized enough. The right platform is the one that is scalable, supportable, upgradeable, resilient, and cloud ready.
Services have to be easily deployed, started, discovered and stopped in a consistent manner across different environments (Development, Staging, QA, Production). Tools like Docker can be leveraged to support this. Each microservice is built as a separate Docker image. Public cloud providers (AWS, Azure) support Docker containers as first-class citizens.
Ensure Continuous Improvement and Continuous Delivery (CI/CD) chain
Enterprises adopting microservices must have automation servers (such as Jenkins) in place to facilitate continuous integration and continuous delivery (CI/CD) so that any changes to the microservices can be rolled out in an efficient, repeatable and quality-driven way.
Consider adopting Infrastructure-as-a-Service (IaaS) and Orchestration
Over the last many years, there has been an increased adoption of IaaS by several customers for the following reasons:
- IaaS providers are responsible for the maintenance, software upgrades, 99.999% uptime and availability, etc
- Cost-effective because of pay-as-you-go model (PAYG) i.e. pay only for the usage
- Resources (servers, data stores, storages, etc.) are acquired on-demand basis. Thus, there is a need to automate and manage the deployments of containers to an infrastructure platform (AWS, Azure)
- Orchestration systems like Kubernetes come to the rescue here
Prepare for the long haul to operational excellence
Enterprises need to understand that achieving operational excellence is not an overnight journey but a gradual and continuous improvement process. Any disruptions to the services offered by the enterprises have to be addressed on a case-by-case basis. Take appropriate measures so that they don’t occur again and introduce automation wherever possible and applicable. As the processes mature over a period of time, we progress towards operational excellence.
Ready to adopt microservices? Get the answer with Innominds’ Microservices Maturity Model
Considering the above pre-requisites, it is important to assess if an enterprise is ready to adopt microservices. This is where Innominds’ Microservices Maturity Model comes in handy. This model was created based on our experiences of building microservices for several customers.
A microservices maturity model helps enterprises assess where they stand and what it takes to transform to a matured microservices-based enterprise. It also provides guidance to teams at various levels for continuous improvement.
The assessment methodology involves the following steps:
- An evaluation is conducted on microservices maturity parameters as listed here:
- Decomposition of business requirements
- Team Structure
- Process and
For each parameter, the enterprise is bucketed into different levels
Describe the microservices scorecard with improvement/optimization areas
The scorecard contains detailed guidelines for scoring criteria and describes the maturity scores with respect to each of the microservices architecture parameters and their maturity levels on basis of the assessment exercise.
A 0-to-4 rating scale is used to assess the selected parameters, where 0 represents the lowest level of maturity and 4 is best in class. Recommendations are also provided for areas where the maturity score is less than 4.
Based on these recommendations, enterprises can then formulate a plan and take actions before the adoption.
Phased approach to transforming legacy systems to microservices
The microservices journey could involve enterprises implementing new cloud-native microservices from scratch or transforming their existing legacy/monolithic systems to microservices. In the case of the latter, Innominds’ recommends a phased approach (see below) for the transformation.
Discovery and assessment
Measure for scaling
With Innominds’ “Microservices Maturity Model” framework, enterprises can assess their maturity level with respect to the adoption of microservices and take corrective actions before embarking on the journey.
Once an enterprise is ready for microservices adoption, they can utilize Innominds’ digital assets library (DAL) and iSymphony platform (Rapid Application Development platform) to get the acceleration they need for their microservices development and ultimately leading to an accelerated digital transformation journey.
- Building Microservices (Sam Newman)
- Domain driven design (Eric Evans)