This is an example to illustrate the use of Envoy as a service sidecar proxy in a service orientated architecture.
Envoy is also used at the edge, as a layer 7 proxy, to route HTTP requests to the backend HTTP services via there respective Envoy proxy.
Each backend service connects onto dependent services, such as Postgres, Redis and RabbitMQ, via Envoy as a TCP proxy.
This provides a number of benefits, the greatest being for operational visibility, since all network traffic is proxied by Envoy, and Envoy is fully instrumented, it's possible to collect and collate all the metrics into a single dashboard.
- gateway
- http routing
- admin interface
- service which consumes postgres
- postgres tcp routing
- admin interface
- service which consumes redis
- redis tcp routing
- admin interface
- service which consumes rabbitmq
- publisher
- subscriber (worker)
- rabbitmq tcp routing
- admin interface
- metrics collection via prometheus
- zipkin
- grafana
- envoy dashboard
- service dashboard
- prometheus dashboard
- grafana dashboard
- service discovery
- vagrant setup
- architecture diagrams
- complete readme
- Microsoft Architecture: Sidecar Pattern
- Dave's Two Cents: Sidecar Pattern
- Spring Cloud Series: Microservices Sidecar Pattern
- Microservices Patterns With Envoy Sidecar Proxy: The series
- Microservices.io: Sidecar Pattern
- Envoy Documentation
- Grafana Documentation: Provisioning
- Preconfigured Dashboards in Grafana 5
- Grafana Documentation: Installation
- Guide to authoring Docker images
- Container best practices
- The Easiest Way to Roll Out Envoy
- Incremental Blue/Green Deploys
- Envoy Stats
- Envoy Dashboards
- A Basic Service Mesh with Envoy
- Connect your Service Discovery to Envoy
- Envoy Documentation: HTTP Router Configuration
- Envoy Source Code
MIT License. Copyright (c) 2018 Chris Stefano. See LICENSE for details.