OpenTracing과 OpenCensus라는 두 프로젝트를 병합하여
클라우드 네이티브 소프트웨어에 대한 관찰 가능성 프레임워크를 제공하겠다는 목표로
2019년 초에 시작되었다.
시스템을 잘 이해하기 위한 수단으로 분산 추적을 채택하는 비율이 증가함에 따라
발생하는 문제들을 해결하는데 집중하였다.
이러한 문제를 해결하기 위해 OpenTracing은 API 규격과 시맨틱 표기법을 제공했다.
이 API는 분산 측정을 생성하는 구현과 독립적으로 활용 될 수 있었기에
개발자가 API 호출 코드를 내장할 수 있었다.
Census라는 이름으로 구글 내부에서 시작된 프로젝트지만 2017년 오픈소스로 공개되었다.
이 프로젝트는 애플리케이션 개발자가 쉽게 애플리케이션을 추적하고 메트릭을 생산, 수집할 수 있도록 라이브러리를 제공했다.
또한 독립적인 agent로 작동하여, 애플리케이션의 원격 측정 대상 역할을 하는 동시에 컬렉터를 제공하여
백엔드 스토리지로 데이터를 전송 및 분석하도록 설정할 수 있었다.
OpenTelemetry의 주요 개념은 4가지가 있다.
- 시그널
- 파이프라인
- 리소스
- 컨텍스트 전파
다양한 종류의 원격 측정 데이터를 담을 수 있는 개방형 규격을 제공하기 위해
오픈텔레메트리는 관심의 범주를 구성하는 용어에 관한 합의가 필요했다.
결론적으로 이것을 '시그널'이라 부르기로 했다.
OpenTelemetry에서 각 시그널은 다음과 같은 내용을 제공한다.
- 시그널 구현을 위해 필요한 일련의 규격 문서
- 구현상에서 시그널을 나타내는 데이터 모델 표현
- 애플리케이션과 라이브러리 개발자가 코드에서 사용할 API
- API를 사용해 원격 측정 데이터를 만들 때 필요한 SDK
- 일관성 있는 고품질 데이터를 얻기 위해 사용되는 시맨틱 표기법
- 쉽게 구현해 사용할 수 있는 계측 라이브러리
각 시그널이 획득한 원격 측정 데이터가 유용하게 쓰이려면
저장과 분석을 수행할 수 있도록 데이터 저장소에 저장되어야한다.
이를 위해 각 시그널 구현체는 원격 측정 데이터를 생성, 처리, 전송할 수 있는 일련의 매커니즘을 제공한다.
프로바이더 -> 생성기 -> 처리기 -> 익스포터
서로 다른 시그널에 적용된 일련의 속성이다.
개념적으로는 원격 측정 데이터의 출처가 서버인지, 컨테이너인지, 함수인지 식별할 때 사용된다.
이 정보는 데이터 분석 시 동일 리소스 내에서 발생한 서로 다른 이벤트를 관련짓는데 사용될 수 있다.
리소스 속성은 데이터를 백엔드 시스템으로 보내기 전 시그널로부터
전달받은 원격 측정 데이터를 추출할 때 사용된다.
관찰 가능성의 가장 강력하면서 도전적인 영역이다. 컨텍스트 전파는 분산 추적의 핵심으로,
논리적으로 분리되어 있는 서비스 사이에 중요한 컨텍스트 정보를 전달할 수 있는 기능을 제공한다.