6. Observe Communications

Understand your system by looking at its dynamics

With the increasing complexity of applications and systems, introspecting a system becomes a stringent requirement. Observability is about collecting data to answer a simple question: how is your system doing? Observability enables you to understand what is going on and provides a more precise status of the system—both now, or historically to help identify trends.

In general, observability composes application metrics, network metrics, health reports, logs, and traces. From these, it derives other synthetic metrics and alerts enforcing the availability and reliability of the system.

In Reactive systems, it is indispensable to observe not only applications but also their communication tissue. Application metrics are often not enough to wisely make decisions about the overall state of the system. By looking at the communication, you extract the system dynamics—how the data flows. Collecting information about data consumers, producers, exchanges, and queue sizes allows identification of bottlenecks and misbehaving components. It greatly helps find those parts of the system that are running behind by looking at the evolution of the consumed message rate. This level of observation is essential to drive elasticity decisions and continuously adjust your system to meet the current demands.