배포 추적 (Deployment Tracking)
Datadog으로 버전 태그를 통해 배포를 추적하는 방법을 알아봐요. version 태그를 사용해 배포와 서비스 동작을 모니터링하고 소프트웨어 배포 전략을 지원해요.
출처: 문서
본문
버전 태그 (The version tag)
version 태그는 Unified Service Tagging 내에서 예약되어 있어요. 인프라 메트릭(호스트, 컨테이너, 프로세스, NPM 체크), 트레이스 메트릭, 트레이스, 프로파일, 로그에 적용돼요.
version 태그를 사용해 배포와 서비스 동작을 모니터링하여 소프트웨어 배포 전략을 지원할 수 있어요.
version 태그를 설정하지 않았다면 설정 정보는 Unified Service Tagging 문서를 참고하세요.
Service 페이지에서 버전 태그 사용하기 (Using version tags on the Service page)
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/ServicePageRequestsErrorsByVersion.26ed299448d5c8e16d7198094f533f8c.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/ServicePageRequestsErrorsByVersion.26ed299448d5c8e16d7198094f533f8c.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Versions on the Service page" /%}
Service 페이지에서 version 태그를 사용할 수 있으면 Requests 위젯의 범위를 다음으로 한정할 수 있어요:
- 버전별 총 요청 (Total Requests by Version), 또는
- 버전별 초당 요청 (Requests Per Second by Version)
Errors 위젯의 범위는 다음으로 한정할 수 있어요:
- 버전별 총 오류 (Total Errors by Version)
- 버전별 초당 오류 (Errors Per Second by Version), 또는
- 버전별 오류율 % (% Error Rate by Version)
Requests와 Errors 위젯은 모두 대시보드와 모니터로 내보낼 수 있어요.
자동 결함 배포 감지를 위한 버전 태그 사용하기 (Using version tags for automatic faulty deployment detection)
서비스를 version 태그로 구성하면 자동 결함 배포 감지 (Automatic Faulty Deployment Detection)가 활성화돼요.
잠재적으로 결함이 있는 모든 배포에 대해 자동으로 알림을 받는 모니터를 설정할 수 있어요. 이렇게 하려면 New Monitors 페이지로 이동해 Events를 선택하고, 모니터를 정의하는 검색 쿼리에 tags:deployment_analysis를 포함하세요.
배포된 버전 (Versions deployed)
version 태그로 구성된 서비스는 Service 페이지의 기본 서비스 건강 그래프 아래에 버전 섹션이 있어요. 버전 섹션은 선택한 시간 간격 동안 활성 상태였던 서비스의 모든 버전을 보여주며, 활성 서비스가 상단에 표시돼요.
기본적으로 다음이 표시돼요:
-
해당 기간 동안 이 서비스에 배포된 버전 이름.
-
이 버전에 해당하는 트레이스가 처음·마지막으로 관찰된 시점.
-
Error Types 표시기: 직전 버전에는 나타나지 않았지만 각 버전에 나타나는 오류 유형의 수를 보여줘요.
참고: 이 표시기는 이전 버전의 트레이스에서 관찰되지 않은 오류를 보여줘요. 이 버전이 반드시 이 오류를 도입했다는 의미는 아니에요. 새 오류 유형을 살펴보는 것은 오류 조사를 시작하는 좋은 방법이 될 수 있어요.
-
초당 요청.
-
총 요청 대비 오류율(백분율).
이 개요 표에 열을 추가하거나 제거할 수 있으며 선택 사항은 저장돼요. 추가로 사용 가능한 열은:
- 버전에서 활성 상태이며 이전 버전에는 없었던 엔드포인트.
- 활성 시간: 해당 버전에 대해 Datadog으로 전송된 첫 트레이스부터 마지막 트레이스까지의 시간.
- 총 요청 수.
- 총 오류 수.
- p50, p75, p90, p95, p99 또는 max로 측정된 지연 시간.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/VersionComparison.22658393ea8fae2a616dfd2d80d01d87.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/VersionComparison.22658393ea8fae2a616dfd2d80d01d87.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Versions on the Service Page" /%}
참고: 버전 섹션은 페이지 상단에서 선택한 시간 간격 동안 보고된 버전이 둘 이상인 경우에만 표시돼요.
배포 비교 (Deployment comparison)
버전 요약 표에서 아무 버전 행이나 클릭하면 버전 비교 페이지가 열려 같은 서비스의 두 버전을 비교할 수 있어요. 기본적으로 선택한 버전은 직전 버전과 비교되지만, 지난 30일 내의 임의의 두 버전을 비교하도록 변경할 수 있어요.
버전 비교 페이지에서 다음 정보를 찾을 수 있어요:
- 비교 그래프 (Comparison Graphs): 서비스에 대한 요청과 오류의 시각화로, 다양한 유형의 배포를 관찰하는 데 유용해요.
- 오류 비교 (Error Comparison): 버전이 도입하거나 해결했을 수 있는 오류.
- 엔드포인트 비교 (Endpoint Comparison): 각 버전에서 엔드포인트 지연 시간과 오류율이 어떻게 동작하는지.
비교 그래프 (Comparison graphs)
Service 페이지의 그래프와 유사하게 Requests와 Errors 그래프는 배포 롤아웃 또는 오류율 스파이크의 개요를 보여줘요. 이 페이지에서 그래프는 비교를 위해 선택된 버전을 강조하고, 추가 컨텍스트를 위해 다른 모든 버전은 회색으로 남겨요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/ComparisonGraphs.490b44f91d2d3c3d708bc94a45f06c8a.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/ComparisonGraphs.490b44f91d2d3c3d708bc94a45f06c8a.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Deployment Comparison Graphs" /%}
연속 프로파일러가 활성화되어 있으면 CPU 시간이나 할당 메모리 같은 핵심 성능 메트릭의 비교도 APM 리소스별로 볼 수 있어요. 여기에서 프로파일 비교 페이지 (Profile Comparison Page)로 피벗할 수 있어요:
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/DeploymentTrackingProfileComparison.97b10db7b6a3309918919dcf7e379cf7.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/DeploymentTrackingProfileComparison.97b10db7b6a3309918919dcf7e379cf7.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Deployment Profiling Comparison Graphs" /%}
오류 비교 (Error comparison)
이 섹션은 두 버전 각각에서 감지된 오류 유형의 차이를 나열하며, 다음을 강조해요:
- 소스 버전에만 나타나는 오류 유형: 문제 해결에 유용해요;
- 소스 버전에서 더 이상 나타나지 않는 오류 유형: 수정 사항 검증에 유용해요; 그리고
- 양쪽 모두에서 활성 상태인 오류 유형.
이 표에서 선택한 오류에 해당하는 실시간 또는 과거 트레이스로 피벗해 추가 조사할 수 있어요.
참고: 오류 비교는 관찰된 오류 유형을 기반으로 해요. 오류 유형이 드물면 아직 관찰되지 않았기 때문에 더 이상 나타나지 않는 것으로 나열될 수 있어요.
{% video url="https://docs.dd-static.net/images/tracing/deployment_tracking/ErrorComparison.mp4" /%}
엔드포인트 비교 (Endpoint comparison)
이 섹션에서는 서비스의 각 엔드포인트의 성능(요청, 지연 시간, 오류)을 비교할 수 있어요. Value로 테이블을 정렬해 최고 처리량 엔드포인트가 배포 후에도 여전히 정상인지 확인하거나, % Change로 정렬해 지연 시간이나 오류율의 큰 변화를 찾을 수 있어요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/EndpointComparison.5f065da94a75127934b278301a8191e7.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/EndpointComparison.5f065da94a75127934b278301a8191e7.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Endpoint Comparison" /%}
배포 전략 (Deployment strategies)
Datadog의 배포 추적 기능은 다음 배포 전략(또는 다른 전략)을 사용할 때 배포된 코드의 성능을 파악하게 해 주어, 잘못된 코드 배포를 감지하고 변경의 영향을 억제하며 인시던트에 더 빠르게 대응할 수 있게 도와줘요.
롤링 배포 (Rolling deploys)
롤링 배포는 호스트나 컨테이너에 새 버전을 하나씩 배포하는 동안 트래픽을 다른 인스턴스로 보내 무중단을 제공해요.
Datadog을 사용해 롤링 배포를 모니터링하고 결과적인 오류 증가를 감지할 수 있어요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/rolling.08f5b19df2a7a01afdb0e905471fd381.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/rolling.08f5b19df2a7a01afdb0e905471fd381.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Rolling Deployment" /%}
블루-그린 배포 (Blue and green deploys)
블루-그린(또는 다른 색 조합) 배포는 트래픽을 모두 수용하는 두 개의 서비스 클러스터를 실행하거나, 하나를 대기 상태로 유지해 다른 하나에 문제가 있을 때 활성화할 수 있게 함으로써 다운타임을 줄여요.
이러한 서비스에 version 태그를 설정하고 보면 요청과 오류를 비교해 한 클러스터의 오류율이 다른 클러스터보다 높은지, 클러스터가 SLO를 충족하지 못하는지, 또는 트래픽을 받지 않아야 하는 클러스터가 트래픽을 받고 있는지 감지할 수 있어요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/BlueGreenDeploy.48aea58486f1064cac0d18334c68f887.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/BlueGreenDeploy.48aea58486f1064cac0d18334c68f887.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Blue/Green Deployment" /%}
카나리아 배포 (Canary deploys)
카나리아 배포에서는 제한된 수의 호스트에 또는 일부 고객에게 서비스를 배포해 제한된 영향으로 새 배포를 테스트해요.
Datadog 내에서 version 태그를 사용하면 카나리아 배포의 오류율, 트레이스, 서비스 동작을 비교할 수 있어요.
예를 들어 다음 이미지에서 카나리아 버전이 배포되고 몇 개의 오류가 발생한 후 제거된 것을 볼 수 있으며, 해당 버전의 트레이스는 추가 영향 없이 조사에 사용할 수 있어요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/canarydeployment.260efb781fe435fa9081d80782d5cc64.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/canarydeployment.260efb781fe435fa9081d80782d5cc64.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Canary Deployment" /%}
섀도우 배포 (Shadow deploys)
섀도우 배포에서는 릴리스 후보 버전이 운영 버전과 함께 배포되고, 들어오는 트래픽이 두 서비스 모두로 전송되며, 사용자에게는 운영 버전의 결과만 표시되지만 두 버전 모두에서 데이터를 수집할 수 있어요.
섀도우 배포를 사용하면 실제 운영 트래픽에 대해 잠재적 릴리스를 테스트할 수 있어요. 섀도우에 version 태그를 지정하면 두 버전 간의 오류율, 트레이스, 서비스 동작을 비교해 섀도우 버전을 릴리스해야 하는지 결정할 수 있어요.
Datadog 내 다른 곳에서 버전 태그 사용하기 (Using version tags elsewhere within Datadog)
version 태그는 검색 뷰를 특정 버전으로 필터링하거나 다른 버전의 메트릭을 비교하는 등 Datadog 어디에서나 사용할 수 있어요.
리소스 페이지 (Resource page)
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/ResourcePage.b401bcae1f7138ef0f63dfcf660a9384.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/ResourcePage.b401bcae1f7138ef0f63dfcf660a9384.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Versions on the Resource Page" /%}
리소스 페이지에서 버전 태그를 사용할 수 있으면 requests 위젯의 범위를 다음 중 하나로 한정할 수 있어요:
- 버전별 총 요청 (Total Requests by Version)
- 버전별 초당 요청 (Requests per second by Version)
errors 위젯의 범위는 version 태그와 관련된 세 가지 옵션 중 하나로 한정할 수 있어요:
- 버전별 총 오류 (Total Errors by Version)
- 버전별 초당 오류 (Errors per second by Version)
- 버전별 오류율 % (% Error rate by Version)
이 모든 것은 대시보드와 모니터로 내보낼 수 있어요.
트레이스 검색 및 분석 (Trace search and analytics)
{% video url="https://docs.dd-static.net/images/tracing/deployment_tracking/AnalyticsErrorsByVersion.mp4" /%}
사용 가능할 때 version은 Trace Search와 Analytics 모두에서 태그로 사용할 수 있어요. 실시간 검색 모드와 인덱싱된 트레이스를 필터링하거나, 분석 쿼리를 필터링·그룹화하는 데 사용할 수 있어요.
version 태그 필터링을 포함한 Analytics는 대시보드와 모니터로 내보낼 수 있어요.
버전별 프로파일 (Profiles by version)
특정 버전에 해당하는 프로파일을 검색할 수 있어요. 또한 배포 비교 페이지 오른쪽 상단의 View Profiles를 클릭해 비교 중인 버전 중 하나로 범위가 한정된 연속 프로파일러를 열 수도 있어요.
{% image source="https://docs.dd-static.net/images/tracing/deployment_tracking/VersionProfiler.e032180b68662dcc6fd453a7a642413e.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/tracing/deployment_tracking/VersionProfiler.e032180b68662dcc6fd453a7a642413e.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Filter Profiles by Version" /%}
더 알아보기 (Learn more)
도움이 되는 추가 문서, 링크, 아티클이에요: