Site icon 지락문화예술공작단

Amazon CloudFront 서버 타이밍 헤더를 통한 동작 및 성능 모니터링하기

Amazon CloudFront 서버 타이밍 헤더를 통한 동작 및 성능 모니터링하기

Amazon CloudFront서버 타이밍 헤더(Server Timing Headers)라는 새로운 기능을 출시했습니다. 이 기능은 요청을 수신한 시점에 콘텐츠가 캐시로부터 제공되었는지, 그 요청이 어떻게 CloudFront 엣지 위치로 라우팅이 되었는지, 그리고 연결과 응답 과정의 각 단계 동안에 얼마만큼의 시간이 흘렀는지 등과 같은 자세한 성능 정보를 제공합니다.

서버 타이밍 헤더는 뷰어(viewer)의 응답에서 HTTP 헤더의 형태로 추가적인 메타 데이터를 제공하며, 클라이언트-측 애플리케이션 코드에서 이 헤더를 사용하거나 조사할 수 있습니다. 서버 타이밍 헤더를 사용하여 CloudFront의 성능 문제를 해결할 때 더 자세한 통찰력을 얻거나, CloudFront의 행동을 조사하거나, 사용자-요청 트랜잭션 (캐시 미스, 첫번째 바이트에 대한 지연 그리고 마지막 바이트에 대한 지연 등과 같은)에 대한 통계 수치를 수집하고 통합하는데 사용할 수 있습니다.

이 글을 통해, 서버 타이밍 헤더를 활성화하는 방법을 배우고 이 기능의 사용을 통해 사용자 경험 개선을 증진시킬 수 있는 일반적인 사례에 대해 더 많이 이해를 하실 수 있습니다.

Amazon CloudFront 서버 타이밍 헤더 활성화하기

여기에서는, AWS 관리 콘솔을 통해 CloudFront 배포 상의 서버 타이밍 헤더를 어떻게 활성화 하는지 살펴 보겠습니다. 우선, CloudFront > 정책> 응답 헤더에서 새로운 사용자 응답 헤더 정책을 생성하거나, 기존에 존재하는 것을 업데이트합니다. 응답 헤더 정책에서, 서버 타이밍 헤더 기능을 활성화할 수 있습니다. 아래의 두 그림은 기능을 활성화하는 방법과, 활성화가 되었을 때의 정책이 어떤 모습인가를 보여줍니다.

그림 1: 서버 타이밍 헤더를 활성화하기 위한 응답 헤더 정책 섹션

그림 2: 활성화된 서버 타이밍 헤더를 보여주는 응답 헤더 정책 구성

서버 타이밍 헤더는 중요한 메트릭을 포함할 수 있게 해주는데, 이 메트릭은 CloudFront를 통해 거쳐가는 요청에 대한 추가적인 성능 정보를 제공합니다. 이러한 헤더에 포함되어 있는 정보를 다양한 구현 과정에서 사용할 수 있습니다. 아래에는 고려해 볼 만한 몇 가지의 사례가 있습니다.

서버 타이밍 헤더 상세분석

CloudFront에 의해 처리되는 HTTP 요청은 엣지 지역, 지역적 엣지 캐시 그리고 오리진 실드 또는 오리진 (캐시 미스 경우)와 같은 CloudFront의 여러 계층을 거쳐 오리진을 향해 상향 전달될 수 있습니다. 그리고나서, 응답은 같은 계층을 통해 사용자 (viewer)를 향해 하향으로 전달됩니다. CloudFront의 더 자세한 계층에 대해서는, AWS New York Summit 2019의 이 영상(YouTube)을 시청하십시오.

서버 타이밍 헤더는 상향 흐름으로부터 정보와 지표을 수집하고 그것을 특정 응답 헤더를 통해 반환을 할 것입니다. 다음 서버 타이밍 헤더 예제는 응답을 통해 반환되어집니다.

server-timing: cdn-cache-hit,cdn-pop;desc="IAD89-C1″,cdn-rid;desc=”qx0z2Nquy2s3jjH3leHZI7k10X9sN9t5ZmIsjNCqvnJ2uOCjZmyFbQ==”,cdn-hit-layer;desc=”EDGE”

이 정보를 통해, 요청이 IAD89-C1 PoP에 있는 엣지 계층, CloudFront 캐싱의 첫번째 계층 (cdn-hit-layer;desc=“EDGE”) 에서 캐시히트 (cdn-cache-hit)가 발생했다고 결정할 수 있습니다. 사실, cdn-hit-layer 지표는 세개중 하나의 값을 가질 수 있습니다: EDGE는 요청을 받은 엣지 지역을 나타내고, REC는 엣지 지역의 뒤에 있는 지역적 엣지 캐시를 나타내며, 오리진 실드는 CloudFront 배포에서 선택되어진 경우 오리진 실드 계층을 나타냅니다.

이제 캐시 미스가 발생해서 오리진 서버로 전달되어진 요청에 대해 생각해 봅시다.

server-timing: cdn-upstream-layer;desc="REC”,cdn-upstream-dns;dur=0,cdn-upstream-connect;dur=195,cdn-upstream-fbl;dur=366,cdn-cache-miss,cdn-pop;desc=”IAD89-C3″,cdn-rid;desc=”bjEUzYyv7e3FyYoK93Tw0MNYhNV2zVTMbjFO8g-Tr5aEW108VkzM-w==”

이제 cdn-upstream 접두어를 가진 새로운 지표를 보게 된 것에 대해 주목을 하십시오. 이 접두어는 오리진에 연결된 CloudFront 계층을 설명합니다 (cdn-upstream-layer;desc=“REC”). 그리고, 요청의 다양한 부분의 성능을 설명합니다.

결론

이 글에서는 서버 타이밍 헤더라고하는 관찰가능성(observability) 기능을 소개드렸습니다. 이 기능은 CloudFront 리소스의 가용성과 성능을 진단하고 유지하는데 도움을 드립니다. 서버 타이밍 헤더는 CloudFront가 제공하는 추가 기능입니다. 해당 툴은 표준 그리고 실시간 로그, 경보 그리고 콘솔 리포트를 사용하여 CloudFront의 자원을 관측하는 것과, 잠재적인 이슈를 조사하는 데 사용이 됩니다. 자세한 사항에 대해서는 CloudFront Developer Guide 를 보시기 바랍니다.

서버 타이밍 헤더는 CloudFront 배포에서 즉각적인 사용이 가능합니다. CloudFront 콘솔이나 AWS SDK에서 서버 타이밍 헤더를 활성화할 수 있습니다. CloudFront 서버 타이밍 헤더를 사용하는데에 추가적인 비용은 들지 않습니다.

– Sangram Thorat, AWS Enterprise Support Lead
– Vinicius Pedroni, AWS Solutions Architect

이 글은 AWS Networking & Content Delivery의 Amazon CloudFront introduces Server Timing headers을 신동곤님(AWS Principal TAM)이 한국어로 번역하였습니다.

Source: Amazon CloudFront 서버 타이밍 헤더를 통한 동작 및 성능 모니터링하기

Exit mobile version