Engineering Decision Guides
Side-by-side comparisons of competing approaches, with the criteria that matter, when to choose each option and a clear verdict.
API Gateway vs BFF vs Service Mesh
Where should cross-cutting concerns and client-specific logic live?
At-Most-Once vs At-Least-Once vs Effectively-Once
What delivery guarantee do you need, and how do you get it?
Atomic Update vs Pessimistic vs Optimistic Locking
How should concurrent writes to the same data be controlled?
Build vs Buy vs Open Source
Should your team build this capability, buy it, or adopt open source?
Cache-Aside vs Read-Through vs Write-Through vs Write-Behind
Which caching pattern fits this data?
Choosing a Transaction Isolation Level
Which isolation level should this transaction run at?
Choreography vs Orchestration
How should services coordinate a multi-step business process?
Circuit Breaker and Resilience Libraries by Stack
Which resilience library should you use in your stack (or should the mesh do it)?
Event Sourcing vs CRUD + Audit Log vs CDC
How should you capture history and publish changes?
Full Sync vs Delta Sync vs CRDTs
How should a mobile or offline-first app synchronize data with the server?
Hash vs Range vs Directory Sharding
How should data be split across database shards?
Hosted Checkout vs Embedded Fields vs Direct API
How should your product integrate card payments with a PSP?
Kafka vs RabbitMQ vs SQS vs Redis Streams
Which message broker fits your workload?
Offset vs Cursor vs Keyset Pagination
How should a collection endpoint paginate?
OpenAPI vs AsyncAPI vs Protobuf
Which contract format should describe your API?
Polling vs Push vs Persistent Connections for Mobile
How should a mobile app learn about server-side changes?
Polling vs Webhooks (vs Streaming)
How should clients learn that something changed on your server?
Rate-Limit Algorithms Compared
Which rate-limiting algorithm should you implement?
REST vs GraphQL vs gRPC
Which API style should you use for a new API?
Retry Strategies Compared
How should clients retry failed calls?
Rewrite vs Incremental Refactor vs Strangler Fig
How should you deal with a legacy system that slows the team down?
Scaling Reads: Cache, Replicas or Read Models?
Reads are overloading the database — where should they go?
Sessions vs JWT vs Opaque Tokens for Mobile Apps
What kind of credentials should a mobile app hold?
Staff Engineer vs Tech Lead vs Team Lead vs Engineering Manager
Which senior path fits what you want to spend your days on?
Story Points vs Throughput Forecasting vs No Estimates
How should your team estimate and forecast delivery?
Streaming vs Synchronous vs Batch LLM Calls
How should your application call an LLM for a given feature?
Strong vs Eventual Consistency
Which consistency guarantee does each part of your system need?
Team Structures: Stream-Aligned vs Component vs Platform Teams
How should you organise engineering teams?
Temporal vs Step Functions vs Queue + State Machine
What should run your long-running business workflows?
TTL vs Delete-on-Write vs Event-Driven Invalidation
How should cached data be kept fresh?
URL vs Header vs Date-Based API Versioning
How should you version an API when breaking changes are unavoidable?
WebSockets vs SSE vs Long Polling vs Webhooks
How should your system push updates in real time?
Where to Store Idempotency Keys
Database, Redis or both — where should idempotency records live?