서형찬

서형찬님의 아티클

서형찬

서형찬

Traffic Flow를 이용한 DNS 트래픽 라우팅

image.pngAutomating Multi-Cluster DNS with NGINX Ingress Controller

Traffic Flow 기반 DNS 라우팅의 필요성

전통적인 DNS 라우팅 방식은 항상 DNS 쿼리에 최적의 경로를 선택하지 못할 수 있어 지연 시간 증가 및 잠재적 다운타임을 초래할 수 있습니다. Traffic Flow 분석을 DNS 라우팅에 통합하면 실시간 네트워크 상태에 따라 라우팅을 동적으로 조정하여 더 빠르고 신뢰할 수 있는 DNS 해상도를 보장할 수 있습니다.

Traffic Flow 비용

Amazon Route 53 Traffic Flow는 고급 라우팅 기능을 제공하지만 비용이 발생합니다. 각 Traffic Flow DNS 레코드의 비용은 약 $50 per month입니다. 이는 표준 Route 53 DNS 쿼리 요금 외에 추가로 발생하는 비용이므로, 트래픽 관리 전략을 계획할 때 이 점을 고려하는 것이 중요합니다.

실전 예제: LiveKit 스트리밍 서비스

LiveKit을 이용한 스트리밍 서비스가 높은 트래픽 부하로 인해 전통적인 로드 밸런서를 사용하는 것이 비효율적일 때, DNS 트래픽 라우팅을 활용하여 다양한 데이터 센터로 트래픽을 효율적으로 분산합니다. Traffic Flow 분석과 Amazon Route 53의 Health Check 기능을 통해 Geolocation rule과 Failover rule을 사용하여 Vultr의 서울(SEL) 리전과 DigitalOcean의 샌프란시스코(SFO3) 리전으로 DNS 트래픽을 동적으로 라우팅합니다.

image.pngAWS Route 53 > Traffic flow > Traffic policies > Create traffic policy

  1. Geolocation Rule: 사용자의 지리적 위치에 따라 트래픽을 라우팅합니다. 예를 들어, 아시아 사용자는 Vultr의 서울 리전으로, 북미 사용자는 DigitalOcean의 샌프란시스코 리전으로 라우팅합니다.

  2. Failover Rule: 주 리전이 Health Check 실패로 인해 사용 불가능해질 경우, 트래픽을 자동으로 보조 리전으로 리디렉션하여 높은 가용성을 보장합니다.

AWS Route 53 > Health checks

라우팅 결정: 실시간 분석과 헬스 체크를 기반으로 DNS 쿼리가 동적으로 라우팅됩니다:

  • 아시아 지역 사용자는 서울 리전으로 라우팅됩니다.

  • 북미 지역 사용자는 샌프란시스코 리전으로 라우팅됩니다.

  • 서울 리전의 장애 발생 시 트래픽이 자동으로 샌프란시스코 리전으로 리디렉션되어 지속적인 가용성을 보장합니다.

NLB와 ALB와의 비교

1. 기술적 기능:

  • Traffic Flow: 지리적 라우팅(Geolocation rules) 및 장애 조치 라우팅을 포함한 고급 DNS 라우팅 기능을 제공합니다. DNS 수준에서 작동하며, 여러 데이터 센터 간의 트래픽 분산을 관리하는 데 적합합니다.

  • Network Load Balancer (NLB): OSI 모델의 Layer 4 (전송 계층)에서 작동하며, TCP/UDP 트래픽을 처리합니다. 높은 성능과 낮은 지연 시간을 요구하는 애플리케이션에 적합하며, 실시간 거래 및 게임과 같은 극단적인 성능이 필요한 경우에 이상적입니다.

  • Application Load Balancer (ALB): OSI 모델의 Layer 7 (애플리케이션 계층)에서 작동하며, HTTP/HTTPS 트래픽을 처리합니다. 콘텐츠 기반 라우팅, 호스트 기반 라우팅, SSL 종료 등 고급 기능을 제공하며, 복잡한 웹 애플리케이션에 적합합니다.

