Gergely Orosz · 25 min read · Product Strategy
Designing Data-Intensive Applications: The Cloud & Doing the Right Thing
Read the original on newsletter.pragmaticengineer.com →
An excerpt from the updated edition of Designing Data-Intensive Applications discusses cloud versus self-hosting tradeoffs and how to approach ‘doing the right thing’ as a software engineer. It emphasizes build-vs-buy decisions, core competencies, and deployment choices for resilient, data-heavy systems in today’s cloud-centric landscape.
Key Takeaways
- Cloud vs self-hosting tradeoffs should be guided by whether a capability is core to your business and competitive advantage.
- Treat software deployment on a spectrum from bespoke in-house to open-source self-hosted to vendor-provided SaaS, considering tools like Kubernetes.
- Use the build vs buy framework to decide who builds and who deploys what, mapping to core vs non-core priorities.
- Cloud adoption involves balancing reliability, control, cost, and operational burden.
- The updated edition reflects cloud-era realities for data-intensive systems, updating the maps from the 2016 edition.
Excerpt
In 2016, Martin Kleppmann published ‘Designing Data-Intensive Applications’, which quickly became a go-to book for those of us building backend applications and distributed systems. In it, Martin combined his experience as a startup founder with observations from his time at LinkedIn, and invested years of rigorous, fulltime research in the title. Nine years later, he felt the time was ripe for an updated edition, with cloud computing much more widespread than in 2016. So, Martin teamed up with software engineer and investor, Chris Riccomini , a former colleague at LinkedIn and the author of The Missing README , for a…