DDIA Chapter 1 (Book Log)

aboh Israel
2 min readAug 6, 2024

--

Joined a book club, and we started reading Designing Data Intensive Applications. I’ve wanted to join a book club for a while now and also had DDIA as part of the books I needed to read this year. 2 birds 1 stone ~ Joined a fantastic book club and also get to read DDIA as my first book.

“This book is a journey through both the principles and the practicalities of data systems, how you can use them to build data-intensive applications”, need any more nudge to pick up this book if you haven’t ?

Hopefully I’m committed to blogging about each chapter we cover and possible links.

Chapter 1: Reliable, Scalable & Maintainable Applications

Chapter 1 starts with a clear distinction between data-intensive and compute-intensive.

“Many applications today are data-intensive, as opposed to compute-intensive”. Apparently over the years, the amount of data needed to be stored, retrieved and processed has significantly increased. In a lot of the technologies we use today, there’s some sort of storage attached to it, databases, caches, search indexes & stream processing etc all store data.

Most data systems are a successful abstraction. They possess different characteristics suitable for the job at hand. In this video, Hannes Mühleisen goes through a summary of data systems in the last decades.

“In this chapter, we will start by exploring the fundamentals of what we are trying to achieve: reliable, scalable, and maintainable data systems.”

Let’s define Reliability, Scalability and Maintainability

Reliability, the system should continue to work correctly ( perfoming the correct function at the desired level of performance) even in the face of adversity. When something is reliable, this should typically mean trusting it’s correctness and it has good quality.

Scalability, as the system grows in volume, we should have reasonable ways of dealing with that growth. Software engineering at scale is so much different. You start to think about performance engineering, architecture, bottle necks, trade-offs etc.

Maintainability, over time many different people would work on the system, they should be able to work on it productively. I do think to build a system that is highly maintainable, a lot of design guidelines, coding principles have to be set. Working with systems that are a pain to maintain can be a productivity drainer. And this is often the case with systems that aren’t properly planned, no reviews, no future thoughts of what the system could grow into.

Links to look at:

How not to measure latency, we want to focus more on percentiles not mean.. cause mean is mean (pun intended).
https://www.youtube.com/watch?v=lJ8ydIuPFeU

Why Percentiles Don’t Work the Way You Think — Orange Matter (solarwinds.com)

Everything You Know About Latency Is Wrong — Brave New Geek

They’re a couple of more interesting links & articles you’d find in the book. Looking forward to more chapters and Book logs.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

aboh Israel
aboh Israel

Written by aboh Israel

Software Engineer, Curious about Technology, the Universe and Humans

No responses yet

Write a response