S3 Gateway Core: XML, Buckets, Objects, Lists
The S3 gateway: SigV4, S3-compliant XML errors, Head/List/Copy, pagination, ranges, and metadata β a compatible API surface for real clients.
The S3 gateway: SigV4, S3-compliant XML errors, Head/List/Copy, pagination, ranges, and metadata β a compatible API surface for real clients.
Envelope encryption with a client-held key: the server stores ciphertext and canβt read it β across S3 and native transports.
Momoβs transport layer grew from TCP to a QUIC/TLS 1.3 fan-out β fixing handshake, ACK framing, deadlines, and TLS identity along the way.
A 76-deep audit (authed via Sentinel) surfaced CRLF injection, smuggling, traversal and path leaks β the pattern that forged momoβs security mindset.
The [storage] backend seam swaps blob storage (local, nfs, s3, raw) behind one Store interface, keeping CAS metadata local.
Weighted rendezvous hashing picks replicas deterministically and peer-equally without a central allocator β later hardened for failure domains. Teaches: content-hash-based placement, weighted rendezvous hashing, deterministic stable sort, failure domain filtering.
Chain, Splay, and Primary-Splay replication β and the metrics-driven controller that switches between them at runtime.
Identify every object by its SHA-256 content hash β server-side dedup, verify-on-read, and a path that later mounted a filesystem. Teaches: content addressing principles, single write chokepoint, Bolt/Sentinel patterns.
A scaleless-gossip ring: SWIM-style failure detection, discovered-peer dialing, and ALIVE/OFFLINE restoration β momoβs nervous system.
How momo started as a file-replication playground in Go and grew into a distributed content-addressed object store.