Tags:conceptDISYS Status:🟩


Reliable, Scalable, and Maintainable Applications

Summary

Reliable, scalable, and maintainable systems are important because they ensure that applications can function correctly, grow with demand, and adapt to changes over time. In modern data-intensive applications, managing large amounts of data efficiently is critical. These systems must remain resilient under pressure, handle increasing traffic or data volume without performance issues, and allow for easy updates and modifications. Designing with these goals in mind helps create robust applications that can meet both current and future needs.

Details

Many applications today are data-intensive opposed to compute-intensive.

Some applications need to:

  • Store data so that they, or another application, can find it again later (databases)
  • Remember the result of an expensive operation, to speed up reads (caches)
  • Allow users to search data by keyword or filter it in various ways (search indexes)
  • Send a message to another process, to be handled asynchronously (stream processing)
  • Periodically crunch a large amount of accumulated data (batch processing)

There exists a lot of database systems with different characteristics. When building an application, we still need to figure out which tools and which approaches to use.

There are different design decisions to consider when working on a data-intensive application, with a focus on three key concerns that are crucial in most software systems.

Reliability The system should continue to work correctly (performing the correct function at the desired level of performance) even in the face of adversity (hardware or software faults, and even human error).

Scalability As the system grows (in data volume, traffic volume, or complexity), there should be reasonable ways of dealing with that growth.

Maintainability Over time, many different people will work on the system (engineering and operations, both maintaining current behaviour and adapting the system to new use cases), and they should all be able to work on it productively.