Skip to content

Back to blog

Architecture

Monolith vs microservices: what actually changes in latency

· 7 min

Microservices are usually justified by team scaling and independent deploys, but the direct latency consequence of that split tends to get glossed over in the discussion.

Illustration of a single block next to several connected blocks

A function call becomes a network call

What used to be an in-process function call (nanoseconds, no serialization) becomes a network call: serialization, TCP/TLS handshake overhead (amortized by connection pooling, but still there), and the physical round trip, even within the same datacenter this is orders of magnitude slower than a function call.

Latency adds up along the chain

A user request touching N services in sequence has its latency roughly bounded by the sum of each hop (unless calls are parallelized), so breaking a monolith into more services on the request's critical path adds latency directly, even if each individual service is fast.

Partial failures are a new kind of cost

In a monolith, a bug either crashes the whole process or it doesn't. In a distributed system, any one of N network calls can fail or hang independently, and handling that correctly, timeouts, retries, circuit breakers, is both necessary and itself adds overhead and complexity a monolith never had to pay for.

Where the trade still pays off

The latency cost is real and worth acknowledging, but it's traded for independent scaling and deployment of the services that actually need it. The mistake isn't choosing microservices, it's splitting a system along team boundaries without checking whether the resulting call graph puts too many network hops on the request's hot path.