2. 비용 고려사항:

  • Traffic Flow: 각 Traffic Flow DNS 레코드에 대해 약 $50 per month의 비용이 발생하며, 표준 Route 53 DNS 쿼리 요금 외에 추가 비용이 발생합니다. 레코드 수와 라우팅 규칙의 복잡성에 따라 비용이 상대적으로 높을 수 있습니다.

  • NLB: 일반적으로 높은 처리량과 낮은 지연 시간이 필요한 애플리케이션에 대해 비용이 적습니다. 가격은 새로운 연결 수와 처리된 데이터 양에 따라 결정되며, TCP/UDP 트래픽을 대량으로 처리하는 데 비용 효과적입니다.

  • ALB: 고급 라우팅 기능으로 인해 일반적으로 더 비쌉니다. 비용은 로드 밸런서가 실행되는 시간, 처리된 데이터 양, 처리된 요청 수에 따라 결정됩니다.

3. 사용 사례 적합성:

  • Traffic Flow: DNS 기반 트래픽 관리와 글로벌 분산에 적합하며, 지리적 위치나 헬스 상태에 따라 트래픽을 라우팅할 필요가 있는 경우에 유용합니다.

  • NLB: 높은 성능과 낮은 지연 시간의 트래픽 처리가 필요한 경우에 적합하며, 백엔드 서비스나 실시간 애플리케이션에 유용합니다.

  • ALB: 요청 수준의 세부 라우팅, SSL 종료 등 애플리케이션 계층의 기능이 필요한 웹 애플리케이션에 적합합니다.

요약: Traffic Flow, NLB, ALB는 각각 다른 역할을 수행합니다. Traffic Flow는 DNS 기반 라우팅과 글로벌 트래픽 분산에 탁월하지만 비용이 상대적으로 높습니다. NLB는 높은 성능과 낮은 지연 시간이 필요한 애플리케이션에 적합하며 비용이 적습니다. ALB는 고급 애플리케이션 수준 라우팅 기능을 제공하지만 비용이 더 높습니다. 각 솔루션의 요구 사항, 성능, 예산에 따라 적절한 선택을 하는 것이 중요합니다.

4
0
서형찬

서형찬

Vercel과 AWS ACM을 함께 사용하며 발생하는 CAA 레코드 문제 해결하기

AWS Route53이나 Cloudflare DNS와 같은 DNS를 이용하면서 Vercel에 의해 추천되는 하위 도메인 DNS 등록 절차는 CNAME을 등록하는 것으로 이어지는데, 이는 cname.vercel-dns.com에 등록된 CAA record를 상속하는 CNAME의 역할로 인하여 하위 도메인에 종속된 다른 서비스의 인증서 발급이 실패하도록 유도됩니다.

code_20240415_171106_via_10015_io.png

이로 인해 ACM과 같은 서비스를 사용할 때 마다 하위 도메인마다 별도의 CAA record를 등록하는 불편한 과정을 반복해야만 이 문제를 해결할 수 있습니다. 또한 인증서 갱신에 대한 예측가능성을 낮추고 DNS record 관리의 복잡성이 높아졌어요.

스크린샷.png

CNAME으로 Vercel이 연결된 하위 도메인마다 CAA record를 반복적으로 등록해야하는 문제를 해결하기 위해 A record를 등록하여 사용하는 것입니다. Vercel은 도메인 연결 페이지에서 A record 대신 CNAME과 Vercel DNS를 추천하지만, 이처럼 외부 DNS 서비스를 이용하는 경우 Vercel의 A record로 등록하는 것을 추천해요.
https://vercel.com/guides/a-record-and-caa-with-vercel

모든 인증기관에서 인증서 발급을 허용하려면 Domain 전체에 CAA record를 등록하지 않아야 해요.

혹은 도메인 root에만 필요한 CAA record를 등록하는 것을 추천합니다. CAA record는 issue, issuewild와 같이 필요한 범위를 선택할 수 있어요.
https://docs.aws.amazon.com/acm/latest/userguide/setup-caa.html



5
1