, 14 tweets, 5 min read
My Authors
Read all threads
0/ Deep systems have come to the fore in recent years, largely due to the industry-wide migration to microservices.

But weren't monoliths "deep", too? Well, yes and no.

And this is all related to tracing, observability, and the slow death of APM.

Thread:
1/ First, let's start with monoliths. Of course they've been around for a while, and it’s where most of us started. There is plenty of depth and complexity from a monolithic-codebase standpoint, but operationally it's just one big – and often brittle – binary.
2/ Hundreds of developers work across dozens of teams to develop countless packages that are (slowly) tested and compiled into *a single monolithic binary*, pictured here.
3/ These packages communicate via *plain old function calls* (new acronym: “POFC”??), pictured here in purple.

And those function call stacks can get very deep. So, are monoliths deep systems?
4/ Well: a deep system (per lightstep.com/deep-systems) has ≥ 4 layers of *independently operated* services. The call stacks in monoliths may be deep, but they are not “independently operated.” This is why you have the luxury of observing the whole thing via a single binary.
5/ Monolith deploys are *notoriously* painful: releases take days or weeks to test and deploy given the vast numbers developers and commits involved.

(This pain is so severe that organizations have to throw out the entire architecture – hence microservices!)
6/ Once deployed, ops uses an APM and/or metrics tool to observe the function calls and basic infra stats streaming from the singular, monolithic binary.

And for pure monoliths, this can be powerful and valuable.

But for *microservices*, it's a different story... (onwards)
7/ So how – and why – does this change with microservices? It all hinges on the differences between deep call stacks and deep systems.

Let’s dig in...
8/ With microservices, hundreds of devs work across dozens of teams to develop countless services that are tested and built quickly and independently. We see clear similarities between the “services” here and the “packages” of monoliths – so what’s different?
9/ Well, first of all, these microservices communicate via network calls, not function calls.

And given that they are independently operated, a true deep system emerges from these many layers of abstraction and indirection.
10/ Of course, the "point" of microservices was to substantially increase release velocity.

But all of these deploys create an environment of continuous change and risk, affecting every layer of the deep system.

What happens if we try to observe this with monolith-era tools?
11/ APMs and metrics tools were designed to explain *individual* binaries in production. But inspecting individual pieces in parallel does little to explain the behavior of the overarching system.

In deep systems, APMs and metrics lack vital context about the larger application.
12/ In deep systems, distributed traces *are* that vital context.

And that’s why only opinionated, use-case-driven observability with a distributed tracing backbone can explain the behavior of these deep systems, and ultimately the apps and businesses that depend upon them.
13/ So while APM and metrics can be useful for monoliths, they are overwhelmed by the many independently-operated layers of deep systems.

So, finally, here is an illustration of the evolution – I'm fascinated to hear other perspectives here, please add to this thread!
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Ben Sigelman

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!