오픈텔레메트리 앱 추적 및 설계 방식을 변화시키는 방법
다기능 통합 가시성 도구를 찾던 중, NGINX MARA(Modern Apps Reference Architecture) 프로젝트 팀은 오픈텔레메트리 를 선택했습니다. OSS 팀이 이 새로운 프로젝트를 선택함에 따라, 저희는 더 자세히 알아보고자 합니다. 이 포스트에서 오픈텔레메트리 가 클라우드 네이티브 애플리케이션 환경을 위한 훌륭한 자산인 이유에 대해 자세히 알아볼 수 있습니다.
여러 위치에서 실행되는 수많은 마이크로서비스 간의 상호 작용에서 앱 기능이 나타나는 클라우드 네이티브 앱을 실행할 때는 통합 가시성이 핵심입니다. 마이크로서비스 앱의 느슨하게 결합된 특성으로 인해 각 마이크로서비스는 자체적인 방식으로 활동을 보고할 가능성이 있습니다. 이러한 텔레메트리 데이터를 컴파일하고 상호 연관시키는 도구가 없으면 문제 해결에 중요한 요청의 처리를 처음부터 끝까지 추적하는 것이 불가능하지는 않더라도 매우 어렵습니다.
목차
1. 오픈텔레메트리 로 관측 가능성 2.0 강화
2. 최신 앱 아키텍처에 분산 추적이 필요한 이유
2-1. 오픈텔레메트리 를 통한 분산 추적의 미래
3. AI 및 ML을 통한 애플리케이션 인텔리전스
4. 요약
5. 관련 포스트
1. 오픈텔레메트리 로 관측 가능성 2.0 강화
오픈텔레메트리 는 데이터, 특히 애플리케이션을 가장 잘 이해하고, 문제를 해결하고, 개선하는 데 필요한 데이터와 데이터 스트림(텔레메트리)에 초점을 맞추고 있습니다. 데이터는 대규모로 집계, 분석 및 시각화할 수 있을 때만 유용합니다. OpenTelemetry 는 데이터를 시각화하는 방법에 대한 지침을 제공하지는 않지만, 어떤 데이터를 얻을 수 있는지에 대한 걱정을 멈추고 데이터로 무엇을 할 수 있는지에 집중할 수 있게 해줍니다.
또한, 오픈텔레메트리 를 사용하면 데이터 소스 간 자연스러운 상관관계를 파악할 수 있으므로, 사용자가 직접 상관관계를 파악할 필요가 없습니다. 앱 전반에서 이벤트를 상호 연관시키는 OpenTelemetry 의 기능은 클라우드에서 애플리케이션 활동을 측정하기 위한 새로운 벤치마크인 Observability 2.0으로 이어지고 있습니다. 데이터는 이미 상호 연관되어 있으므로 애플리케이션 공간을 바라보는 방식이 달라집니다. 더 이상 앱의 실행 여부를 파악하는 데 그치지 않고 요청이 앱을 통해 어떤 경로를 거치는지 이해할 수 있게 되었습니다.
두 가지 주목할 만한 오픈 소스 프로젝트가 오픈텔레메트리 에 앞서 있었습니다: 바로 OpenTracing(OT)과 OpenCensus(OC)입니다. 두 프로젝트 모두 추적 데이터의 형식을 표준화하여 필요한 정보를 얻고 최신 앱에 어떤 영향을 미치는지 파악하는 데 어려움을 겪었습니다. 각 프로젝트는 비슷한 점이 많았지만, 리소스를 두고 경쟁을 벌였고 기업들은 종종 둘 중 하나를 선택해야 했습니다. 2019년 3월, 두 프로젝트는 추적 데이터의 생성 및 형식 지정 방식을 통합하기 위해 OpenTelemetry로 합병을 발표했습니다. OpenTelemetry 프로젝트는 추적과 동일한 텔레메트리 채널을 통해 다른 종류의 통합 가시성 데이터(메트릭 및 로그)를 수집하기 위한 표준을 더욱 정의하여 통합과 명확성을 더욱 향상시키고 있습니다.
다음으로, 분산 추적과 애플리케이션 인텔리전스라는 오픈텔레메트리 의 두 가지 흥미로운 기능적 측면을 살펴보겠습니다.
2. 최신 앱 아키텍처에 분산 추적이 필요한 이유
분산 추적은 오래전부터 사용되어 왔지만, 지난 10년 동안 많은 변화가 일어나면서 그 필요성이 더욱 커졌습니다. Cynefin 프레임워크를 사용하여 최신 애플리케이션에서 현재 직면하고 있는 몇 가지 변화와 과제를 살펴볼 수 있습니다:

