Skip to content
The Protocol Chronicles

How Systems Learned to Talk

Every API protocol was born because the last one couldn't handle what production threw at it. This is the story of the papers, the mandates, and the engineers who built the language of the internet.

From raw sockets to multi-protocol gateways, from SOAP cathedrals to streaming RPCs. 55 years of API evolution, connected to every lab level you'll ever design.

9 chapters
49 breakthroughs
~80 min total read
1969 - Present
Chapter 01960s - 1990

Before the Interface

When talking to another machine meant knowing its exact memory layout

The driving question:“How do you make two programs on different machines call each other's functions?”
8 min read5 milestones
1969BBN Technologies / DARPA

On October 29, 1969, Charley Kline at UCLA typed "LOGIN" to send a message to a machine at Stanford Research Institute. The system crashed after the first two letters - only "LO" made it through. It was the first message ever sent between two computers on a network. But ARPANET's real contribution wasn't just connecting machines. It introduced the Request for Comments (RFC) process - a collaborative, open way to define how systems should communicate. RFC 1 was published in April 1969. Today there are over 9,000 RFCs defining everything from HTTP to WebSockets. The entire internet is built on this culture of proposing, debating, and standardizing interfaces between systems.

Read the deep dive on our blog

Key Insight: The RFC process is why you can design an API today and know that clients across the planet will understand it. HTTP, REST, OAuth, WebSockets - all RFCs. When you version your API or write an OpenAPI spec, you're participating in the same standardization culture that started with RFC 1.

1971Abhay Bhushan (MIT)

FTP was the internet's first real application-layer protocol. Before FTP, transferring a file between machines required writing custom code that understood the other machine's operating system, file format, and storage layout. FTP abstracted all of that behind a standard set of commands: RETR to download, STOR to upload, LIST to browse. It introduced the concept of a "protocol" as a contract between client and server - a shared vocabulary of commands and responses that both sides agree to follow. FTP also introduced the idea of status codes (200 for success, 530 for not logged in) that HTTP would later adopt and expand. The pattern of "verb + resource + status code response" that every REST API uses today started right here.

Paper: “RFC 114 - File Transfer Protocol”
Read the deep dive on our blog

Key Insight: FTP's command-response pattern is the DNA of every API you'll ever design. When you write GET /users/123 and get back a 200, you're using the same paradigm that Abhay Bhushan defined in 1971 - a standard vocabulary of operations that both client and server understand without knowing each other's implementation.

1984Sun Microsystems
1991Object Management Group (OMG)
1996Microsoft / Sun Microsystems
Connection to Lab

Chapter 0 explains why APIs exist - the decades of failed distributed computing attempts that made simple HTTP + JSON the clear winner. In Act 1's first levels, you'll build your first REST API and experience why this simplicity works.

Hello, API WorldThe CRUD Master
Chapter 11991 - 1999

The Web Changes Everything

A physicist at CERN accidentally created the universal application protocol

The driving question:“What if every resource on the internet had an address, and you could interact with it using a handful of verbs?”
9 min read5 milestones
1991Tim Berners-Lee (CERN)

Tim Berners-Lee didn't set out to create the backbone of the API economy. He wanted physicists at CERN to share research papers. His solution was radically simple: every document gets a unique address (URL), and you retrieve it with a single command (GET). HTTP/0.9 was so minimal it only supported one operation - GET - and could only return HTML. No headers. No status codes. No content negotiation. Just "give me the document at this address." But that simplicity was its genius. Anyone could implement it. Any platform could speak it. Within two years, there were dozens of web servers and browsers, all interoperable because the protocol was too simple to get wrong. Every complex API you'll ever design is a descendant of this one-verb, one-format protocol.

Read the deep dive on our blog

Key Insight: Berners-Lee's design philosophy - "the simplest thing that could work" - is the most underrated principle in API design. When you're choosing between a clever, feature-rich protocol and a dead-simple one, the simple one wins every time because adoption beats capability.

1993Rob McCool (NCSA)

