design·lab

DevOps & platform

Build vs Buy — use OSS & managed services

This site teaches how these systems work under the hood — but in production you usually don't hand-code them; you pick a mature open-source or managed product that already does.

✗ Problem

The temptation to build everything yourself

It's tempting to roll your own message broker, cache, search engine, or auth system — "how hard can it be?" It's harder than it looks, and it isn't your product.

// "We'll just build our own message broker…"
class MyBroker {
  publish(topic, msg)  { /* retries? ordering? */ }
  subscribe(topic, fn) { /* backpressure? */ }
  // + persistence, replication, dead-letter queues,
  // exactly-once delivery, auth, monitoring…
  // six months later: a worse, buggier Kafka.
}
Reinventing battle-tested infrastructure costs months, ships subtle bugs — especially in auth and distributed systems — and isn't where your product earns its value.
✓ The principle

Build your differentiator. Buy the commodity.

Build what makes your product unique. Buy — as a managed service or self-hosted OSS — the "undifferentiated heavy lifting" everyone needs.

Managed service
a vendor runs it
Self-hosted OSS
you run it
Build from scratch
last resort
  • Core? is it our product's differentiator, or commodity plumbing?
  • Reliability — battle-tested at scale vs. our own edge cases
  • Ops burden — who's on call when it breaks at 3am?
  • Total cost — engineering time to build+maintain vs. fees
  • Lock-in — can we migrate away later if we need to?
  • Compliance — vendor already has the certifications we need
  • Time-to-market — ship in days, not months
✓ See it live

What do you need? Pick one.

Click a need. See the concept lesson on this site, the popular products that already implement it, and the verdict.

Pick a need above ↑ to see what already solves it.
✓ Takeaway

Learn the concept. Let a product run it.

  • Don't reinvent commodity infrastructure — queues, caches, search, auth, storage, workflow, observability all have mature answers already.
  • Prefer the order: managed service → self-hosted OSS → build from scratch (only when nothing fits).
  • Build your unique domain logic — that's the one thing no vendor can sell you.
  • Learning the concepts — this whole site — is what lets you pick, configure, and debug the products you buy, instead of using them blindly.
  • It's YAGNI + DRY applied at ecosystem scale: don't build what already exists and is already shared.
  • Caution: watch cost-at-scale, vendor lock-in, and the rare case where no product actually fits your constraints.