Designs by DuhartAll work
Rank
2 of 28
Tier
Tier S 106 of 120

2 — GlobalChat Realtime Messaging Service

Rank 2 of 28 · Tier S · app/GlobalChatService Stack: Go 1.25, Cassandra 4.1.3 (gocql + gocqlx), Redis, Kafka (IBM/sarama), gorilla/websocket, chi, Prometheus, APNs, AWS S3 Status: Deployed under systemd on the origin host. Schema migrates on boot. Runbook written.

Why this ranks here. It is the other half of the systems-design canon: a stateful realtime service. Connection lifecycle, presence, ordering, delivery, backpressure, fan-out, and a storage layer whose partition design you have to defend. 26K lines of Go with 29 test files including benchmarks and dedicated race tests.


What it is

A single Go service carrying every messaging surface of a multi-mode consumer platform: 1:1 chat, groups, communities, channels, presence, typing, reactions, edits/deletes, view-once media, live location, voice transcription, link previews, push, and WebRTC call signaling.

Architecture

Clients (iOS · Web · Android)
   │  wss://…/ws                      HTTPS
   ▼                                    ▼
WSSServer (gorilla/websocket)      HTTPServer (chi + CORS)
   │                                    │
   └──────────────┬─────────────────────┘
                  ▼
         event_router · session_manager
                  │
     ┌────────────┼───────────────┬──────────────┐
     ▼            ▼               ▼              ▼
 Cassandra      Redis           Kafka          S3
 (messages,   (presence,     (push consumer,  (media)
  history)     sessions)      cross-service)
                  │
                  ▼
            APNs / push sender

The engineering that matters

Connection and session layer

wss.go, session_manager.go, presence.go — connection registry, presence TTL, session adoption. The WebSocket hub is benchmarked (wss_bench_test.go) and batch-tested (wss_batch_test.go), not just unit-tested.

Storage layer

cass.go builds the Cassandra session with TLS and x509 trust, wrapped in gocqlx. Conversation identity is its own module (conversationid.go) with its own test — because a conversation id that is derived inconsistently across services silently splits a chat in half.

Contract discipline

api/openapi.yaml + api/asyncapi.yaml with shared component schemas, and an asyncapi_coverage_test.go that fails the build when the implementation and the async contract drift. That test is the artifact to point at when a bank asks how you keep services honest.

Concurrency correctness

Named, dedicated tests: calling_race_test.go, typing_test.go, edit_delete_test.go, integration_loop_test.go, integration_cassandra_test.go. Race conditions in this service were treated as first-class defects with reproductions, not as flakes.

Observability

metrics.go + metrics_render_test.go + pprof.go. Prometheus surface, and a test that the rendering itself is correct.

Scope

MetricValue
Go source26,176 lines, 77 files
Test files29, including benchmarks and race tests
Feature modules~40 (service/*.go)
DatastoresCassandra, Redis, Kafka, S3
ContractsOpenAPI + AsyncAPI, CI-checked for coverage
Deploymentsystemd unit + docker-compose local bring-up + RUNBOOK.md

Interview surface this opens