Introduction
Cloud-native and microservice architectures have risen in popularity throughout the developer community to address a number of challenges faced in modern application development. At the same time, these architectures also created new problems. One of those challenges is how to accurately monitor the performance and availability of these distributed applications. After years of confusion and complexity, the software industry has finally rallied around a project to help simplify the problem of observability.
OpenTelemetry is an open-source collection of tools, APIs, SDKs, and specifications with the purpose of standardizing how to model and collect telemetry data. OpenTelemetry came into being from the merger of the OpenCensus project (sponsored by Google) and the OpenTracing project (sponsored by CNCF) and has backing from many of the biggest tech companies in the world. Some of the companies actively contributing to the project are Microsoft, Red Hat, Google, Amazon, Shopify, Datadog, and Facebook.
The long-term goal of the OpenTelemetry project is to provide a completely standardized vendor-agnostic solution for instrumenting applications to allow for telemetry data to be sent to any backend storage platform without having to modify your underlying codebase.
By creating this ecosystem of tools and standards, the engineering burden of implementing and maintaining instrumentation is reduced. Additionally, the potential for vendor lock-in due to switching costs is eliminated.
The result is that companies using OpenTelemetry will be able to use the best tools available for working with their telemetry data. This data is inherently time-series data, which has unique properties when it comes to efficient storage and analysis that are hard to manage with more traditional databases. The demand for better performance led to the development of an entire ecosystem of tools that are optimized for working with telemetry data.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}