블로그 | NGINX

OpenTelemetry가 앱 추적 및 디자인 방식을 어떻게 변화시키고 있는가

NGINX-F5-수평-검정-유형-RGB의 일부
데이브 맥앨리스터 썸네일
데이브 맥앨리스터
2022년 7월 21일 게시

클라우드 기반 앱을 실행할 때는 관찰 가능성이 중요합니다. 앱 기능은 여러 위치에서 실행되는 수많은 마이크로서비스 간 상호 작용을 통해 생성됩니다. 마이크로서비스 앱의 느슨하게 결합된 특성은 각 마이크로서비스가 자체 방식으로 활동에 대해 보고할 수 있음을 의미합니다. 원격 측정 데이터를 컴파일하고 상관관계를 분석하는 도구가 없다면 요청 처리를 처음부터 끝까지 추적하는 것은 매우 어렵거나 불가능합니다. 이는 문제 해결에 매우 중요합니다.

다기능 관찰 도구를 찾던 중 NGINX Modern Apps Reference Architecture(MARA) 프로젝트를 담당한 팀은 OpenTelemetry를 선택했습니다 . 저희 OSS 팀이 이 새로운 프로젝트를 선택했으므로, 더 깊이 파고들고 싶습니다. GlueCon 2022 에서 저는 F5의 CTO 사무실의 건축가인 Granville Schmidt와 함께 OpenTelemetry의 현재 상태와 미래 제품에 대해 우리가 왜 기대하는지 논의했습니다. 아래에서 대화를 시청하실 수 있으며, 이 블로그에서는 OpenTelemetry가 클라우드 기반 애플리케이션 환경에 큰 자산인 이유에 대해 자세히 알아볼 수 있습니다.

OpenTelemetry가 Observability 2.0을 지원합니다

2019년 바르셀로나에서 열린 KubeCon에서 처음 발표된 OpenTelemetry는 많은 참여자들의 열광적인 관심을 모았습니다. 이 프로젝트는 CNCF(Cloud Native Computing Foundation)에서 기여 횟수 측면에서 두 번째로 인기 있는 프로젝트 이며, 지난 6개월 동안 기여율은 그 어느 때보다 높았습니다. 기여자가 이렇게 많다는 것은 OpenTelemetry가 성숙해졌으며 초기 채택자(시대를 앞서가고자 하는 사람)와 실용주의자(성숙한 제품을 원하는 사람) 간의 격차를 메우기 시작했다는 것을 보여줍니다.

OpenTelemetry는 데이터, 특히 애플리케이션을 가장 잘 이해하고, 문제를 해결하고, 개선하는 데 필요한 데이터와 데이터 스트림(원격 측정)에 초점을 맞춥니다. 데이터는 대규모로 집계, 분석, 시각화할 수 있는 경우에만 유용합니다. OpenTelemetry는 데이터를 시각화하는 방법에 대한 지침을 제공하지 않지만, 어떤 데이터를 얻을 수 있는지에 대한 걱정을 멈추고 대신 데이터로 무엇을 할 수 있는지에 집중할 수 있게 해줍니다.

OpenTelemetry를 사용하면 우리가 직접 상관관계를 시도할 필요 없이 해당 데이터 소스 간의 자연스러운 상관관계를 파악할 수 있습니다. 앱 간 이벤트를 연관시키는 OpenTelemetry의 기능은 클라우드에서 애플리케이션 활동을 측정하는 새로운 벤치마크인 Observability 2.0으로 이어집니다. 데이터는 이미 우리에게 상관관계를 알려주었고, 이를 통해 애플리케이션 공간을 보는 방식이 바뀌었습니다. 우리는 더 이상 앱이 실행 중인지 아닌지 아는 것에 국한되지 않습니다. 이제 우리는 앱에서 모든 요청이 이동하는 경로를 이해할 수 있습니다.

