How to adopt ODD through different SDLC stages
Tags: observability, sdlc, softwareengineering, tutorial
Published: 2023-02-13 17:53:41

Observability Driven Development (ODD) is a software development approach that prioritizes the monitoring and analysis of a system throughout its life cycle. In this approach, observability is integrated into every stage of the software development life cycle, from design to production, to ensure that the system is functioning correctly and meeting performance requirements.

The goal of ODD is to proactively identify and address potential issues before they become critical problems. By incorporating observability early in the development process, developers can make informed decisions about the design and implementation of their systems, resulting in higher-quality software and improved system performance.

In this article, we will explore how to adopt ODD across each stage of the software development life cycle.

##Considerations for adopting ODD across various SDLC stages

When adopting [observability driven development](https://www.simform.com/blog/observability-driven-development/) across different stages of the software development life cycle (SDLC), there are several considerations to keep in mind to ensure that the process is smooth and effective:

###Design considerations
The design phase of a software system is an important step in determining its functionality and operations. During this phase, it is crucial to identify critical performance data points, such as Mean Time to Repair (MTTR), Average Response Time, Error Rate, Uptime, Downtime, Availability, etc., to monitor and track continuously. To achieve accurate collection of telemetry data from various components such as containers, services, applications, and hosts, observability must be integrated into the design by determining the instrumentation touchpoints.

###Development considerations
During the design phase, the instrumentation touchpoints for collecting telemetry data are established. However, it is essential to provide context to this raw data to make it meaningful. So, implement processes that assign context to the instrumentation data during the development phase.

###Deployment considerations
One of the effective approaches to implement observability during deployment is to adopt the practice of "Observability as Code." This approach allows for control and automation through deployment pipelines and ensures that observability is consistently applied across all deployment environments.

###Operation considerations
The implementation of operational observability can enhance debugging accuracy, improve production efficiency, and provide a comprehensive view of architecture. To achieve this, the DevOps team should focus on proactive monitoring and incorporating a feedback loop from operations for continuous improvement. Three methods for incorporating operational observability are:

- Utilizing SQL-based monitoring systems set up by the BI team,
- Developing a custom monitoring and alerting feature, and 
- Adopting operational observability software.

###Maintenance considerations
In the maintenance stage, observability is used to monitor the system for performance degradation and other issues. This includes tracking changes to the system, identifying and addressing performance bottlenecks, and ensuring that the system continues to meet its performance requirements.

###Standards and Tooling considerations
Adopting observability practices has proven to be beneficial for tech giants like Google and Facebook, leading to the development of various tools and standards. For instance, Google has released OpenCensus, an open-source library for metric collection and tracing. Additionally, OpenTrace, a popular tool focused on distributed tracing developed by the Cloud Native Computing Foundation, has merged with OpenCensus to form OpenTelemetry, a unified tool combining structured logging, metrics, and tracing. It is advisable to consider industry standards and select a suitable backend for storing and visualizing tracing data for analysis

##Conclusion
In conclusion, incorporating observability into every stage of the software development life cycle is key to the success of ODD. By adopting an observability-driven approach, developers can improve the quality of their software, ensure that the system meets its performance requirements, and proactively address potential issues. With ODD, developers can be confident that their systems will be reliable, scalable, and performing optimally.