The Common Gateway Interface turned the web from a document library into an application platform. Before CGI, web servers could only serve static files. CGI let a web server hand off a request to any executable program - a Perl script, a C program, a shell script - and return its output as the HTTP response. This was the moment the "request-response" pattern became an "API call." A CGI script that accepted query parameters and returned dynamic HTML was functionally identical to a modern API endpoint. The URL was the endpoint. The query string was the request parameters. The response was the output. CGI scripts were slow (they spawned a new process per request) and messy (they parsed raw environment variables), but they proved that HTTP could do more than serve files. They proved it could be the transport layer for applications.

Read the deep dive on our blog

Key Insight: CGI's "spawn a process per request" model is the ancestor of serverless functions. AWS Lambda, Cloudflare Workers, Vercel Edge Functions - they all follow the same pattern: receive an HTTP request, run some code, return a response. The execution model evolved from forking processes to containers to isolates, but the API contract is unchanged.

1996IETF (Tim Berners-Lee, Roy Fielding, Henrik Frystyk)
1997Roy Fielding, Jim Gettys, et al.
1998W3C
Connection to Lab

Chapter 1 covers the HTTP fundamentals that every API is built on - status codes, headers, methods, and content types. In Act 1, you'll apply these foundations to design APIs with proper status code usage, nested resources, and query parameter patterns.

Status Code SymphonyNested TreasuresThe Query Master
Chapter 21998 - 2006

The XML Cathedral

When the enterprise built an elaborate tower of specifications and the web quietly walked away

The driving question:“Can you solve distributed computing with enough specification layers?”
8 min read5 milestones
1998Dave Winer (UserLand Software)

Dave Winer had a pragmatic idea: what if you could call functions on remote servers using plain HTTP and XML? No CORBA brokers, no IDL compilers, no platform dependencies. Just POST an XML document describing the function name and arguments to a URL, and get back an XML document with the result. XML-RPC was intentionally simple - the entire spec fit on one page. It supported basic types (integers, strings, booleans, dates, arrays, structs) and nothing else. No sessions, no authentication, no service discovery. This constraint was deliberate. Winer believed that simplicity was more important than features, and that developers would build what they needed on top of a simple foundation. XML-RPC proved that HTTP could carry more than web pages. It was the direct ancestor of SOAP - though SOAP would violate every principle of simplicity that XML-RPC stood for.

Read the deep dive on our blog

Key Insight: XML-RPC is the philosophical ancestor of JSON-RPC and every "function call over HTTP" pattern. Its success was proof that developers will choose "simple and incomplete" over "complex and complete" every single time. When you debate whether to add one more feature to your API, remember XML-RPC's one-page spec.

2000Don Box, Dave Winer, et al. (Microsoft, IBM)

SOAP started as a natural evolution of XML-RPC: a standard way to call remote procedures using XML over HTTP. But Microsoft and IBM had grander ambitions. They wanted SOAP to be the universal protocol for all enterprise communication. The original spec was reasonable - XML envelopes with headers and bodies, fault handling, and encoding rules. Then came the extensions. WS-Security for authentication. WS-ReliableMessaging for guaranteed delivery. WS-Transaction for distributed transactions. WS-Addressing, WS-Policy, WS-Federation. Each specification added more XML, more complexity, more configuration. The community called it "WS-Deathstar." A simple SOAP request to fetch a user required 30+ lines of XML boilerplate before you got to the actual data. Developers spent more time fighting WSDL files and SOAP faults than building features. SOAP became the cautionary tale that every API designer should study.

Read the deep dive on our blog

Key Insight: SOAP failed because it optimized for machines reading specifications instead of humans reading documentation. Every WS-* standard made perfect logical sense in isolation. Together they created an impenetrable wall of complexity. This is why modern API design prioritizes developer experience - if your API needs a 200-page guide to make a simple call, nobody will use it.

2001W3C (IBM, Microsoft)
2002OASIS, W3C (Various)
2004Various (IBM, TIBCO, MuleSoft)
Connection to Lab

