Observability
Overview
With our move into cloud stacks and a distributed architecture & infrastructure, composed of clients, backend systems and middleware microservices, traditional concepts like monitoring or error solving have evolved substantially.
The new term Observability is an effort to describe this evolution, where the boundaries between systems and applications are much thinner than only a few years ago.
Definition
Observability is not just a simple trendy new word for monitoring, but a combination of practices and tools that represent the healthiness of distributed systems (which are also capable of autoscaling when required) from both the functional & performance aspects of these.
In a very simplistic way, we could describe it as the mechanism that will allow us to:
- Build & deliver software that performs, and scales properly
- Keep sustainable control over the software we produce, and the services we use
- Have a clear insight on the healthiness and performance of the technology side of Rapha
And will help us to solve the problematic aspects:
- Identify performance or functional problems of our services on the architecture easily.
- Understand why those problems happen.
- Analyse & correct those problems.
Designing Observability
There are some key aspects we need to have in mind when designing what observability means for us.
- Provide end-to-end visibility on the entire landscape, FE - MW - BE
- Collect data from every piece of software we deliver, and the systems/services that compose every solution
- Have a connected context, so we can understand how all the components interact with each other
- Have healthiness indicators of all our components
We will cover the above in the subsections below