HB Case Study

Overview

HB Case Study

Envoy Logo

Envoy Proxy

  • It is a modern Layer7(App) and Layer3(TCP) proxy
  • Incredibly modernized version of reverse proxies like NGINX, HAProxy
  • It is used in many projects: Istio service mash, API gateway products, etc.
  • Interesting part: Programming via API instead of file (xDS protocol)
  • Developed by Matt Klein at Lyft
  • Donated to CNCF(Kubernetes, gRPC, etc.) It graduated from there.
  • Those who integrate Envoy into their infrastructure: Google, AWS, etc.
  • It has support for Wire protocols(Redis, Memcached, MySQL, MongoDB, etc.)
  • RPC level LB instead of connection-level LB

Telemetry/Observability Properties

  • Metrics(L7 HTTP metrics)
    • Request count
    • Latency
    • Error rate
    • Status code
    • Bytes received/sent
    • Envoy's own metrics(CPU/Memory, TCP connection, Bytes, Bandwidth, QPS)
  • Distributed Tracing
    • A monitoring method that shows how long the RPCs between microservices keep and where they go.
    • Add TRACING HEADER if missing in incoming requests
    • Upload TRACEs to a certain location for requests coming to the server
      • Request In TRACE ID, start, end(Response)

Architecture

Architecture

API Reference

Get service

  GET /service/${id}
Parameter Type Description
id string Required. Id of item to fetch

Example Response

{
  "hostname": "fc4a73df5ae8",
  "ip": "172.20.0.5",
  "serviceid": "1",
  "success": true,
  "time": "2021-10-22 18:05:12"
}

Jenkins

CI/CD - Jenkins

The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.

GitHub Webhook

Jenkins

Jenkins trigger pipeline(Jenkinsfile):

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                sh "docker-compose build --pull"
            }
        }
        stage('deploy') {
            steps {
                sh "docker-compose up -d"
                sh "docker-compose scale service1=3 service2=3"
            }
        }
    }
}

Pipeline Dashboard

Jenkins

Console Output

Jenkins

Start all of our containers

docker-compose build --pull
docker-compose up -d
docker-compose scale service1=3 service2=3

Remove all containers & images

docker rm -vf $(docker ps -a -q)
docker rmi -f $(docker images -a -q)

References

🔗 Links

portfolio linkedin

Author

Owner
Ilker Ispir
I'm a software engineer with 2 years of software development experience in scalable architecture, microservices, user interfaces and cloud infrastructure.
Ilker Ispir
A Simple script to hunt unused Kubernetes resources.

K8SPurger A Simple script to hunt unused Kubernetes resources. Release History Release 0.3 Added Ingress Added Services Account Adding RoleBindding Re

Yogesh Kunjir 202 Nov 19, 2022
Python IMDB Docker - A docker tutorial to containerize a python script.

Python_IMDB_Docker A docker tutorial to containerize a python script. Build the docker in the current directory: docker build -t python-imdb . Run the

Sarthak Babbar 1 Dec 30, 2021
Simple ssh overlay for easy, remote server management written in Python GTK with paramiko

Simple "ssh" overlay for easy, remote server management written in Python GTK with paramiko

kłapouch 3 May 01, 2022
Asynchronous parallel SSH client library.

parallel-ssh Asynchronous parallel SSH client library. Run SSH commands over many - hundreds/hundreds of thousands - number of servers asynchronously

1.1k Dec 31, 2022
This projects provides the documentation and the automation(code) for the Oracle EMEA WLA COA Demo UseCase.

COA DevOps Training UseCase This projects provides the documentation and the automation(code) for the Oracle EMEA WLA COA Demo UseCase. Demo environme

Cosmin Tudor 1 Jan 28, 2022
A cron monitoring tool written in Python & Django

Healthchecks Healthchecks is a cron job monitoring service. It listens for HTTP requests and email messages ("pings") from your cron jobs and schedule

Healthchecks 5.8k Jan 02, 2023
Deploy a simple Multi-Node Clickhouse Cluster with docker-compose in minutes.

Simple Multi Node Clickhouse Cluster I hate those single-node clickhouse clusters and manually installation, I mean, why should we: Running multiple c

Nova Kwok 11 Nov 18, 2022
Python utility function to communicate with a subprocess using iterables: for when data is too big to fit in memory and has to be streamed

iterable-subprocess Python utility function to communicate with a subprocess using iterables: for when data is too big to fit in memory and has to be

Department for International Trade 5 Jul 10, 2022
Automatically capture your Ookla Speedtest metrics and display them in a Grafana dashboard

Speedtest All-In-One Automatically capture your Ookla Speedtest metrics and display them in a Grafana dashboard. Getting Started About This Code This

Aaron Melton 2 Feb 22, 2022
A colony of interacting processes

NColony Infrastructure for running "colonies" of processes. Hacking $ tox Should DTRT -- if it passes, it means unit tests are passing, and 100% cover

23 Apr 04, 2022
DC/OS - The Datacenter Operating System

DC/OS - The Datacenter Operating System The easiest way to run microservices, big data, and containers in production. What is DC/OS? Like traditional

DC/OS 2.3k Jan 06, 2023
The low-level, core functionality of boto 3.

botocore A low-level interface to a growing number of Amazon Web Services. The botocore package is the foundation for the AWS CLI as well as boto3. On

the boto project 1.2k Jan 03, 2023
Bitnami Docker Image for Python using snapshots for the system packages repositories

Python Snapshot packaged by Bitnami What is Python Snapshot? Python is a programming language that lets you work quickly and integrate systems more ef

Bitnami 1 Jan 13, 2022
A repository containing a short tutorial for Docker (with Python).

Docker Tutorial for IFT 6758 Lab In this repository, we examine the advtanges of virtualization, what Docker is and how we can deploy simple programs

Arka Mukherjee 0 Dec 14, 2021
Ganeti is a virtual machine cluster management tool built on top of existing virtualization technologies such as Xen or KVM and other open source software.

Ganeti 3.0 =========== For installation instructions, read the INSTALL and the doc/install.rst files. For a brief introduction, read the ganeti(7) m

395 Jan 04, 2023
Changelog CI is a GitHub Action that enables a project to automatically generate changelogs

What is Changelog CI? Changelog CI is a GitHub Action that enables a project to automatically generate changelogs. Changelog CI can be triggered on pu

Maksudul Haque 106 Dec 25, 2022
RMRK spy bot for RMRK hackathon

rmrk_spy_bot RMRK spy bot https://t.me/RMRKspyBot for rmrk hacktoberfest https://rmrk.devpost.com/ Birds and items price and rarity estimation Reports

Victor Ryabinin 2 Sep 06, 2022
gunicorn 'Green Unicorn' is a WSGI HTTP Server for UNIX, fast clients and sleepy applications.

Gunicorn Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. It's a pre-fork worker model ported from Ruby's Unicorn project. The Gunicorn

Benoit Chesneau 8.7k Jan 08, 2023
Hw-ci - Hardware CD/CI and Development Container

Hardware CI & Dev Containter These containers were created for my personal hardware development projects and courses duing my undergraduate degree. Pl

Matthew Dwyer 6 Dec 25, 2022