Chapter 2's SOAP era created the error handling, versioning, and documentation problems that modern REST APIs had to solve. Act 1's levels on error formats (RFC 7807), API versioning strategies, and OpenAPI documentation are direct responses to what went wrong in the XML Cathedral.

The Error WhispererVersioning VortexDocumentation Dojo
Chapter 32000 - 2008

The REST Revolution

A PhD student noticed that the web already had an architecture - and it was better than anything the enterprise had built

The driving question:“What if APIs worked exactly like the web itself - addressable resources, standard methods, stateless interactions?”
10 min read6 milestones
2000Roy T. Fielding (UC Irvine)

In Chapter 5 of his doctoral dissertation, Roy Fielding didn't invent a new technology. He described the architecture that already made the web work - and gave it a name: Representational State Transfer (REST). Fielding was uniquely qualified to do this because he was a principal author of the HTTP/1.1 specification. He understood the web's architecture from the inside. REST defined six constraints: client-server separation, statelessness, cacheability, a uniform interface, layered system, and optional code-on-demand. The key insight was "resources." Every thing in your system gets a unique identifier (a URL). You interact with it using a small, fixed set of operations (HTTP methods). The server sends back a "representation" of the resource's current state. No sessions. No stubs. No IDL. Just URLs, verbs, and representations. While SOAP required pages of XML configuration, REST said: "The web already works. Build APIs the same way."

Read the deep dive on our blog

Key Insight: Fielding's constraints aren't suggestions - they're load-bearing architecture decisions. Statelessness enables horizontal scaling (any server can handle any request). Cacheability reduces load by orders of magnitude. Uniform interface means any HTTP client can talk to any REST API. Every time you break a REST constraint, you pay for it in scalability, operability, or interoperability.

2002Jeff Bezos (Amazon)

In 2002, Jeff Bezos sent an email to every team at Amazon. The mandate was simple and absolute: (1) All teams must expose their data and functionality through service interfaces. (2) Teams must communicate with each other through these interfaces. (3) All service interfaces must be designed from the ground up to be externalizable - no exceptions. (4) Anyone who doesn't do this will be fired. This wasn't about public APIs. Bezos understood that if Amazon's internal services had clean, well-defined interfaces, they could be opened to external developers later. That's exactly what happened - Amazon's internal service interfaces became Amazon Web Services. S3, EC2, SQS - these were internal tools first. The Bezos mandate proved that API-first thinking transforms organizations. When every team communicates through APIs, you get clear boundaries, independent deployment, and services that can scale independently.

Read the deep dive on our blog

Key Insight: The Bezos mandate is the origin of API-first design. When you design your API contract before writing implementation code, you're following the same principle: the interface is the product. Internal APIs should be designed with the same care as external ones because today's internal API is tomorrow's platform.

2004Flickr (Ludicorp)
2005Douglas Crockford
2006Twitter
2008Leonard Richardson
Connection to Lab

Chapter 3 is the theoretical foundation for everything in Act 1. Fielding's constraints define what makes a good REST API. The Bezos mandate shows why API-first matters. Richardson's maturity model is the scorecard you're measured against. Every level in Act 1 is building toward Level 2 maturity.

Hello, API WorldThe CRUD MasterStatus Code SymphonyPage Turner
Chapter 42006 - 2015

The API Economy

When APIs stopped being plumbing and became products worth billions

The driving question:“What happens when your API becomes more valuable than your UI?”
9 min read6 milestones
2007Blaine Cook, Chris Messina, et al.

Before OAuth, if a third-party app wanted to access your Twitter account, you gave it your password. The app stored your actual credentials. If the app got hacked, attackers had your password. If you wanted to revoke access, you had to change your password - which broke every other app that had it. OAuth solved this by introducing delegated authorization. Instead of sharing your password, you authorize the app through Twitter directly, and the app receives a token - a limited, revocable credential that proves you authorized it. OAuth 1.0 used cryptographic signatures (HMAC-SHA1) for every request, making it secure but painful to implement. Developers had to sort parameters, construct signature base strings, and manage nonces. The complexity was real, but the principle - delegated access without sharing credentials - became the foundation of API security.

