By Manish Chugtu

Translator: Di Weihua

Original text: blog.avinetworks.com/from-fragme…

Over the past few years, we have noticed a rapid shift in application architecture toward distributed microservices architectures — monolithic and bulky applications are broken down into smaller individual services that can be modified, built, deployed, and managed independently. The main advantages of this pattern are simplicity and speed, while it is easier to upgrade and scale independently because it has little or no dependence on other services. This fits well with agile and DevOps, and has been successfully adopted by many large-scale Web companies. For many years, most of these companies have been able to adopt this model very well, but the two most successful players in recent years are Docker and Kubernetes. Docker simplifies the process of building microservices as Linux containers, while Kubernetes can deploy, manage, and extend services in a resource-optimized manner.



Application Architecture Evolution

In this blog post, we won’t spend much time discussing the pros and cons of microservices architecture. Instead, we will focus on a significant shift to cloud-native architectures built on microservices.

While the microservices architecture offers flexibility, it also comes with complexity. Kubernetes has played an important role in deploying and managing microservices, but we need more than just a single cloud-native application running in a production environment — we need a deeper understanding of service discovery, security, traffic management, and more. This is especially necessary in complex environments where hundreds of services that communicate with each other are frequently deleted, produced, expanded, and updated.



Challenges facing microservices architecture

This scale and dynamism brought about a concrete shift in the early infrastructure for running monolithic programs and managing applications. To support this dynamic environment, the next generation architecture needs to complement the ecosystem with a number of new technologies. To deliver all user scenarios, we need to provide multiple solutions at each level of the infrastructure stack. Infrastructure people are starting to integrate these technologies into the platform as needed, but this also means that application developers have an additional burden to support these technologies.



High-level view of the infrastructure stack

This is not what one would expect, and certainly not the promise of agility, ease of development, and deployment made by the microservices architecture.

Then came the idea of a service grid, which Avi Networks had been focused on delivering to customers until the term was coined, and which became the de facto standard driven by open source projects such as Istio and Linkerd. We are pleased to see the community embrace the service grid, and we see it as a necessary part of the microservices infrastructure.

So what is a “service grid” and how does it help solve these problems? A service grid essentially provides multiple layers of services in the infrastructure shown above, while developers can leverage these services without having to integrate or modify code. Not only does it make communication between services fast and reliable, but service networks also provide fine-grained traffic management, fail-over, security (encryption, authorization, and authentication), and observability (such as tracing, logging, and monitoring). All of this is abstracted from a developer using an architecture in which all communication between services flows through a Sidecar agent, which is deployed with each service to create a service grid. Sidecar is managed and configured by the centralized control plane for traffic routing and policy enforcement. While sidecar containers that run as many as application containers have been a point of contention, the benefits and capabilities of the service grid seem to outweigh the operational issues.

In the remainder of this blog series, I’ll delve into how to implement a service grid and use Istio’s reference architecture to complete the journey, as Istio is one of the most widely used and well-known service grid solutions today. But does Istio solve all the problems and is it complete in addressing the important scenarios that exist in today’s microservices world? We’ll delve deeper into this and cover everything in a later part of this series. Stay tuned!

Manish Chugtu-CTO Cloud Infrastructure and Microservices@Avi Networks is an innovative thought leader with over 18 years of experience in architecture, design and product development. Has extensive experience in architecture and developing highly scalable enterprise solutions. Currently, he is working to drive Avi’s strategy in the container and cloud infrastructure areas of his LinkedIn.