가시성이란?
코드를 살펴보기 전에 한 걸음 뒤로 물러서서 관찰 가능성에 대해 이야기해 보겠습니다. 외부에 표시되는 항목을 기반으로 시스템의 내부 상태를 이해하는 데 도움이 되는 도구가 있어야 합니다.
관찰성을 구현하는 이유는 무엇인가요?
클라우드 네이티브 애플리케이션을 개발하고 개선하는 데는 관찰 가능성이 중요한 몇 가지 이유가 있습니다.
- 시스템 동작 이해: 관찰성은 애플리케이션의 성능 및 병목 상태 또는 오류가 발생하는 위치에 대한 인사이트를 제공합니다.
- 디버깅 및 문제 해결: 문제가 발생할 때 관찰 도구는 문제 발생 시 시스템에서 발생한 일에 대한 자세한 정보를 제공할 수 있습니다.
- 지속적인 개선: 관찰성은 문제를 식별하고 해결하는 데만 사용되는 것이 아니라 지속적인 개선에도 사용됩니다. 시간이 지남에 따라 시스템 성능을 모니터링하여 코드를 최적화하고 시스템 성능을 개선하며 사용자에게 환경을 정량적으로 개선할 수 있는 기회를 식별할 수 있습니다.
- 사전 문제 감지: 올바른 관찰성 도구를 사용하면 사용자가 문제를 보기도 전에 종종 검색할 수 있습니다.
클라우드 네이티브 애플리케이션에서 관찰 가능성을 구현하는 것은 모범 사례일 뿐 아니라 애플리케이션을 기본 달성, 최적화 및 지속적으로 개선해야 합니다. 이를 통해 개발자는 신뢰할 수 있고 고성능의 애플리케이션을 제공할 수 있으며 정보에 입각한 의사 결정을 수행하는 데 필요한 인사이트를 제공합니다.
관찰력의 세 가지 핵심 요소
관찰의 세 가지 기본 기둥이 있습니다.
- 로그: 로그는 애플리케이션 또는 시스템 내에서 발생하는 이벤트에 대한 자세한 레코드를 제공합니다. 앱에서 인프라를 사용하여
Microsoft.Extensions.Logging
이벤트를 기록할 수 있습니다. - 메트릭: 메트릭은 시스템의 성능 및 상태에 대한 인사이트를 제공하는 수치 측정 및 카운터를 나타냅니다. 예를 들어 요청 속도, 응답 시간, CPU/메모리 사용량 및 오류 비율이 있습니다. 앱에서 추적해야 하는 특정 측정값이 있을 수 있습니다.
- 분산 추적: 이 프로세스에는 클라우드 네이티브 앱의 모든 마이크로 서비스를 통해 전파되는 요청 추적이 포함됩니다. 각 서비스는 서비스 간에 이벤트를 상호 연결할 수 있는 요청 ID와 같은 추적 데이터를 기록합니다. 분산 추적은 복잡한 시스템에서 성능 문제 및 오류를 디버깅하는 데에도 유용합니다.
이러한 세 가지 핵심 요소는 함께 시스템에 포괄적인 관찰 가능성을 제공합니다.
원격 분석을 위한 데이터 원본
회사의 클라우드 네이티브 앱에는 수집하도록 선택할 수 있는 몇 가지 원격 분석 원본이 있습니다.
- 애플리케이션 로그: 애플리케이션은 작업 및 오류가 발생할 경우 오류에 대한 자세한 정보를 제공하는 로그를 생성합니다. 로깅은 원격 분석 데이터의 풍부한 소스입니다.
- 데이터베이스: 데이터베이스는 처리하는 쿼리, 실행 시간 및 발생하는 모든 오류에 대한 원격 분석 데이터를 제공할 수 있습니다.
- HTTP 요청 및 응답: 마이크로 서비스 간의 HTTP 요청 및 응답은 풍부하고 중요한 원격 분석 데이터를 제공합니다. 이 데이터에는 요청 및 응답 헤더, 본문 콘텐츠, 상태 코드 및 타이밍 정보가 포함됩니다.
- 클라이언트 쪽 성능 데이터: 프런트 엔드가 있는 클라우드 네이티브 앱에서 클라이언트 쪽 성능 데이터를 수집할 수 있습니다. 이 데이터에는 페이지 적중, 로드 시간 및 UI 상호 작용 시간이 포함될 수 있습니다.
- 인프라 메트릭: 애플리케이션이 클라우드 환경에서 호스트되는 경우 CPU 사용량, 메모리 사용량, 네트워크 트래픽 및 디스크 I/O 작업과 같은 인프라 메트릭을 수집할 수 있습니다.
이 원격 분석 데이터를 수집하고 분석하면 애플리케이션의 성능 및 상태에 대한 중요한 인사이트를 얻을 수 있습니다.
관찰 가능성 구현
클라우드 네이티브 애플리케이션에 가시성을 추가하려면 다음 단계를 수행합니다.
- 로깅을 추가합니다.
- 메트릭을 사용하도록 설정하고 캡처할 사용자 지정 메트릭을 정의합니다.
- OpenTelemetry 및 Zipkin을 사용하여 분산 추적을 사용하도록 설정합니다.
- OpenTelemetry를 사용하여 코드에 원격 분석을 추가하여 앱을 다시 계측합니다.
- Prometheus, Grafana 또는 Application Insights를 사용하여 원격 분석 데이터를 분석합니다.
OpenTelemetry 소개
OpenTelemetry는 앱에 가시성을 추가하는 데 어떻게 도움이 되며, .NET에서 이러한 심층 지원이 있는 이유는 무엇인가요? OpenTelemetry는 오픈 소스 관찰성 프레임워크입니다. 원격 분석 데이터를 생성하는 표준 공급업체에 구애받지 않은 방법을 제공합니다.
OpenTelemetry는 원격 분석 데이터를 수집하고 백 엔드 플랫폼으로 전송하는 방법을 표준화합니다. 모든 마이크로 서비스에서 일반적인 계측 형식을 제공하여 가시성 격차를 해소합니다. 백 엔드 플랫폼이 변경 될 때마다 코드를 다시 침입하거나 다른 독점 에이전트를 설치할 필요가 없습니다.
개방형 표준이므로 .NET 이외의 다른 많은 도구를 지원합니다. OpenTelemetry는 내보내기가 모든 다른 도구에 대한 원격 분석 데이터를 만들 수 있는 확장을 사용하도록 구성됩니다. 즉, 동일한 도구를 사용하여 작성된 언어에 관계없이 마이크로 서비스를 모니터링할 수 있습니다.
OpenTelemetry를 사용하면 로그, 메트릭 및 추적의 세 가지 관찰 핵심 요소를 모두 수집하고 모니터링할 수 있습니다. 다음 단원에서 이러한 작업을 수행하는 방법을 확인할 수 있습니다.