Read the deep dive on our blog

Key Insight: OAuth is the #1 API security question in system design interviews. Understand the core flow: user approves access, app gets a token, token has limited scope and lifetime. The distinction between authentication (who are you?) and authorization (what can you do?) is fundamental. OAuth handles authorization. OpenID Connect adds authentication on top.

2007Jeff Lindsay

Jeff Lindsay coined the term "webhooks" to describe a pattern that flipped the API model: instead of the client polling the server repeatedly ("any new data? any new data? any new data?"), the server calls the client when something happens. You register a callback URL, and the server POSTs event data to it when a relevant event occurs. Payment completed? Webhook. New commit pushed? Webhook. Order shipped? Webhook. This was the first widely-adopted pattern for event-driven APIs over HTTP. Webhooks were simple to understand and implement - just handle an incoming POST request. But they introduced new challenges: What if the receiving server is down? How do you verify the webhook is really from the sender and not an attacker? How do you handle duplicate deliveries? Retry policies, HMAC signatures, and idempotency keys all emerged as solutions to webhook reliability problems.

Read the deep dive on our blog

Key Insight: Webhooks are the bridge between synchronous REST APIs and event-driven architecture. Every payment system, CI/CD pipeline, and integration platform uses them. In your interviews, know the three reliability challenges: delivery guarantees (retry with exponential backoff), authenticity verification (HMAC-SHA256 signatures), and idempotent processing (handle the same event twice without side effects).

2008Jeff Lawson, Evan Cooke, John Wolthuis
2011Patrick & John Collison
2011Tony Tam (Wordnik)
2012IETF (Dick Hardt, et al.)
Connection to Lab

Chapter 4 is where APIs became products - and production APIs need production-grade patterns. Act 2 takes you through the exact patterns that Stripe, Twilio, and Twitter pioneered: rate limiting with proper headers, caching with ETags, webhook delivery with HMAC signing, and idempotency keys for safe retries.

Rate Limit FortressThe Cache ArchitectThe Webhook WireIdempotency Shield
Chapter 52012 - 2019

The Graph Query

Facebook's mobile app was dying from REST over-fetching, so three engineers reinvented how clients ask for data

The driving question:“What if the client could ask for exactly the data it needs - no more, no less - in a single request?”
9 min read6 milestones
2012Facebook Engineering

In 2012, Facebook's mobile app was a disaster. It was built as a web app wrapped in a native shell, and it was painfully slow. Mark Zuckerberg called HTML5 on mobile "one of our biggest mistakes." The company rewrote the app natively, but a deeper problem emerged: the REST APIs serving the desktop website were terrible for mobile. A single News Feed screen required dozens of REST calls - one for the post, one for the author, one for the comments, one for the likes, one for the shared content. Each call returned far more data than the mobile app needed (the API was designed for the feature-rich desktop site), and the round trips over slow 3G connections made the app feel broken. This wasn't a REST problem per se - it was a mismatch between REST's resource-oriented model and mobile's need for highly-customized, minimal data payloads. The solution required rethinking the API paradigm entirely.

Read the deep dive on our blog

Key Insight: Over-fetching (getting too much data) and under-fetching (needing multiple requests to assemble a view) are the two fundamental problems that GraphQL was designed to solve. In system design interviews, these are the trigger words: "the client needs data from multiple resources" or "mobile clients need different fields than web clients." That's when you reach for GraphQL.

2012Lee Byron, Dan Schafer, Nick Schrock

Lee Byron, Dan Schafer, and Nick Schrock created GraphQL inside Facebook to solve the mobile data fetching problem. The core insight was revolutionary: instead of the server defining fixed response shapes through endpoints, let the client specify exactly what it wants using a query language. A mobile app that only needs the user's name and avatar sends: { user(id: "123") { name, avatarUrl } }. A desktop app that needs the full profile sends a different query to the same endpoint. One endpoint, infinite response shapes, zero over-fetching. GraphQL introduced a type system where every field, argument, and return value has a declared type. The schema is both documentation and validation - the server knows exactly what queries are valid and rejects malformed requests before executing them. This was the type safety that REST APIs never had, without the ceremony of WSDL. Internally at Facebook, GraphQL served over 100 billion API requests per day within two years of adoption.

