When I pause to reflect on my first experiences with coding, memories of thousands of lines of glorious, monochromatic, procedural logic come flooding back to me. The satisfaction of translating ideas into executable code in order to solve problems was addictive and I was hooked. Over the decades, we have seen a number of exciting paradigm shifts along with new languages and frameworks that have enabled the delivery of entirely new business models, transformative efficiencies, and amazing user experiences.
One of those transformative shifts sits squarely on the shoulders of microservices and cloud-native applications. Adopting microservices opens up responsive freedom to move quickly and deliver tangible business outcomes and exciting new user experiences.
Let us look at three important considerations while defining our microservices strategy.
1. SET YOUR TEAMS UP TO WIN
Siloed, functional teams typically lead to distance, fragmentation, and adversarial thinking. In many cases, this only serves to stunt productivity. This is why we need cross-functional teams or “pods” as we call them at Cognizant Softvision, that own the complete DevOps lifecycle from design to delivery. Pods comprise different roles, skills, and responsibilities, with key stakeholders from UX design, development, and QA testing to operations working closely together, either co-located or virtually.
Here are some of the advantages pods provide:
- Allowing accurate measurement of velocity and delivery cadence while minimizing operational expenses
- Enabling the cross-pollination of skills and business knowledge across the team with greater clarity on business outcomes
- As projects progress, the mature pods quickly splinter off into new, well-rounded teams. By scaling using this method, your entire IT organization can succeed with microservices.
2. DESIGN FROM THE DOMAIN OUT
Get started and design the services your application requires using Domain-Driven Design (DDD) that focuses on real-world business problems and outcomes, instead of technology. DDD consists of a set of patterns for building complex enterprise applications from the domain model out.
Facilitate DDD by conducting Event Storming (ES) workshops that are a rapid, lightweight approach to bringing domain experts and technology teams together. They accelerate group learning and form the ubiquitous language through which all teams communicate. That said, ES is not a substitute for UML diagramming, design, deployment, or other implantation models.
Participants of ES workshops navigate the business domain together to surface out comprehensive processes and identify the three main components of the event storming model: domain events, commands, and aggregates.
Here are a few considerations for conducting ES workshops:
- Ensure that you have the right participants including an experienced facilitator, those who know the right questions to ask, and those who have the answers (usually a mix of stakeholders from the business, UX designers, development, architecture, and infrastructure).
- If the entire team is in the same physical location, make sure you have an ample wall canvas.
- For virtual teams, use tools such as Miro that allow unrestricted collaboration.
3. BUILD IN GOVERNANCE & SECURITY
A decentralized approach is optimal for microservices since they typically involve a variety of technologies and platforms (the polygon model). This frees developers to solve problems more efficiently and with greater velocity.
However, when development spans multiple teams, each of them with different cadence/sprints, some amount of centralized governance becomes necessary.
Microservices have common concerns such as access control, rate limiting, authorization using API tokens, logging, and monitoring.
Here are ways in which you can help each microservice address these concerns with ease:
- If you are using RESTful services, an API gateway can assist in providing behavioral insights, security, and operational control over the service mesh as a whole.
- An API gateway can provide an underlying secure communication channel and manage authentication and encryption of microservices at scale. This allows your application to enforce policies across a range of protocols and runtimes, thus guaranteeing data confidentiality.
- You can choose from a number of platforms available including Istio, Kong, Tyk, Apigee Edge, and Mulesoft Anypoint, depending on the scale and context of your application and based on thorough comparison and trade-off analysis.
ONWARDS AND OUTWARDS
Although microservices may be individually simple, there is inherent complexity in managing and orchestrating these services along with the need for some up-front investment. I believe the three key factors we discussed in this blog will help you get started with your microservices strategy.
At Cognizant Softvision, we are digitally native and, by extension, cloud-native. Microservice design and development are part of our DNA, and we have been designing distributed systems for decades.
In the next blog, I will share a few more critical parameters that will enable you to look beyond fragmented and ad-hoc approaches to build a holistic microservices strategy.
For more insights on Microservices, read our blogs: