Amazon Web Services 한국 블로그

AWS X-Ray, Amazon API Gateway 및 새로운 샘플링 규칙 API 지원

AWS X-Ray는 개발자가 프로덕션 및 테스트 환경에서 단순한 웹 앱부터 복잡한 분산 마이크로서비스에 이르기까지 모든 구성 요소를 분석하고 디버그할 수 있도록 하는 서비스입니다. 지난 2017년 X-Ray가 정식 출시된 이래 고객의 피드백을 빠르게 반영하여 AWS Key Management Service(KMS)를 이용한 암호화, 새로운 SDK 및 언어 지원(Python), 데몬 오픈 소싱, 지연 시간 시각화 도구 등 향상된 기능을 서비스에 지속적으로 적용해왔습니다.

그리고 오늘 두 가지 새로운 기능이 더 추가됩니다.

    • API를 통해 기반 서비스로 전달되는 요청을 간편하게 추적하고 분석할 수 있는 Amazon API Gateway를 지원합니다.
    • 얼마 전 AWS X-Ray 및 API에서 샘플링 규칙을 제어하는 기능도 발표했습니다.

그러면 API 추적을 활성화하는 방법을 알려 드리겠습니다.

X-Ray 추적 기능 활성화

먼저 API Gateway에 간단한 API를 배포합니다. 그리고 엔드포인트를 2개 추가합니다. 엔드포인트 중 하나는 Amazon Kinesis Data Streams로 레코드를 푸시하는 데 사용되고 다른 하나는 간단한 AWS Lambda 함수를 실행하는 데 사용됩니다. 실제 화면은 다음과 같습니다.

API를 배포하고 나면 [Stages] 하위 콘솔로 이동하여 “dev” 또는 “production”과 같은 특정 스테이지를 선택합니다. 여기에서 [Logs/Tracing] 탭으로 이동하여 [Enable X-Ray Tracing]을 선택하고 [Save Changes]를 클릭하여 X-Ray 추적 기능을 활성화할 수 있습니다.

추적 기능을 활성화한 후에는 X-Ray 콘솔로 이동하여 새로운 [Sampling] 인터페이스에서 샘플링 규칙을 확인할 수 있습니다.

콘솔에서 CLI, SDK 또는 API를 사용하여 규칙을 수정할 수 있습니다. 여기서 잠시 샘플링 규칙에 대해 간단히 설명하겠습니다.

샘플링 규칙
샘플링 규칙을 사용하면 기록할 요청과 추적 항목을 매우 세부적인 수준으로 사용자 지정할 수 있습니다. 이를 통해, 코드를 재작성하거나 애플리케이션을 재배포하지 않고도 모든 위치(AWS Lambda, Amazon ECS, Amazon Elastic Compute Cloud(EC2) 또는 온프레미스)에서 실시간으로 기록하는 데이터의 양을 제어할 수 있습니다. 위의 그림에서 보듯이 1초마다 첫 번째 요청을 기록하고 추가 요청의 5%를 기록하는 규칙이 기본적으로 설정됩니다. 1초마다 1개의 요청이 저장소가 되어 매초마다 하나 이상의 추적 항목이 기록되도록 보장한다는 것은 이미 설명한 바 있습니다. 추가 요청의 5%는 고정 비율이라고 합니다. 저장소와 고정 비율은 모두 구성할 수 있습니다.

저장소 크기를 50으로 설정하고 고정 비율을 10%로 설정할 경우 초당 100개의 요청이 규칙과 일치하면 초당 총 55개의 요청이 샘플링됩니다. X-Ray 서비스에서 샘플링 규칙을 읽도록 X-Ray 레코더를 구성하면 분산된 모든 컴퓨팅 리소스에 걸쳐 X-Ray 서비스의 샘플링 속도와 저장소가 유지됩니다. X-Ray SDK 및 데몬의 최신 버전을 인스턴스에 설치하기만 하면 이 기능을 활성화할 수 있습니다. 현재는 GA SDK만 지원되며 곧 Ruby와 Go를 지원할 예정입니다. API Gateway나 Lambda 같은 서비스를 이용하면 X-Ray 콘솔 또는 API에서 모든 설정을 바로 구성할 수 있습니다. 이 기능에 대해서는 설명서에 자세히 설명되어 있으므로 참조해 보시기 바랍니다.

