GO LEARNING PATH · 9 LESSONS
Architecture: consistency and evolution
Transactions, outbox/inbox, sagas, compatible changes, tenant isolation and observability.
A use case owns its transaction, not its HTTP handler
Keep the business invariant and transaction boundary in the application service.
3 min · Worked lesson
Outbox and inbox: close the database–broker gap
Commit a business change and its publication intent together, then deduplicate delivery.
3 min · Worked lesson
Sagas: compensate business steps without pretending to roll back time
Model a distributed workflow as durable states with explicit compensation and recovery.
3 min · Worked lesson
Evolve APIs, events and schemas across mixed deployments
Use expand–migrate–contract changes while old and new Go processes coexist.
3 min · Worked lesson
Tenant isolation belongs in every access path
Carry a verified tenant identity into storage predicates, cache keys and background jobs.
3 min · Worked lesson
Observe a Go use case without drowning in cardinality
Connect structured logs, bounded metrics and traces to an explicit service objective.
3 min · Worked lesson
gRPC and Protobuf: generated methods still need an operational contract
Define deadlines, stream ownership, status mapping and compatible message evolution.
3 min · Worked lesson
Kafka-style consumers: commit only a contiguous completed prefix
Separate message delivery, durable effects and partition-offset ownership.
3 min · Worked lesson
Consistency under partitions: explain an operation, not a slogan
Choose per-operation consistency and failure behavior instead of treating CAP as a product rating.
3 min · Worked lesson