BLOG
.NET 응용 프로그램을 현대화하는 것은 상당히 복잡한 프로세스를 거치지만, 응용 프로그램의 동작에 대한 완전한 가시성을 확보할 수 있다는 이점이 있습니다. 최신 풀 스택 관측 플랫폼인 Datadog은 애플리케이션에서 전체 데이터 및 메트릭을 추출합니다. 이는 응용 프로그램 현대화를 위한 정보에 입각한 결정을 내리는 데 도움이 됩니다.
Datadog은 DevOps, 마이그레이션, 컨테이너 및 Microsoft 워크로드에서 AWS 컴피턴시를 보유한 AWS 고급 기술 파트너이며, 고객이 메트릭, 분산 추적, 로그 등을 빠르게 검색하고 필터링 또는 분석하는 데 도움이 되는 다양한 애플리케이션과 인프라 모니터링 기능을 제공합니다. 또한, 사용자 환경 전반의 데이터에 대한 개방형 탐색을 제공함으로써 애플리케이션, 플랫폼 및 서비스 성능의 문제 해결 및 최적화를 돕고 있습니다.
이번 포스팅에서는 Datadog의 자동 .NET 계측을 사용하여 애플리케이션에 대한 인사이트를 얻고 monolithic .NET 애플리케이션을 마이크로서비스로 현대화할 때의 주요 과제를 살펴보겠습니다. 이와 더불어 AWS 서비스 및 서비스 수준 태깅과 Datadog의 통합을 사용하여 분산 애플리케이션 전반에 대한 가시성을 확보하는 방법에 대해서도 자세히 알아보겠습니다.
애플리케이션 현대화
모놀리식 애플리케이션을 마이크로서비스로 현대화하는 일반적인 방법은 단일 애플리케이션을 여러 개로 느슨하게 결합된 서비스로 분리하여 개발 및 배포를 가속화하는 것입니다. 여기에서 선택할 수 있는 분해 패턴은 많지만, 현대화를 위한 일반적인 핵심 전략은 모놀리스에서 논리 단위를 격리하고 추출하여 격리된 마이크로서비스로 재배포하는 것입니다. 모놀리스를 마이크로서비스로 분해하는 것은 점진적인 프로세스이며 애플리케이션이 각 분해 마일스톤에서 예상대로 계속 작동하는지 확인하는 것이 중요합니다. 모놀리스 와 마이크로서비스에 각각 오픈 소스 .NET 추적 프로그램 과 Datadog 에이전트 를 설치하면 Datadog에서 요청 추적 및 애플리케이션 성능 데이터를 즉시 볼 수 있습니다.
Datadog의 .NET 추적 라이브러리는 SQL Server 및 PostgreSQL과 같은 ADO.NET 호환 데이터베이스 및 Redis, Elasticsearch 및 MongoDB와 같은 기타 데이터 저장소와 함께 코드를 자동으로 계측합니다. Datadog에는 75개 이상의 AWS 서비스 통합을 포함하여 450개 이상의 내장 통합이 있습니다. 이는 이러한 서비스가 호스팅되는 방식에 관계없이 환경의 분산 캐시, 데이터 저장소 및 클라우드 서비스와 같은 프레임워크 및 기타 종속성을 통해 이동하는 애플리케이션 요청에 대한 가시성을 확보할 수 있음을 의미합니다.
마이크로 서비스를 안전하고 효과적으로 배포하기 위해 모놀리스에서 새 엔드 포인트로 요청을 점진적으로 이동할 수 있습니다. 추적을 모니터링하면 요청이 예상대로 계속 처리되는지 여부와 오류 또는 지연이 발생하는 위치를 알 수 있습니다. 개별 서비스와 함께 모놀리스의 모니터링 데이터를 시각화하는 Datadog 대시보드는 현대화가 어떻게 진행되고 있는지에 대한 높은 수준의 개요를 제공하고 있습니다. 예를 들어 요청, 오류 및 지연 시간과 같은 주요 KPI를 추적하여 서비스의 오작동을 나타내는 급증 또는 감소에 대해 알려줍니다.
다른 데이터 시각화는 다음과 같은 환경에 대한 더 깊은 통찰력을 제공할 수 있습니다.
- 클라우드 호스팅 인프라가 애플리케이션에 적합한 규모인지 판단하는 데 도움이 되는 리소스 사용량 메트릭
- 로그, 애플리케이션에서 발생하는 상황과 오류 급증 여부에 대한 추가 컨텍스트 제공
- 트래픽을 이동할 때 애플리케이션의 엔드포인트가 항상 응답하는지 확인하기 위한 합성 API 테스트
그림 1은 Datadog에서 사용할 수 있는 몇 가지 메트릭을 보여줍니다. 이 예에서는 애플리케이션 성능과 오류 메트릭이 동시에 표시되어 개선해야 할 영역에 대한 즉각적인 지침을 제공합니다.
마이크로서비스 모니터링
마이크로서비스 기반 애플리케이션 아키텍처는 본질적으로 모놀리스보다 더욱 복잡합니다. 여러 개별 서비스에서 데이터를 모니터링하고 시각화할 수 있다는 것은 전체 애플리케이션의 성능을 이해하고 문제를 찾는 데 중요한 역할을 합니다. 그러나 각 서비스가 잠재적으로 자체 프레임워크 및 기술 세트를 활용하고 자체 모니터링 데이터를 생성하며 자체 CI 파이프라인에서 배포되므로 서비스 성능을 이해하는 데 필요한 모든 정보를 수집하는 것은 어려울 수 있습니다.
서비스 간 통신을 시각화하고 여러 종속성에 걸쳐 요청을 추적하는 데 도움이 되는 주요 Datadog 기능을 살펴보겠습니다. 그전에 먼저 Datadog 플랫폼에서 다양한 유형의 서비스 원격 측정을 보다 효과적으로 연결하려면 태깅을 사용하는 것이 좋습니다. 태그를 지정하면 모든 서비스와 기본 인프라의 모니터링 데이터를 연결하고 비교하는 데 도움이 됩니다.
전체 환경에서 서비스 데이터 통합하기
Datadog은 resource에 적용될 때 Datadog 전반에 걸쳐 telemetry를 연결할 수 있는 메트릭, 로그, 추적을 포함한 three global tags (ENV, 서비스, 및 버전)를 보유하고 있습니다. 이는 애플리케이션 하위 집합의 상태와 성능을 이해하는 데 필요한 모든 정보를 탐색하는 데 유용하며, 대시보드, 분산 추적, 배포 추적, 로그 분석 등을 사용하여 이 데이터를 연관시킬 수 있습니다. 예를 들어 대기 시간이 긴 마이크로서비스 기반 애플리케이션이 있다고 가정해 보겠습니다. 계측된 서비스와 해당 종속성 모두에 적절한 태그를 적용하면 요청 추적과 기본 인프라 지표를 원활하게 전환하여 지연의 원인을 파악할 수 있습니다.
그림 2는 태그를 필터링하여 관련 추적을 빠르게 찾는 방법을 보여줍니다. 전역 태그는 검색 범위를 좁히는 데 도움이 되는 제어 가능한 매개변수 중 하나입니다.
그림 2. 관련 트레이스를 찾기 위한 필터 컨트롤을 보여주는 Datadog 대시보드
집중 알림 생성
경고는 문제가 발생했을 때 담당자에게 알려주는 가장 좋은 방법입니다. Datadog을 사용하면 담당자가 의미 있는 문제에 대해 알림을 받을 수 있도록 경고 동작을 사용자 지정할 수 있습니다. 마이크로서비스 아키텍처에서 경고는 문제가 발생한 서비스 또는 리소스를 효과적으로 식별해야 합니다. 태그를 사용하여 개별 팀은 관리하는 서비스에 중점을 둔 알림을 생성할 수 있습니다. 즉, 해당 팀은 다른 팀의 경보 피로를 줄이는 문제에 대해 자동으로 알림을 받으며, 이는 영향을 받는 시스템의 소유자를 식별하고, 문제 해결 시간을 줄이는 데 도움을 줍니다. 또한, 태그를 사용하여 태그별로 알림을 그룹화할 수 있는 다중 알림을 설정하여 알림을 더욱 세분화시킬 수도 있습니다. 분산된 클라우드 관리 환경에서 이는 특정한 가용 영역, 클러스터 또는 호스트에 문제가 발생했을 때 알림을 통해 문제의 원인을 식별하는 것을 돕습니다.
그림 3. 사용자 정의 가능한 오류 대시보드
서비스 상호 작용 시각화
그림 4. Datadog 서비스 맵 대시보드
서비스 맵은 경고 상태에 있는 서비스를 식별하는 시각적 표시기와 함께 애플리케이션의 상위 수준으로 작동합니다. 지도에서 서비스 노드를 강조 표시하면 해당 서비스와 종속성 간의 요청 트래픽에 대한 요청 볼륨, 평균 지연 시간 및 오류율이 표시됩니다. 이를 통해 서비스 간 지연 또는 통신 문제를 빠르게 식별할 수 있습니다. 노드를 클릭하면 해당 서비스로 범위가 지정된 다른 데이터로 즉시 피벗 할 수 있으므로 근본 원인 분석을 시작할 수 있습니다.
Flame 그래프를 사용하여 종단 간 요청 시각화하기
마이크로 서비스 환경에서 개별 요청은 수십 개의 개별 서비스 및 종속성에 전파될 수 있습니다. 서비스 경계를 넘어 각 요청에 대한 종단 간 가시성을 확보하는 것은 속도 저하 또는 오류 발생 위치를 식별하는 데 중요합니다. Flame 그래프는 많은 양의 데이터를 압축하여 시각적이고 소화하기 쉬운 방식으로 표시하는 데 탁월합니다. 그림 5는 요청의 개별 단계를 세분화하여 지연 문제를 식별하는 데 도움이 되는 Flame 그래프를 보여줍니다.
그림 5. 종단 간 요청을 시각화하는 Flame 그래프
추적을 보면 오류(범위 주위에 빨간색 상자로 표시됨)와 지연 시간을 빠르게 식별할 수 있습니다. Datadog의 통합 서비스 태깅은 추적 데이터를 관련 로그 및 인프라 메트릭과 연결하므로 인프라 리소스 과사용을 대기 시간과 쉽게 연관시킬 수 있습니다. 또한 오류 추적에 대한 로그 를 직접 탐색하여 디버깅을 위한 추가 컨텍스트를 얻을 수도 있습니다.
서비스 배포 모니터링
마이크로서비스 아키텍처는 각 서비스의 독립적인 개발 및 배포를 용이하게 합니다. 이를 통해 팀은 서비스를 훨씬 더 자주 배포할 수 있지만 배포를 관리하고 문제를 발견하는 것은 더 어려워집니다. Datadog APM의 배포 추적을 통해 버전 태그를 활용하여 추적, 추적 메트릭 및 로그를 코드 버전별로 집계하여 배포 성능을 실시간으로 비교할 수 있습니다.
그림 6. Datadog 배포 추적 대시보드 스냅샷
배포 추적은 버전별 요청 볼륨, 오류 및 지연 시간을 포함한 주요 지표를 시각화하므로 새 배포로 인해 오류 또는 성능 회귀가 발생했는지 빠르게 식별할 수 있습니다. 배포 추적 메트릭에서 서비스 태그를 통해 연결된 관련 추적 및 로그로 쉽게 피벗할 수 있습니다. 이를 통해 애플리케이션 및 기본 인프라 내에서 발생하는 상황에 대한 더 많은 컨텍스트를 제공합니다. 그런 다음 문제를 평가하고 수정 사항을 배포한 후 다시 체크인하여 오류 또는 회귀가 해결되었는지 확인할 수 있습니다.
결론
모놀리식 .NET 애플리케이션을 클라우드 호스팅 마이크로서비스 기반 아키텍처로 현대화하면 확장성과 탄력성이 증가하고 운영 오버헤드를 줄일 수 있습니다. 그러나 마이크로서비스는 현대화 과정과 그 이후까지도 상당한 관찰이 필요하다는 문제점이 있습니다. Amazon RDS, Amazon S3, Amazon EKS, Amazon ElastiCache, AWS Fargate 등과 같은 수십 가지 주요 AWS 서비스에 대한 Datadog의 턴키 통합을 사용하여 Fargate CPU 및 메모리 사용량과 같은 주요 인프라 지표를 더 높은 수준과 함께 볼 수 있습니다. 이는 .NET 애플리케이션에서 원격 측정을 수행하며, Datadog은 단일 창을 사용하여 분산 애플리케이션의 모든 계층을 모니터링할 수 있도록 환경 전반의 원격 측정을 통합합니다.
Datadog 에이전트 및 .NET Tracer 를 설치하여 지금 .NET 앱 모니터링을 시작할 수 있습니다. Datadog을 처음 사용하는 경우에는 이 trial을 등록해주세요. AWS는 귀사가 클라우드를 최대한 활용할 수 있는 방법을 평가하는 데 도움을 드릴 수 있습니다. 클라우드에서 가장 중요한 애플리케이션을 마이그레이션하고 현대화하기 위해 AWS를 선택한 수백만의 고객과 함께해보세요. Windows Server 또는 SQL Server 현대화에 대해 자세히 알아보려면 Windows on AWS를 방문해보세요. 지금 마이그레이션 여정을 시작하려면 당사에 문의하십시오.
메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.