Common cloud-integration anti-patterns
What goes wrong, and what good looks like. After Adrian Cockcroft's 2012 Netflix patterns — the anti-patterns are timeless even though the slides aren't.
| Anti-pattern | Why it bites | Counter-pattern |
|---|---|---|
| ! Central SQL DB as system of record | Single point of failure · scaling ceiling | ✓ Distributed K/V or document store · SQL where consistency truly matters |
| ! Sticky in-memory sessions | One node down = users logged out | ✓ Externalize sessions to a cache (Redis, Memcached) |
| ! Chatty protocols between services | Latency adds up across the wire | ✓ Coarse-grained, latency-tolerant APIs |
| ! Tangled service interfaces | Everything depends on everything else | ✓ Clear contracts · SAL/ESL or API gateway pattern |
| ! Fat objects in serialization | Slow, brittle, hard to evolve | ✓ Lightweight, versioned messages |
| ! Components shipped as JARs / DLLs | Coupled deploys · change ripples | ✓ Components as services with own deploy lifecycle |
| ! Production-only environments | Can't test changes without risk | ✓ dev / staging / prod isolation, ideally separate accounts |
Datacenter implementation leaks into business logic — raw SQL queries inside services.
Deep dependencies — A calls B which calls C which calls A.
Data providers with sideways dependencies.
// hits productivity (changes ripple) and availability (one failure cascades)
Two-layer interface: thin SAL + richer ESL.
SAL = serialization, error handling, REST/POJOs.
ESL = caching, conveniences, can compose multiple SALs.
// interface defined by the consumer, not the producer
~15 min · pairs
E-commerce app: monolith on EC2 talking to a single Oracle RDS, sessions stored in JVM heap, uploads written to local disk. One environment. SSH keys live in a shared password manager.
- Which anti-patterns from the table do you see?
- Which Well-Architected pillar does it violate most?
- What would you change first if you had budget for one thing?
A team's microservices each issue ~50 small RPC calls per request, all crossing AZ boundaries. Customer-facing latency is 1.5 seconds. Which anti-pattern is dominant?
// pick one to verify