OpenTelemetry에 앞서 두 개의 주목할 만한 오픈 소스 프로젝트가 있었습니다. OpenTracing(OT)OpenCensus(OC) . 두 회사 모두 추적 데이터 형식을 표준화하여 필요한 정보를 얻고 이것이 현대 앱에 어떤 영향을 미치는지 이해하는 과제를 맡았습니다. 각 프로젝트는 유사점이 있었지만, 리소스를 놓고 서로 경쟁했고 기업은 종종 하나만 선택해야 했습니다. 2019년 3월, 두 프로젝트는 추적 데이터가 생성되고 포맷되는 방식을 통합한다는 목표로 OpenTelemetry로 합병된다고 발표했습니다 . OpenTelemetry 프로젝트는 추적과 동일한 원격 측정 채널을 통해 다른 클래스의 관찰 데이터( 메트릭로그 )를 수집하기 위한 표준을 더욱 정의하여 통합과 명확성을 높이고 있습니다.

다음으로 OpenTelemetry의 두 가지 흥미로운 기능적 측면인 분산 추적애플리케이션 인텔리전스를 살펴보겠습니다.

현대 앱 아키텍처에 분산 추적이 필요한 이유

분산 추적은 몇 년 동안 존재해 왔지만, 지난 10년 동안 많은 변화가 일어나면서 분산 추적의 필요성이 커졌습니다. Cynefin 프레임워크를 사용하면 현대 애플리케이션에서 현재 직면하고 있는 몇 가지 변화와 과제를 강조할 수 있습니다.

Cynefin 프레임워크는 우리가 간단한 것에서 복잡한 것으로 옮겨가면서 어떻게 관행을 바꿀 수 있는지 보여줍니다. 문제는 우리의 움직임이 두 개의 별개의 경로를 따라가고 있으며, 각 경로는 고유한 특성을 가지고 있다는 점인데, 간단한 경로에서 복잡한 경로로 바로 가는 지름길을 가려고 하면 종종 무질서와 불완전한 진행이 초래됩니다.

최신 앱과 클라우드 기반 여정에서 어떤 요소가 경로를 만드는지 확인해 보겠습니다. 첫 번째 경로(Cynefin 다이어그램의 Y축)에는 일반적으로 마이크로서비스 아키텍처인 최신 앱이 있으며, 각 앱은 특정 작업을 수행합니다. 두 번째 경로(X축)에서는 복잡한 환경이 일시적입니다. 마이크로서비스 인스턴스는 수요에 따라 가동되거나 중단되고 네트워크 문제에 대한 대응으로 다른 호스트로 이동되기 때문입니다.

또한 Amazon Web Services(AWS), Microsoft Azure, Google Cloud Platform(GCP)과 같은 클라우드 환경의 등장과 엄청난 성장도 고려해야 합니다. 이러한 클라우드의 장점은 탄력적인 대응입니다. 즉, 현재 수요 수준에 맞춰 리소스를 확장하거나 축소할 수 있습니다. 컨테이너 오케스트레이션(대부분 Kubernetes를 사용)의 영향이 더해지면서 시간이 지남에 따라 리소스의 수와 위치가 변경되면서 혼란스러운 동작이 나타나기 시작했습니다. (이렇듯 비교적 제한된 관점조차도 혼란스러울 수 있으며, 서버리스 함수와 같은 요소는 그것을 더욱 혼란스럽게 만들 수 있습니다.)

최신 아키텍처에서는 앱을 모니터링하고 유지하는 데 필요한 원격 측정 데이터를 생성하는 여러 개별 부분이 있으므로 데이터 부하가 엄청나고 복잡합니다. 우리가 인프라와 커뮤니케이션 경로를 완벽하게 제어할 수 없기 때문에, 문제가 꾸준히 반복되지 않거나 쉽게 드러나지 않을 수도 있습니다. 변화하는 환경을 이해하고 분석하기 위해서는 모든 활동과 관련 요소를 추적할 수 있는 기술이 필요합니다.

바로 여기서 OpenTelemetry가 등장합니다.

OpenTelemetry를 통한 분산 추적의 미래

