Designs by Duhart ← All infographics

Designs by Duhart · /srv platform

What is in here, and who calls whom

Three client platforms, ten edge Workers, thirteen origin services, four datastore families. The interesting line in this diagram is the one that cannot exist — the edge cannot open a TCP socket, so everything below Kafka and Cassandra has to live on the host.

Service topology across clients, edge, origin and data tier iOS, Android and web clients call ten Cloudflare Workers and, over WebSocket and HTTP, a set of Go origin services. The Workers reach D1, R2, KV and Durable Objects directly and reach Postgres through Hyperdrive, but cannot reach Kafka or Cassandra; those are reached only from the origin host, where GlobalChatService, MatchService, the gateway trio, AuthGateway and BillboardActivityService run. CLIENTS iOS · TheOne611K lines Swift · 13 modes Android · Compose19 modules Web · Next.jsevery product mode 24 protobuf contracts→ Go + Swift + TypeScript CLOUDFLARE EDGE — 10 WORKERS · NO TCP SOCKETS billboard-users boxoffice-api global-upload global-search storefront explore rpc-worker billboard-edge EDGE STORAGE D1 · R2 · KV · Durable Objects IngestDO — single-writer upload sessions JamzFingerprintDO — kissfft.wasm FFT Hyperdrive → Postgres pooled connections for a serverless caller outbox relay the only way past the socket wall ORIGIN HOST — GO SERVICES GlobalChatService26,176 lines · WSS + HTTPchat, presence, calling, push MatchService33,638 lines · rankinggeohash-partitioned decks BillboardActivityServicerelay + 3 consumer groupsthe activity graph AuthGatewaygRPC / Connect · RS256identity, ACL, billing, mode-sync Gateway trio — 48,582 linesbillboard · dating · mating WebSocket gateways GlobalCloudflareAdapteredge ⇄ Kafka / Redis / KV bridge OpenHouseGlobal7 CQL migrations GlobalOneSupporttickets, staff API also: BillboardGateway · BoxOfficeGateway · DatingGateway · GlobalFeedManager · GlobalOneStorefrontGateway DATA TIER — HOST-RESIDENT ONLY Cassandra 4.1.3chat, match cards, feed timeline Kafkaactivity log, gateway events Redis + Streamspresence, sessions, feed index PostgreSQLoutbox, notifications, profiles
call / dependency the outbox — the only path across the socket wall zone boundary
The constraint that shaped the architecture

Cloudflare Workers cannot open raw TCP sockets — not with a library, not with a shim. The Kafka wire protocol and CQL are therefore permanently unreachable from the edge, no matter how the code is written.

Two consequences run through this whole map. First, every consumer of the activity log lives on the origin host, reached through a transactional outbox rather than a direct produce. Second, GlobalCloudflareAdapter exists at all: it terminates Kafka, Redis and KV host-side and re-exposes them over HTTP so the edge can still participate.

Origin services by size

ServiceLanguageLinesTalks to
Gateway trio (billboard / dating / mating)Go48,582Kafka, Cassandra, WebSocket clients
MatchServiceGo33,638Cassandra/Scylla, Redis Streams, Kafka
OpenHouseGlobalTypeScript29,453Cassandra (7 CQL migrations)
GlobalChatServiceGo26,176Cassandra, Redis, Kafka, S3, APNs
billboard-users (Worker)TypeScript10,581D1, Hyperdrive→Postgres, 2 DOs · 65 routes
GlobalCloudflareAdapterGo7,855Kafka, Redis, KV — as an HTTP bridge
Solomon retrieval tierGo4,757Kafka, vector index, HTTP fetchers
BillboardActivityServiceGo977Postgres outbox, Kafka, Cassandra

AuthGateway is excluded from the ranking above because its 100,771-line figure includes generated protobuf stubs; the hand-written surface is far smaller. Counting generated code as authored code is the easiest way to make a portfolio dishonest.