Cynefin 프레임워크는 단순함에서 복잡함으로 나아갈 때 우리의 관행을 어떻게 바꿀 수 있는지 보여줍니다. 문제는 우리의 움직임이 각각 고유한 특성을 가진 두 개의 개별 경로를 따라 이루어지고 있으며, 단순한 것에서 복잡한 것으로 바로 지름길을 택하려고 하면 종종 무질서와 불완전한 진행을 초래한다는 것입니다.
최신 앱과 클라우드 네이티브 여정에서 어떤 요소가 경로를 만드는지 파악해 봅시다. 첫 번째 경로(시네핀 다이어그램의 Y축)에는 일반적으로 마이크로서비스 아키텍처인 최신 앱이 있으며, 각 앱이 특정 작업을 수행합니다. 두 번째 경로(X축)에서는 마이크로서비스 인스턴스가 수요에 따라 증감하고 네트워크 문제에 따라 다른 호스트로 이동하는 등 복잡한 환경이 일시적으로 존재합니다.
또한 AWS(Amazon Web Services), Microsoft Azure, GCP(Google Cloud Platform)와 같은 클라우드 환경의 출현과 엄청난 성장도 고려해야 합니다. 이러한 클라우드의 장점은 현재 수요 수준에 맞춰 리소스를 확장하거나 축소하는 탄력적인 대응입니다. 컨테이너 오케스트레이션(가장 일반적으로 Kubernetes를 사용)의 영향이 더해지면 시간이 지남에 따라 리소스의 수와 위치가 변경되면서 혼란스러운 동작이 나타나기 시작합니다. (이 상대적으로 제한된 보기조차도 혼란스럽고, 서버리스 기능과 같은 요소로 인해 더욱 혼란스러워질 수 있습니다.)
앱을 모니터링하고 유지 관리하는 데 필요한 원격 분석을 생성하는 많은 개별 부품이 있는 최신 아키텍처에서는 데이터 부하가 방대하고 복잡합니다. 인프라와 통신 경로를 완전히 제어할 수 없기 때문에 문제가 안정적으로 반복되거나 원인을 파악하기가 쉽지 않을 수 있습니다. 따라서 변화하는 환경을 이해하고 분석할 수 있도록 모든 활동과 관련 요소를 추적할 수 있는 기술이 필요합니다.
이것이 바로 오픈텔레메트리 가 필요한 이유입니다.
2-1. 오픈텔레메트리 를 통한 분산 추적의 미래
분산 추적은 업계에 큰 변화를 일으키고 있으며, 특히 요청이 메트릭을 통해 성능에 대한 내부 뷰를 생성하는 방식과 관련하여 큰 변화를 일으키고 있습니다. 분산 추적을 통해 다양한 유형의 새로운 지표를 추적할 수 있지만, 가장 일반적으로는 시간 단위당 요청 수, 시간 단위당 오류 수, 집계 요청이 해당 시간 단위로 얼마나 오래 걸리는지와 관련된 지표를 추적할 수 있습니다.
메트릭은 관리 및 저장이 쉽고, 집계가 용이하며, 수학적 분석에 적합하기 때문에 오래전부터 사용되어 왔습니다. 오픈텔레메트리 에서는 메트릭을 생성하는 모든 앱이 텔레메트리(전송) 계층을 통해 공통 수집 지점으로 메트릭을 전송할 수 있으며, 이를 통해 느슨하게 결합된 서비스에서 생성된 데이터를 정렬하는 데 도움이 됩니다. 여기에는 기본 인프라와의 정렬도 포함됩니다. 요컨대, OpenTelemetry 를 사용하면 메트릭을 수집하고 전송하는 것이 더 쉬워집니다.
또한, 오픈텔레메트리 는 이벤트의 상관관계를 파악하기 어렵게 만드는 타임스탬프 드리프트 및 왜곡 문제를 해결하는 데 도움이 될 수 있습니다. 오픈텔레메트리 는 각 요청에 TraceId를 할당하지만, 클라우드 네이티브 아키텍처에서 종종 나타나는 드리프트 및 왜곡으로 인해 데이터가 영향을 받을 수 있습니다. 드리프트와 왜곡은 다양한 기간의 경로를 보고하거나 여러 호스트의 시계가 긴밀하게 동기화되지 않아서 발생할 수 있습니다. 분산 추적을 통해 트래픽 처리 중 구성 요소 간의 통신을 추적함으로써 오픈텔레메트리 는 관련 앱에 대한 심층적인 계측 없이도 작업의 단위이자 추적의 구성 요소인 개별 범위를 측정할 수 있습니다.
이 세 가지 신호(원격 분석의 범주)를 결합하면 문제를 해결하고 앱을 프로덕션 품질로 되돌릴 수 있습니다:
바로 이 지점에서 Observability 2.0으로 돌아옵니다. 추적을 확보하고 어떤 메트릭이 어떤 추적에 해당하는지 즉시 확인할 수 있는 능력은 우리에게 많은 힘을 줍니다. 예를 들어, 메트릭이 문제를 나타내는 경우 분산 추적을 사용하면 초기 문제를 일으킨 특정 요청으로 거슬러 올라가 요청 이행의 각 단계를 통해 진행 상황을 추적할 수 있습니다. 추적은 요청이 발생한 순서대로 범위로 구성되므로 요청의 각 단계를 따라갈 수 있습니다. 초기 이벤트부터 표시된 문제, 최종 결과까지 어떤 일이 어떤 순서로 발생했는지 파악하면 앱 내에서 정확히 ‘어디’에 주의를 집중해야 하는지 파악할 수 있습니다.
간단하게 들릴지 모르지만, 오픈텔레메트리 의 분산 추적 측면은 요청의 성공 여부와 실행 타이밍에 대한 프록시가 되어 사용자의 경험에 대한 훌륭한 인사이트를 제공할 수 있습니다. 사용자로서 저는 제 요청을 중요하게 생각합니다. 사이트 안정성 엔지니어(SRE)로서 저는 집계된 요청을 중요하게 생각합니다. 모든 앱에서 필요한 모든 데이터를 사용할 수 있도록 설계된 오픈텔레메트리 는 집계에서 세부 사항으로 드릴다운할 수 있는 기능과 함께 두 가지 모두를 제공합니다.
3. AI 및 ML을 통한 애플리케이션 인텔리전스
또한 오픈텔레메트리 의 새로운 데이터 스트림을 통해 개발 및 운영 대응에 있어 적응력을 높이고 자동화할 수 있습니다. 이렇게 축적된 모든 데이터를 통해 애플리케이션을 더욱 지능적으로 만들 수 있습니다. F5는 현재 고객들이 “적응형 애플리케이션“을 개발하고 배포하는 여정을 지원하는 데 주력하고 있습니다. 적응형 애플리케이션은 말 그대로 환경 변화에 따라 자동으로 지능적으로 동작을 조정하는 애플리케이션입니다.
그렇기 때문에 다양한 솔루션에서 인공지능(AI)과 머신러닝(ML)을 더 많이 볼 수 있습니다. 하지만 단순히 유행하는 용어이기 때문이 아니라 인과관계에 대한 정확한 결론에 도달하고 적절한 대응을 설계할 수 있는 충분한 데이터를 확보할 수 있기 때문에 AI와 ML이 유용합니다.
원격 측정 데이터에 대한 접근성과 표준을 제공함으로써 오픈텔레메트리 는 적응형 앱으로의 여정을 훨씬 더 쉽게 만들어줍니다. 다양한 유형의 제품이 유사한 메트릭을 출력하기 시작하고 오픈텔레메트리 내에서 확립된 의미 규칙을 활용하면 요청 처리 중에 각 제품의 동작을 상호 연관시키고 해당 정보를 ML 및 AI 알고리즘에 제공하여 애플리케이션과 인프라가 동적으로 적응할 수 있도록 하는 것이 더 쉬워집니다.
이 모든 것의 기반이 되는 데이터 과학을 이해하고 텔레메트리 데이터가 AI 및 ML과 관련이 있는지 확인할 때, 적응형 앱의 데이터 기반 특성이 진화하고 빛을 발할 수 있습니다.
4. 요약
텔레메트리를 코드화하면 오픈텔레메트리 사용자와 이를 텔레메트리 채널로 사용하는 애플리케이션 모두에게 분명한 이득이 됩니다. 여러 소스에서 데이터를 수집하여 호환되는 모든 집계 및 분석 도구로 전달할 수 있습니다. 또한, 공급업체는 OpenTelemetry Collector를 통해 수집기를 직접 구현할 필요가 없습니다. 그 대신 의미 있는 분석을 수행하고 지능적인 조치를 취할 수 있도록 코드를 개선하는 데 집중할 수 있으며, 복잡하고 혼란스러운 새로운 세계를 이해하는 데 도움이 되는 새로운 도구를 구축할 수 있습니다. 실제로 오픈소스의 혁신으로 뒷받침되는 OpenTelemetry Collector는 거의 모든 기존 형식과 작업할 수 있으며, 기술을 미래로 연결할 수 있는 엄청난 능력을 갖추고 있습니다.
애플리케이션을 이해하는 데 필요한 주요 데이터 클래스에 초점을 맞춘 오픈텔레메트리 를 통해 앱은 복잡한 현대 애플리케이션 세계의 성능과 문제 모두에 대한 심층적인 인사이트를 제공할 수 있게 되었습니다. 의미론적 규칙과 표준 규칙에 따라 데이터를 상호 연관시킴으로써 OpenTelemetry는 최신 애플리케이션으로 가는 여정을 더욱 쉽게 만들어 줍니다. 프로젝트가 계속 성숙해지고 채택이 계속 증가함에 따라, 오픈텔레메트리 는 이러한 복잡성을 이해할 수 있도록 AI 및 ML 기술을 적용하는 능력과 심층적인 이해에 대한 명확한 접근 방식입니다.
NGINX의 OSS 엔지니어가 오픈텔레메트리 를 사용하는 방법에 대해 자세히 알아보려면 최신 앱 참조 아키텍처와 샘플 애플리케이션(Bank of Sirius)을 사용해 보세요.
댓글을 달려면 로그인해야 합니다.