분산 추적은 업계에 큰 변화를 일으키고 있으며, 특히 요청이 지표를 통해 성과에 대한 내부적 관점을 생성하는 방식에 큰 변화를 일으키고 있습니다. 분산 추적을 사용하면 여러 유형의 새로운 지표를 추적할 수 있지만 가장 일반적인 지표는 시간 단위당 요청 수, 시간 단위당 오류 수, 해당 시간 단위에서 집계된 요청에 걸리는 시간과 관련된 지표입니다.

지표는 관리 및 저장이 쉽고, 쉽게 집계되며, 수학적 분석에 적합하기 때문에 꽤 오래 전부터 사용되어 왔습니다. OpenTelemetry에서 메트릭을 생성하는 모든 앱은 원격 측정(전송) 계층을 통해 공통 수집 지점으로 메트릭을 전송할 수 있으며, 이는 느슨하게 결합된 서비스에서 생성된 데이터를 정렬하는 데 도움이 됩니다. 여기에는 기본 인프라와의 정렬이 포함됩니다. 간단히 말해, OpenTelemetry를 사용하면 메트릭을 더 쉽게 수집하고 전송할 수 있습니다.

OpenTelemetry는 이벤트의 상관관계를 어렵게 만드는 타임스탬프 드리프트와 왜곡 문제를 해결하는 데 도움이 될 수도 있습니다. OpenTelemetry는 각 요청에 TraceId를 할당하지만 데이터는 여전히 클라우드 기반 아키텍처에서 자주 나타나는 드리프트와 왜곡의 영향을 받을 수 있습니다. 드리프트와 왜곡은 지속 시간이 서로 다른 경로를 보고하거나 다양한 호스트의 클럭 간에 긴밀한 동기화가 이루어지지 않아 발생할 수 있습니다. 트래픽 처리 중에 구성 요소 간 통신을 추적함으로써 분산 추적을 통해 OpenTelemetry는 관련 앱에 대한 심층적인 계측이 필요 없이 추적의 작업 단위이자 빌딩 블록인 개별 스팬을 측정할 수 있습니다.

이 세 가지 신호(원격 측정 범주)를 결합하면 문제를 해결하고 앱을 프로덕션 품질로 되돌릴 수 있습니다.

  • 메트릭 - "문제가 있습니까?"
  • 추적 - "문제는 어디에 있나요?"
  • 로그 - "문제가 뭐예요?"

이제 Observability 2.0으로 돌아가 보겠습니다. 추적 정보를 얻고 어떤 측정항목이 어떤 추적 정보와 일치하는지 즉시 확인할 수 있는 능력은 우리에게 많은 힘을 줍니다. 예를 들어, 측정 항목이 문제를 나타내는 경우 분산 추적을 통해 초기 문제를 일으킨 특정 요청까지 거슬러 올라가 요청 처리의 각 단계에 대한 진행 상황을 추적할 수 있습니다. 추적은 발생한 순서대로 구성된 스팬으로, 요청의 각 단계를 추적할 수 있습니다. 무슨 일이 일어났는지, 어떤 순서로 일어났는지(초기 이벤트부터 표시된 문제, 최종 결과까지) 이해하면 앱 내에서 정확히 "어디"에 주의를 집중해야 할지 파악할 수 있습니다.

아무리 간단해 들리더라도 OpenTelemetry의 분산 추적 측면은 사용자가 경험하는 내용에 대한 훌륭한 통찰력을 제공하고 요청 성공과 실행 타이밍을 대신 알려줄 수 있습니다. 사용자로서 저는 제 요청에 관심이 있습니다. 사이트 안정성 엔지니어(SRE)로서 저는 집계된 요청에 관심이 있습니다. OpenTelemetry는 이 두 가지 기능을 모두 제공하며, 모든 앱에서 필요한 데이터를 모두 사용할 수 있도록 설계되어 집계에서 세부 정보로 드릴다운하는 기능도 제공합니다.

