Final project in Bale Messenger's Golang backend trainee program.

  • By sina shariati
  • Last update: Sep 24, 2022
  • Comments: 0

Message Broker

In Bale Messenger’s golang backend trainee program, as our final project, we were tasked to implement a gRPC message broker. In this project I had hands-on experience working with:

  • Channels / Lock / Mutex
  • grpc/Protobuf
  • Postgres & SQL
  • Load testing
  • Unit testing
  • Load Testing using K6 and custom written golang client
  • Tracing using Jaeger
  • Performance scrapping using prometheus
  • Performance monitoring using custom-built Grafana dashboards
  • Global and local rate limiting using envoy
  • Containerization and container orchestration using Kubernetes
  • Performance optimization using insert batching and in-memory caching

Performance Report

We had several load testing and stress testing phases on broker's publish functionality using K6 and custom-built golang clients.

rate

publish rate

latency

latency

Download

message_broker.zip