Skip to content
Course contents

What Makes a System Data-Intensive

Reliability, scalability and maintainability, defined precisely enough to argue about — and to measure.

5 lessons1 lab1 hr 18 min

What you will be able to do

  • Tell a fault apart from a failure, and explain why a system that tolerates faults has to cause them deliberately
  • Describe the load on a system with a number that would actually change your design if it doubled
  • Read a latency distribution correctly, and explain to a colleague why the mean is the wrong summary
  • Say what "this system is maintainable" means in terms someone can verify

Most software is limited by how much data it handles, how complicated that data is, and how fast it changes — not by how much arithmetic it does. That is what data-intensive means, as opposed to compute-intensive, and it describes almost everything you will be paid to build.

The vocabulary in this module — reliability, scalability, maintainability — is so worn from overuse that it has nearly stopped meaning anything. Half of this module is spent putting the meaning back, because you cannot design for a property you cannot state precisely, and you certainly cannot tell whether you achieved it.

It is a short module and there is no code in it. Do not skip it. Every argument in the three modules that follow is settled by an appeal to one of these three words, and the arguments go badly when people are using them differently.

Read alongsideChapter 1 of Designing Data-Intensive Applications.

In this module6

Start module 1