Case study · .NET backends
REST to gRPC
A high-traffic transaction backend, moved from REST to gRPC between services. P99 latency down 59%.
Internal calls between .NET microservices went over JSON and REST, and the tail latency of each hop added up on the busiest transaction paths.
Drove the move of the service-to-service calls to gRPC, and led the performance testing that measured it.
P99 latency between the services dropped 59%. The client code stays private, so this page describes the work and the number.
- Role
- Backend engineer, led the performance testing
- Where
- StarLabs, for an international client
- Years
- 2021 – 2025
- Stack
- .NET Core, gRPC, Orleans, Kubernetes
The system
A real-time transaction backend for an international client, built as .NET Core microservices with event-driven flows on Orleans, running in Docker on Kubernetes. Traffic is spiky, and the busiest paths cross several services before a transaction is settled, so every internal hop shows up in the tail.
The change
The services talked to each other over JSON and REST. I drove the migration of those internal calls to gRPC: protobuf contracts shared by both sides instead of hand-written DTOs, compact binary payloads instead of JSON, and multiplexed HTTP/2 connections. This was about the traffic between our own services.
Measuring it
I led the performance testing around it. The number that mattered was P99, because averages hide exactly the slow requests a transaction system cannot afford.
P99 latency dropped 59%. Alongside it I tuned the heaviest PostgreSQL and SQL Server queries on the same paths.
Got a role or a project?
Email is the fastest way to reach me.