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

관리자
조회수 321


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

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


OpenTelemetry가 Observability 2.0을 지원합니다.

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

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

OpenTelemetry는 또한 우리가 스스로 상관관계를 시도할 것을 기대하는 대신 이러한 데이터 소스에서 자연스러운 상관관계를 가능하게 합니다. 앱 간의 이벤트를 상관관계로 연결하는 OpenTelemetry의 기능은 클라우드에서 애플리케이션 활동을 측정하는 새로운 벤치마크인 Observability 2.0으로 이어집니다. 데이터는 이미 상관관계가 있으므로 애플리케이션 공간을 보는 방식이 바뀝니다. 더 이상 앱이 실행 중인지 여부만 아는 데 국한되지 않습니다. 이제 모든 요청이 앱을 통과하는 경로를 이해할 수 있습니다.

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

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


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

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

OpenTelemetry-changing-design-trace-apps_Cynefin.png

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 Plus 를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요



전문가에게 상담받기