engineering

Why Observability as Code?

Why Observability as Code

2 mins read

ā€¢
15 September, 2021
Boris Tane
Founder @Baselime
Discuss this post on Slack
Join our Slack community to discuss this topic with 100s of CTOs, AWS heroes, community builders, and cloud computing experts.
Linkedin icon
Reddit icon

Organisations that adopt micro-services architectures generally benefit from improved team productivity, higher services scalability, and more resilient systems. However, these benefits come at a cost: there is an explosion of operational complexity. Application monitoring practices of the previous decade are simply not adapted for highly distributed architectures. The key questions for all teams have shifted from "Do we have enough memory on this machine?" to "Do we know that our systems are working as we think they are?". Observability practices are the answer to these questions.

Observability

According to Wikipedia, Observability is "a measure of how well internal states of a system can be inferred from knowledge of its external outputs.". In the case of software architectures, observability means having the ability to understand how your systems and code behave, to identify bottlenecks and defects, and to understand why it's happening; all without adding anything to the systems. This is generally achieved with the help of structured events, logs, metrics and distributed traces.

Consequently, it is extremely important to reliably be able to visualise the system outputs, and to be alerted when unexpected behaviour emerges. Configuring visualisation dashboards and alerts has traditionally been done through Graphical User Interfaces (ClickOps). As a result:

  • configurations are not repeatable across environments;
  • it is impossible to reliably test observability configurations;
  • lack of consistency across teams;
  • mistakes are near-impossible to spot;
  • observability is not part of the integration and deployment (CI/CD) process;

These pitfalls are solved by treating observability configurations as code.

Observability as Code

Observability as Code adapts the principles of Infrastructure as Code to observability configurations. Dashboards and alerts are configured and automated through Continuous Deployment pipelines, are source-controlled, and are repeatable across teams and environments.

With Observability as Code, teams can adopt the best practices from software engineering to collaborate and iterate on observability configurations.

We'd love to hear your thoughts on Observability as Code, and if you're interested in applying those principles to your microservices, we'd love to have you try our beta.

Photo by ThisisEngineering RAEng on Unsplash

Discuss this post on Slack

Join our Slack community to discuss this topic with 100s of CTOs, AWS heroes, community builders, and cloud computing experts.

Related posts
Start resolving issues today.
Without the hassle.