System Design

Systems

Grit is not one system. It is around thirty of them sharing a process: the thing that decides who you are, the thing that decides what you may touch, the thing that holds a queue, the thing that keeps a cache honest.

The rest of the documentation explains how to use each one. These pages explain how each one is built and why, in the order a system design question asks: the problem, the requirements, the numbers, the architecture, the data, the API, the types, the scaling, and what breaks first.

Every page describes what is actually built, at the version you are reading. Where a number is an estimate it says what it was estimated from, so you can change an assumption and redo the sum for your own traffic.

Identity

Who the caller is, and how they prove it.

Access

What that caller is allowed to touch, and what stops them touching the rest.

Data

Where the application state lives, how it changes, and how it stays correct.

Delivery

Getting work out of the request path and getting results back to the client.

Operations

Knowing what the system did, and being able to say so afterwards.

Platform

The parts that generate, migrate and run everything above.

26 systems documented.