Read the deep dive on our blog

Key Insight: GraphQL's schema-first approach means the API contract is the schema. Unlike REST where the contract lives in documentation that can drift from reality, GraphQL's schema is enforced at runtime. The schema IS the validation, documentation, and type system. When you define types in Act 3, you're building a contract that's impossible to violate.

2015Facebook (Lee Byron)
2016Geoff Schmidt, Matt DeBergalis (Meteor Development Group)
2017GraphQL Working Group
2019Apollo (James Baxley, Martijn Walraven)
Connection to Lab

Chapter 5 traces GraphQL from Facebook's mobile crisis to enterprise-scale federation. Act 3 takes you through the same journey: defining schemas, writing mutations, implementing Relay-style pagination, and composing federated subgraphs. Every level builds on the historical decisions this chapter explains.

Schema GenesisMutation StationRelay ConnectionsSchema Federation
Chapter 62001 - 2019

The Binary Wire

Google's internal infrastructure was too fast for JSON - so they built a protocol where bytes are measured, not wasted

The driving question:“What if API calls between services were as fast as function calls within a process?”
9 min read5 milestones
2001Google (Jeff Dean, Sanjay Ghemawat, et al.)

By 2001, Google was running into a problem that most companies hadn't experienced yet: JSON and XML were too slow. When you're making billions of inter-service calls per day, the CPU time spent parsing text-based formats and the bytes wasted on field names in every message add up to entire data centers worth of compute. Google's solution was Protocol Buffers (protobuf): a binary serialization format where data is encoded as numbered fields with type tags. Instead of {"user_name": "Alice", "age": 30} (31 bytes of text with redundant field names), protobuf encodes the same data in ~10 bytes of binary. You define message structures in .proto files, and the protobuf compiler generates serialization code in your target language. The generated code is zero-copy where possible and avoids reflection entirely. Parsing a protobuf message is 10-100x faster than parsing the equivalent JSON. Google open-sourced Protocol Buffers in 2008, but they'd been running on protobuf internally for seven years by then.

Read the deep dive on our blog

Key Insight: Protobuf's field numbering system is one of the most elegant API versioning mechanisms ever designed. Each field has a number (not a name) on the wire. You can add new fields (with new numbers) and old clients just skip unknown fields. You can remove fields and old messages just have empty values for the missing numbers. This backward and forward compatibility is why gRPC can evolve services without breaking clients.

2004Google

Stubby was Google's internal RPC framework - the system that every Google service used to talk to every other Google service. It was built on top of Protocol Buffers and designed for Google's internal network, where latency between data centers was measured in microseconds and reliability was handled by the infrastructure. Stubby handled load balancing, failover, monitoring, and tracing across Google's entire fleet. By 2010, Google was processing over 10 billion Stubby RPC calls per second across its infrastructure. Stubby proved that RPC at massive scale was not only possible but necessary - the overhead of REST (text parsing, connection management, header processing) was measurable at Google's scale. But Stubby was tied to Google's internal infrastructure, its proprietary transport protocol, and its specific deployment model. Making it work outside Google required rethinking the transport layer from scratch.

Read the deep dive on our blog

Key Insight: Stubby's 10 billion RPCs per second is the proof that RPC performance matters at scale. For internal microservice communication where both client and server are in your control, binary RPC outperforms REST significantly. The decision isn't REST vs. RPC - it's "who calls this API?" Internal services justify RPC overhead. External developers need REST simplicity.

2015IETF (Mike Belshe, Roberto Peon, Martin Thomson)
2015Google
2016Matt Klein (Lyft)
Connection to Lab

Chapter 6 covers the evolution from Google's internal Stubby to open-source gRPC. In Act 4, you'll define Protocol Buffer messages, design multi-service RPC contracts, implement all four streaming patterns, and handle deadline propagation across service chains - exactly the problems that gRPC was built to solve.