샘플링 규칙을 사용하면 비용을 절감할 수 있는 것은 물론, 동적이고 세분화된 특성을 가진 규칙은 프로덕션 시스템을 디버깅하는 데에도 매우 강력한 성능을 발휘합니다. 특정 URL 또는 서비스에 보다 세부적인 모니터링이 필요한 경우 샘플링 규칙의 일부로서 그러한 설정을 지정할 수 있습니다. API의 개별 스테이지, 서비스 유형, 서비스 이름, 호스트 ARN, HTTP 메서드, 세그먼트 특성 등을 기준으로 필터링할 수 있습니다. 따라서 3만 피트 상공에서도 분산 마이크로서비스를 신속하게 점검하고, 문제를 파악하고, 일부 규칙을 조정하며, 프로덕션 요청을 심층적으로 분석할 수 있습니다.

트래픽의 99%째에 발생하는 문제에 대해서도 이 같은 개발 정보를 활용하여 전반적으로 향상된 고객 경험을 제공할 수 있습니다. 바로 이 같은 기능을 지원하기 위해 다년간 다양한 회사에서 수많은 애드혹 기능을 구축하고 배포한 기억이 납니다. 하지만 그다지 성공한 사례가 없습니다. 이제는 X-Ray를 배포하고 중앙에서 샘플링 규칙을 조정할 수 있으므로 만능 디버깅 기계를 손에 넣은 듯한 기분이 듭니다. 5년 전에 이 도구가 있었다면 얼마나 좋았을까요?

옛날 이야기는 이 정도로 하고 샘플링 규칙 설정 방법을 살펴보겠습니다.

여기서는 기본 샘플링 규칙만 다룹니다. 추적을 활성화하고 요청을 몇 개 실행했으므로 30초 정도 지나면 서비스 맵을 새로 고쳐 그 결과를 확인할 수 있습니다. 아무 노드나 클릭하여 바로 추적 항목을 보거나, [Traces] 하위 콘솔로 이동하여 모든 추적 항목을 살펴볼 수 있습니다.

이 하위 콘솔에서는 트리거되는 개별 URL, 소스 IP, 기타 다양하고 유용한 지표를 확인할 수 있습니다.

보다 심층적으로 분석하려면 검색 표시줄에 필터링 규칙을 입력하여 특정 추적 항목을 검색하면 됩니다. API Gateway 세그먼트에는 몇 가지 유용한 주석이 있습니다. 이 주석은 API ID와 스테이지 등을 필터링하고 그룹화하는 데 사용할 수 있습니다. 일반적인 API Gateway 추적 항목은 아래의 그림과 같습니다.

X-Ray에 API Gateway 지원이 추가되면서 서버리스 환경에서 완벽한 프로덕션 추적이 가능하게 되었고, 샘플링 규칙은 코드를 재배포하지 않고 실시간으로 추적 설정을 조정할 수 있게 해 줍니다. 런던에서 열린 AWS Summit에서 AWS X-Ray에 대해 Skyscanner의 Ashley Sole와 대화하는 유익한 시간을 가졌는데, Ashley가 그날 제게 가장 먼저 물어본 것도 바로 이 두 기능이었습니다. 이번에 출시된 서비스가 Ashley를 비롯한 개발자들이 프로덕션 애플리케이션을 디버깅하고 분석하는 데 유용하게 활용되기를 바랍니다.

지금 이용 가능

이 두 기능은 API Gateway와 X-Ray가 제공되는 모든 퍼블릭 리전에서 현재 지원되고 있습니다. X-Ray가 콘솔과 API를 지난 주에 출시한 만큼 이미 접해보신 분도 많을 겁니다. 지금 바로 사용해 보십시오. 언제나 처럼 Twitter에 의견을 남겨 주시거나 아래에 댓글을 달아 주시기 바랍니다.

Randall