A talk I gave at the global gRPC Community meetup where I showcase how Platogo uses gRPC to handle thousands of requests per second using gRPC across microservices.
Daniils Petrovs - Backend Developer @ Platogo Interactive Entertainment GmbH. How we handle thousands of concurrent players on web and mobile gRPC inside!
Austria 🇦🇹 - Developing a social multiplayer platform for 10+ years (with < 25 people) - Backend, front end and design teams - Multiple micro services in Elixir and Go, with single Ruby monolith
One Ruby monolith • A few Elixir micro services • A few Go micro services • K8s on AWS EKS with Trae f ik and Linkerd • Multiple CDNs and databases • Ka f ka and RabbitMQ
balances, transactions and game sessions • Hitting limitations of Ruby • Solid inter-micro-service communication options became available • Linkerd available as lightweight service mesh with load balancing and tracing support
- until 2022! • Now nearly feature complete and actively developed • Mix tasks were released by OffgridElectric wrapping protoc • Still slower than e.g. Go implementation, but fast enough for us Not as great initially! $ mix compile.proto Generated protobuf app Generated escript protoc-gen-elixir with MIX_ENV=prod compile.clean gsm.pb.ex compile.clean wallet.pb.ex compile.proto apps/shared/gsm.proto apps/shared/wallet.proto
Stub client generated from the same de f initions • Uses gRPC channel wrapped in a GenServer • Took ~3 days to build for f irst partner Using gRPC client
other services request stuff from it directly) • Maybe explore using gRPC on end user client side? • Develop more development and debugging tools (e.g. Go-based CLI for sending gRPC requests to services)
& blog • www.platogo.com - company website (and yes, we are hiring!) • https://github.com/elixir-grpc/grpc • https://github.com/OffgridElectric/protobuf_compiler