Proto OriginsService ContractsStream EngineDeadline Chains
Chapter 72003 - 2022

The Async Awakening

Not every conversation is a question that needs an immediate answer - sometimes you just need to announce that something happened

The driving question:“What if services communicated through events instead of direct calls - fire and forget, with guarantees?”
9 min read6 milestones
2003John O'Hara (JPMorgan Chase)

JPMorgan Chase spent $200 million per year on proprietary messaging middleware from IBM (MQ Series) and TIBCO. John O'Hara proposed something radical: an open standard for message-oriented middleware. The Advanced Message Queuing Protocol (AMQP) defined a wire protocol for message brokers - exchanges, queues, bindings, and routing rules. Unlike JMS (Java Message Service), which was a Java API without a wire protocol, AMQP was language-agnostic from the start. A Python publisher could send messages through a RabbitMQ broker to a Java consumer. AMQP introduced exchange types that became messaging fundamentals: direct (point-to-point), fanout (broadcast to all), topic (pattern-based routing), and headers (metadata-based routing). RabbitMQ, the most popular AMQP broker, handles billions of messages daily across industries. AMQP proved that asynchronous communication between services was not just possible but often superior to synchronous HTTP calls.

Read the deep dive on our blog

Key Insight: AMQP's exchange types map directly to API design patterns: direct exchanges are like POST to a specific endpoint, fanout is like broadcasting webhooks to all subscribers, and topic exchanges are like filtered event subscriptions. Understanding these routing patterns is essential for designing event-driven systems in Act 4.

2011Jay Kreps, Jun Rao, Neha Narkhede (LinkedIn)

LinkedIn needed to process billions of events per day - page views, profile updates, job applications, connection requests - and traditional message brokers couldn't keep up. Jay Kreps, Jun Rao, and Neha Narkhede built Kafka around a deceptively simple idea: a distributed, append-only commit log. Producers append messages to topic partitions. Consumers read from those partitions at their own pace, maintaining their own position (offset) in the log. Messages aren't deleted after consumption - they're retained for a configurable period (days, weeks, forever). This meant multiple consumers could read the same messages independently, at different speeds, for different purposes. One consumer populates a search index. Another feeds a real-time dashboard. A third trains a machine learning model. All from the same stream of events. Kafka wasn't a queue (messages aren't deleted after reading) or a database (it's append-only). It was a new category: a distributed streaming platform. Today, over 80% of Fortune 100 companies run Kafka in production.

Read the deep dive on our blog

Key Insight: Kafka's commit log model changed how we think about data flow. Instead of services calling each other directly (temporal coupling), they publish events to Kafka and consume independently (temporal decoupling). When you design event-driven systems in Act 4, Kafka's "log as the source of truth" pattern is the foundation for event sourcing, CQRS, and saga orchestration.

2014Greg Young, Martin Fowler
2017Fran Mendez
2018CNCF (Cloud Native Computing Foundation)
2019Chris Richardson, Microservices Patterns
Connection to Lab

Chapter 7 covers the evolution of asynchronous communication from AMQP to Kafka to event sourcing. Act 4 puts you in the driver's seat: designing domain events, implementing CQRS with separate read/write models, building idempotent consumers, and handling dead letter queues for poisoned messages.

Event StormCQRS Command CenterExactly OnceDead Letter Detective
Chapter 82018 - Present

The Convergence

The protocol wars are over - modern systems speak REST, GraphQL, gRPC, and events simultaneously, and the architecture layer that unifies them is the final frontier

The driving question:“How do you design a single platform that speaks REST to external developers, GraphQL to frontend teams, gRPC between microservices, and events for async workflows?”
9 min read5 milestones
2015Various (Netflix Zuul, AWS API Gateway, Kong)

