Welcome to Innominds Blog
Enjoy our insights and engage with us!

What You Need to Do Before You Adopt Microservices

Introduction

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.

  • Adopt containerization

    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
    • Architecture
    • Codebase
    • Data
    • Infrastructure
    • Deployment
    • Monitoring
    • Testing
    • Governance
    • Team Structure
    • Process and
    • Tools
  • For each parameter, the enterprise is bucketed into different levels
    Stages-in-Microservices-Maturity-Model.png
  • 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.

Phase

Description

Discovery and assessment

  • Analysis of the monolithic application (architecture, design, etc.)
  • Apply domain-driven design guidelines to identify seams, modules including integration points
  • Apply analysis patterns to Identify relationships (dependencies and interactions) between the modules

Design

  • Identify domains, sub-domains and bounded contexts (modules to be migrated)
  • Decompose the business functionality using the bounded contexts
  • Decide on Re-write vs Port, Prioritization, etc.

Target architecture

  • Incremental Hexagonal architecture
  • Provides process view, logical view, implementation and deployment view
  • Model the various layers and relationship of the domains
  • Apply design thinking guidelines to do a POC (Proof-of-Concept) activity for feasibility analysis

Strategic goals

  • Understanding the KPIs for BAU
  • How and when to achieve the optimization using microservices
  • Follow an incremental approach with a hybrid model
  • Co-existence of monolithic application and granular microservices
  • Define principles to be followed

Define outcomes

  • Define the business outcomes and non-functional needs expected from the application
  • Know the migration impacts

Transform

  • Undertake the development of the new platform
  • CI/CD pipelines are setup
  • Every sprint deliverable will show the progression of the product/architecture towards the envisioned target architecture

Measure for scaling

  • Apply Scale Cube model to architect the services at scale. Measure the migrated application against outcomes (partially / completely)

Conclusion

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.

References

  • Building Microservices (Sam Newman)
  • Domain driven design (Eric Evans)

Topics: Digital Products & Applications

Chandrashekar Rao Veerapaneni

Chandrashekar Rao Veerapaneni

Distinguished Engineer - Software Engineering

Subscribe to Email Updates

Authors

Show More

Recent Posts