DevOps

Envoy

What is Envoy?

Envoy is an open-source edge and service proxy, designed for cloud-native applications. Originally built at Lyft, Envoy is now a CNCF graduated project. It's often used as a network abstraction layer to help solve common problems like service discovery, load balancing, and observability in microservices architectures.

Envoy is an open-source edge and service proxy, designed for cloud-native applications. It is a high-performance proxy developed in C++ to mediate all inbound and outbound traffic for all services in the service mesh. Envoy is often used as a component of the service mesh in the DevOps field, providing a uniform way to connect, secure, control, and observe services.

DevOps, on the other hand, is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the system's development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology.

Definition of Envoy in DevOps

Envoy, in the context of DevOps, is a modern, high-performance, open-source network proxy that is used to manage the network communication within a distributed system, or service mesh. It is designed to support a wide range of applications, including those that are designed to run on modern cloud infrastructures. Envoy provides a unified, programmable control plane for all service-to-service communication in a microservices architecture.

Envoy's role in DevOps is to ensure that the network communication between different services in a distributed system is fast, reliable, and secure. It provides a range of features that are essential for modern DevOps practices, such as load balancing, service discovery, circuit breaking, rate limiting, and observability through metrics and logging.

Service Mesh

A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It's responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud-native application. In practice, the service mesh provides every service instance with a network interface, or 'sidecar proxy', which handles all network communication between services.

Envoy is often used as the sidecar proxy in a service mesh architecture. It intercepts all network communication between microservices, then routes, balances, and secures it according to rules defined in the control plane. This allows developers to focus on the business logic of their services, while Envoy and the service mesh handle the networking.

History of Envoy

Envoy was originally built at Lyft, a ride-sharing company, to move their architecture away from a monolith and towards a microservices architecture. Lyft needed a high-performance, extensible proxy to handle their increasingly complex network topology, and none of the existing solutions met their needs. So, they built Envoy.

Envoy was released as an open-source project in 2016. Since then, it has been adopted by many companies and projects, including large cloud providers like Google and IBM. In 2017, Envoy became a graduated project of the Cloud Native Computing Foundation (CNCF), indicating its wide adoption and maturity.

Adoption by Service Mesh Projects

Envoy's adoption by service mesh projects like Istio and Consul has significantly contributed to its popularity. Istio, in particular, has driven Envoy's adoption as it uses Envoy as its default data plane. This means that all network communication between services in an Istio service mesh is handled by Envoy proxies.

The use of Envoy in these popular service mesh projects has helped to drive its development and add new features. It has also increased the visibility and understanding of Envoy in the DevOps community.

Use Cases of Envoy in DevOps

Envoy is used in a variety of use cases in DevOps, particularly in microservices architectures and service mesh implementations. Some of the most common use cases include load balancing, service discovery, circuit breaking, rate limiting, and observability.

Load balancing is a critical feature for any distributed system. Envoy provides a variety of load balancing strategies, including simple round-robin, least request, and random. It also supports more advanced strategies, like weighted least request and ring hash.

Service Discovery

Service discovery is another critical feature for distributed systems. Envoy supports a variety of service discovery mechanisms, including DNS resolution, Eureka, Consul, Zookeeper, and more. This allows Envoy to dynamically discover and route to services as they are added, removed, or moved within the system.

Envoy's support for dynamic service discovery is particularly important in a DevOps context, where services are often dynamically scaled and moved based on demand. This ensures that all services can always find and communicate with each other, regardless of where they are running.

Circuit Breaking

Circuit breaking is a critical feature for maintaining the reliability of a distributed system. It prevents a single failing service from causing cascading failures throughout the system. Envoy supports circuit breaking at the network level, allowing it to cut off traffic to failing services and redirect it to healthy ones.

This feature is particularly important in a DevOps context, where maintaining the reliability and availability of services is a top priority. By providing network-level circuit breaking, Envoy can help to maintain the overall health of the system, even when individual services fail.

Examples of Envoy in DevOps

There are many examples of companies using Envoy in their DevOps practices. One notable example is Lyft, the company that originally developed Envoy. Lyft uses Envoy to manage all network communication within their microservices architecture, providing a fast, reliable, and secure network layer for their services.

Another example is Google, which uses Envoy in its Istio service mesh project. Istio uses Envoy as its default data plane, handling all network communication between services. This allows Google to provide a robust, scalable, and secure network layer for its cloud-native applications.

Envoy at Lyft

Lyft, the company that originally developed Envoy, uses it extensively in their microservices architecture. Lyft's architecture consists of hundreds of microservices, each with their own Envoy sidecar proxy. These proxies handle all network communication between services, providing a fast, reliable, and secure network layer.

By using Envoy, Lyft has been able to significantly reduce the complexity of their network topology and improve the reliability and performance of their services. They have also been able to take advantage of Envoy's advanced features, like load balancing, service discovery, and circuit breaking, to further improve their system's resilience and performance.

Envoy in Istio

Istio, a popular service mesh project, uses Envoy as its default data plane. This means that all network communication between services in an Istio service mesh is handled by Envoy proxies. These proxies provide a robust, scalable, and secure network layer for the services in the mesh.

By using Envoy, Istio is able to provide a unified, programmable control plane for all service-to-service communication. This allows developers to focus on the business logic of their services, while Istio and Envoy handle the networking. It also allows Istio to provide advanced features, like traffic routing, fault injection, and security policies, at the network level.

Conclusion

Envoy is a powerful tool in the DevOps toolbox, providing a robust, scalable, and secure network layer for distributed systems. Its wide range of features, including load balancing, service discovery, circuit breaking, and observability, make it an ideal choice for modern DevOps practices.

Whether you're building a microservices architecture, implementing a service mesh, or simply looking for a reliable, high-performance network proxy, Envoy is a tool worth considering. Its wide adoption and active development community also ensure that it will continue to evolve and improve to meet the needs of modern DevOps practices.

High-impact engineers ship 2x faster with Graph
Ready to join the revolution?
High-impact engineers ship 2x faster with Graph
Ready to join the revolution?

Code happier

Join the waitlist