As microservices architectures grew from a handful to hundreds of services, exposing each service directly to clients became unmanageable. API gateways emerged as the "front door" - a single entry point that handles routing, authentication, rate limiting, and protocol translation. Netflix's Zuul handled request routing for their streaming platform. AWS API Gateway made the pattern available as a managed service. Kong, built on NGINX, became the most popular open-source option. The gateway pattern separated cross-cutting concerns from business logic. Individual services didn't need to implement authentication, rate limiting, or request logging - the gateway handled it uniformly. This was the ESB pattern done right: thin middleware that routes and validates, without owning business logic. The gateway also enabled protocol translation - accept REST from external clients, convert to gRPC for internal services, and the client never knows.

Read the deep dive on our blog

Key Insight: API gateways are the answer to "how do external clients talk to your microservices?" Never expose internal services directly. The gateway handles auth (validate JWTs), rate limiting (per-client quotas), protocol translation (REST to gRPC), and request aggregation (fan-out to multiple services). In Act 5, you'll design exactly this architecture.

2018Sam Newman, Phil Calçado (SoundCloud)

Different clients need different APIs. A mobile app needs minimal, aggregated responses to minimize data transfer. A desktop web app needs rich, detailed responses for feature-dense UIs. An admin dashboard needs raw, unprocessed data for analytics. The Backend-for-Frontend (BFF) pattern gives each frontend its own dedicated API layer. The mobile team owns a Mobile BFF that aggregates and slims down responses from microservices. The web team owns a Web BFF that composes data for complex UI components. Each BFF is owned by the frontend team that uses it - they control the API contract and can evolve it at their own pace. SoundCloud pioneered this pattern when their single API couldn't serve both their website and mobile apps efficiently. Phil Calçado documented the pattern, and Sam Newman popularized it in his microservices book. The BFF pattern acknowledges a truth REST tried to ignore: different clients have different needs, and pretending one API fits all is a design compromise.

Read the deep dive on our blog

Key Insight: BFF vs. GraphQL is a common interview question. BFFs give each frontend a custom API layer with full control. GraphQL gives clients query-level flexibility from a single endpoint. BFFs add operational overhead (more services to deploy). GraphQL adds query complexity (depth limiting, cost analysis). For 2-3 client types, BFFs are simpler. For many diverse clients, GraphQL is more efficient.

2021Alex "KATT" Johansson
2022OpenAI
2023Industry Evolution
Connection to Lab

Chapter 8 is where everything converges. Act 5 challenges you to design complete systems that use multiple protocols: gateways that route between REST and gRPC, BFF layers for different clients, Stripe-scale payment APIs, and the ultimate challenge - a multi-protocol architecture that speaks REST, GraphQL, gRPC, and events simultaneously.

Gateway ArchitectBFF WorkshopDesign a Payment APIThe Grand Unified API

The Full Picture

How every chapter connects to what you build in the lab.

1960s-1990
Before APIs, distributed computing meant CORBA, DCOM, and broken dreams
1991-1999
HTTP gave machines a shared language - headers, status codes, and verbs
1998-2006
SOAP built a cathedral of XML specs, and developers walked away
2000-2008
REST said: the web already works - just build APIs the same way
2006-2015
Stripe, Twilio, and OAuth turned APIs into billion-dollar products
2012-2019
GraphQL let clients ask for exactly the data they need
2001-2019
gRPC brought Google-scale binary RPC to the open-source world
2003-2022
Kafka, event sourcing, and sagas replaced synchronous calls with event streams
2018-Now
The protocol wars ended - modern systems speak all four protocols simultaneously

You know the history. Now design the protocols.

Every breakthrough you just read about is an API challenge waiting for you in the lab. Start designing APIs that stand on 55 years of protocol evolution.

Discussion0

Join the Discussion

Sign in to leave comments, reply to others, or like insights.

Sign In to ScaleDojo

No comments yet. Be the first to start the thread!

Enjoyed this content?

Your support keeps us creating free resources

We put a lot of hours into researching and writing these guides. If it helped you, consider buying us a coffee. Every bit goes toward keeping ScaleDojo's content free and growing.

$

One-time payment via Stripe. ScaleDojo account required.

ScaleDojo Logo
Initializing ScaleDojo