Designing Data-Intensive Applications

Title: Designing Data-Intensive Applications
Author: Martin Kleppmann
Publication date: March 2017
Print length: 616 pages

Chapter 1

Thinking About Data Systems

  • There are datastores that are also used as message queues (Redis), and there are message queues with database-like durability guarantees (Apache Kafka). The boundaries between the databases, queues, caches, etc. are becoming blurred
  • Increasingly many applications now have such demanding requirements that a single tool can no longer meet all of its data processing and storage needs. Instead, the work is broken down into tasks that can be performed efficiently on a single tool, and those different tools are stitched together using application code.
  • If you are designing a data system or service, a lot of tricky questions arise. How do you ensure that the data remains correct and complete, even when things go wrong internally? How do you provide consistently good performance to clients, even when parts of your system are degraded? How do you scale to handle an increase in load? What does a good API for the service look like?
  • Reliability roughly means "continuing to work correctly, even when things go wrong."
    • systems that anticipate faults and can cope with them are called fault-tolerant or resilient.
      • fault is not the same as a failure.  A fault is usually defined as one component of the system deviating from its spec, whereas a failure is when the system as a whole stops providing the required service to the user
      • it can make sense to increase the rate of faults by triggering them deliberately. by deliberately inducing faults, you ensure that the fault-tolerance machinery is continually exercised and tested
  • Scalability is the term we use to describe a system’s ability to cope with increased load
  • Defining load on your system by determining an appropriate load parameter for your data systems is key
  • When measuring performance, averages are not a good metric. It is better to use percentiles of 95 or higher. This will allow you to determine the outliers in your measurement. 


Now that we have discussed the parameters for describing load and metrics 

https://learning-oreilly-com.dclibrary.idm.oclc.org/library/view/designing-data-intensive-applications/9781491903063/ch01.html

Comments

Popular posts from this blog

Azure Architecture Explained

The Ethiopian Army: From Victory to Collapse, 1977-1991

Building Microservices, 2nd Edition