AI 및 ML을 활용한 애플리케이션 인텔리전스

OpenTelemetry의 이 새로운 데이터 스트림을 통해 개발 및 운영 대응을 적응적이고 자동화할 수 있습니다. 이렇게 축적된 데이터를 바탕으로 우리는 애플리케이션을 더욱 지능적으로 만들 수 있습니다. F5는 현재 고객이 " 적응형 애플리케이션 "이라고 부르는 것을 개발하고 배포하는 여정을 돕는 데 중점을 두고 있습니다. 적응형 앱은 말 그대로 환경 변화에 반응하여 동작을 자동적이고 지능적으로 조정하는 애플리케이션입니다.

그렇기 때문에 다양한 솔루션에서 인공 지능(AI)과 머신 러닝(ML)이 훨씬 더 많이 사용되는 것입니다. 하지만 이는 단순히 트렌드 용어이기 때문만은 아닙니다. AI와 ML이 유용한 이유는 이제 인과 관계에 대한 정확한 결론을 내리고 적절한 대응책을 설계하기에 충분한 데이터가 있기 때문입니다.

OpenTelemetry는 원격 측정 데이터를 접근 가능하고 표준화된 형태로 제공함으로써 적응형 앱으로의 전환을 훨씬 더 쉽게 만듭니다. 다양한 유형의 제품이 유사한 측정 항목을 출력하기 시작하고 OpenTelemetry 내의 기존 의미 규칙을 활용함으로써 요청 처리 중에 제품 간의 동작을 더욱 쉽게 연관시키고 해당 정보를 ML 및 AI 알고리즘에 제공하여 애플리케이션과 인프라가 동적으로 적응할 수 있도록 지원하기 시작했습니다.

이 모든 것의 배후에 있는 데이터 과학을 이해하고 원격 측정 데이터가 AI 및 ML과 관련이 있는지 확인하면 적응형 앱의 데이터 중심적 특성이 진화하고 빛날 수 있습니다.

요약

원격 측정 데이터를 체계화하는 것은 OpenTelemetry 사용자와 이를 원격 측정 채널로 사용하는 애플리케이션 모두에게 명백한 이점입니다. 다양한 소스에서 데이터를 수집하여 호환 가능한 모든 집계 및 분석 도구로 전달할 수 있습니다. 또한, OpenTelemetry Collector를 사용하면 공급업체가 직접 수집기를 구현할 필요가 없습니다. 그 대신, 그들은 의미 있는 분석을 수행하고 지능적인 조치를 취하기 위해 코드를 향상시키는 데 집중할 수 있으며, 이 복잡하고 혼란스러운 새로운 세계를 이해하는 데 도움이 되는 새로운 도구를 구축할 수 있습니다. 실제로 오픈 소스 혁신에 힘입은 OpenTelemetry Collector는 거의 모든 기존 포맷과 호환이 가능하며, 이 기술을 미래로 이끌어갈 수 있는 엄청난 역량을 갖추고 있습니다.

OpenTelemetry는 애플리케이션을 이해하는 데 필요한 주요 데이터 클래스에 초점을 맞춰 앱에서 복잡한 현대 애플리케이션 세계의 성능과 문제에 대한 더 깊은 통찰력을 제공할 수 있도록 했습니다. OpenTelemetry는 의미 및 표준 규칙에 맞춰 데이터를 상관관계에 맞춰 조정함으로써 최신 애플리케이션으로의 전환을 더욱 접근하기 쉽게 만듭니다. 프로젝트가 성숙해지고 도입이 계속 확대됨에 따라 OpenTelemetry는 복잡성을 더 깊이 이해하고 AI와 ML 기술을 적용하는 능력에 대한 명확한 접근 방식입니다.

NGINX의 OSS 엔지니어가 OpenTelemetry를 어떻게 사용하는지 자세히 알아보려면 Modern Apps Reference Architecture샘플 애플리케이션 (Bank of Sirius)을 사용해 보세요.

관련 게시물


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."