안녕하세요:) 오늘은 저번시간에 이어서 'GSLB와 CDN을 활용한 웹 서비스 최적화'라는 주제를 다루어 보겠습니다.
웹사이트의 성능을 최적화하고 사용자에게 더 나은 경험을 제공하기 위해 어떤 기술이 사용되는지 궁금하시다면, 이번 글을 통해 그 해답을 찾으실 수 있을 것입니다. 클라이언트와 서버 사이에 통신이 이루어진 후 에 웹 페이지가 어떻게 사용자에게 빠르게 전달되는지, 그 과정을 GSLB와 CDN의 관점에서 자세히 살펴보겠습니다.
1. GSLB란?
GSLB는 Global Server Load Balancing의 약자로, 전 세계에 분산된 여러 서버 중에서 클라이언트에게 가장 적합한 서버로 트래픽을 분배하는 기술이며 DNS에서 발전된 개념입니다.
쉽게 말해, 클라이언트가 웹사이트에 접속할 때, 그 클라이언트가 위치한 지역과 가장 가까운 서버를 선택하여 연결해주는 역할을 합니다. 이렇게 클라이언트를 가장 가까운 서버로 연결시켜주기 때문에 데이터가 이동하는 거리가 줄어들어, 요청에 대한 응답이 더 빨라지고 웹 페이지가 더 빠르게 로드됩니다.
또한, GSLB는 여러 서버에 트래픽을 분산시키는 역할도 합니다. 서버에 과부하가 걸리지 않도록 트래픽을 효율적으로 분배함으로써, 하나의 서버에 장애가 발생하더라도 다른 서버로 자동으로 전환되는 Failover 기능을 제공함으로, 서비스가 중단 없이 안정적으로 운영될 수 있습니다.
이런 역할을 하는 GSLB가 필요한 이유가 무엇일까요?
오늘날 인터넷을 통한 웹사이트는 다양한 국가와 지역에서 접속하는 클라이언트들을 지원해야 합니다. 대규모 글로벌 웹사이트는 한국뿐만 아니라 미국이나 유럽 등 전 세계에서 접속이 이루어지기 때문에, 모든 클라이언트가 빠르고 안정적인 서비스를 이용할 수 있도록 해야 합니다.
만약 모든 클라이언트가 단일 서버에 접속하게 된다면, 서버에 과부하가 걸리거나 네트워크 지연이 발생할 수 있습니다. 이러한 문제를 방지하기 위해, 웹 서비스 제공자는 여러 지역에 서버를 분산 배치하고, GSLB를 통해 각 사용자를 가장 적합한 서버로 연결합니다. 이렇게 하면 각 서버의 부하가 분산되며, 클라이언트는 지리적으로 가까운 서버에서 빠르게 서비스를 제공받을 수 있습니다.
2. CDN이란?
CDN은 Content Delivery Network의 약자로, 전 세계에 분산된 서버 네트워크를 통해 클라이언트에게 가장 가까운 서버에서 콘텐츠를 제공하는 기술입니다.
CDN은 이미지, 비디오, CSS, JS 파일과 같은 정적 콘텐츠의 로딩 속도는 UX에 직접적인 영향을 미칩니다. CDN은 이처럼 중요한 정적 콘텐츠를 클라이언트에게 최대한 빠르게 전달하여, 웹 페이지의 전체적인 로딩 속도를 향상시키는 역할을 합니다. 여기서 UX란 사용자가 웹사이트를 사용할 때 느끼는 모든 경험을 포함하며, CDN은 이 경험을 최적화하는 데 중요한 기여를 합니다.
또한, 단순히 콘텐츠 전달에서 그치지 않고 콘텐츠 캐싱, 부하 분산, 서비스 가용성 향상, 지리적 접근 속도 개선의 역할도 함께 수행합니다. CDN이 어떤 기능을 통해 UX에 영향을 미치는지 차근차근 하나씩 보도록 하겠습니다.
1. 콘텐츠 캐싱
- CDN의 핵심 기능 중 하나는 콘텐츠 캐싱입니다. 웹 사이트의 정적 파일을 전 세계의 CDN 엣지 서버에 저장해 두고, 사용자가 요청할 때마다 이 캐시된 콘텐츠를 제공함으로써, 원본 서버의 부담을 줄이고 응답 시간을 단축시켜 웹 페이지 로딩 속도를 개선시킵니다.
2. 부하 분산
- CDN은 여러 서버에 트래픽을 분산시켜 원본 서버에 과부하가 걸리지 않게 합니다. 갑자기 많은 방문자가 접속하여 대규모 트래픽이 발생할 때도 웹 사이트가 안정적으로 운영될 수 있도록 하며, 성능 저하 없이 운영될 수 있도록 보장해줍니다.
3. 서비스 가용성 향상
- 전 세계에 분산된 서버 네트워크를 통해 특정 서버에 장애가 발생하더라도, 다른 서버에서 콘텐츠를 제공하여 웹 사이트에 가용성을 높입니다. 특히 DDoS 공격과 같은 보안 공격에 대해 매우 효과적인 대응 방법을 제공해주기 때문에 언제 어디서나 웹 사이트에 안정적으로 접근할 수 있게 해줍니다.
4. 지리적 접근 속도 개선
- 사용자가 어디에서 접속하든, 가장 가까운 CDN 엣지 서버에서 콘텐츠를 제공받도록 합니다. 예를 들어, 미국에 있는 사용자는 미국에 위치한 CDN서버에서, 한국에 있는 사용자는 한국에 위치한 CDN 서버에서 콘텐츠를 제공받는데, 이로 인하여 웹 페이지가 로딩되는 시간이 크게 줄어들기 때문에 사용자는 원활한 서비스를 제공받을 수 있게 됩니다.
이러한 역할을 하는 CDN은 왜 필요할까요?
위와 같은 역할을 수행하는 CDN은 글로벌 웹 서비스에서 지리적으로 분산된 사용자들에게 동일한 성능을 제공하기 위해 필요합니다. 사용자가 어디에 있든지, 가장 가까운 엣지 서버에서 콘텐츠를 제공받음으로써, 로딩 시간이 크게 줄어들고, 사용자에게 빠르고 안정적인 서비스를 제공합니다.
만약 특정 지역에서 웹 사이트가 느리게 로드되거나 자주 끊긴다면, 그 지역 사용자는 해당 사이트에 대한 신뢰를 잃을 수도 있습니다. 이러한 문제를 방지하기 위해, CDN은 전 세계 어디서든지 사용자가 동일한 수준의 성능과 안정성을 보장받을 수 있도록 합니다.
3. GSLB와 CDN의 차이점
지금까지 뭔가 비슷하기도 하면서 아닌 거 같은 두 기술에 대해 알아봤습니다. 제가 처음 공부할 때 두 기술의 역할이 명확하게 구분이 되지 않아서 많이 헷갈려 했던 경험이 있어서 지금부터 두 기술의 차이점에 대해 알아보겠습니다.
GSLB와 CDN은 모두 글로벌 웹 서비스에서 성능을 최적화하는 데 중요한 역할을 하지만, 그 역할과 목적에는 분명한 차이가 있습니다.
우선 GSLB는 클라이언트의 위치, 서버 상태 등을 파악하여 가장 적합한 서버로 트래픽을 분배하는 기술입니다. 주로 서버 간의 부하 분산과 장애 대응에 중점을 두며 GSLB로 인해 클라이언트는 자신에게서 가장 가까운 서버에 연결되어 최적의 성능을 제공받을 수 있습니다.
다음으로 CDN은 정적 콘텐츠를 클라이언트에게 빠르게 전달하는 데 중점을 둡니다. 클라이언트가 요청한 콘텐츠를 가장 가까운 CDN 엣지 서버에서 제공함으로써 웹 페이지의 로딩 속도를 개선하고, 원본 서버의 부담을 줄여주는 역할을 합니다.
그렇다면 컴퓨터 상에서도 GSLB와 CDN의 차이를 확인할 수 있을까요?
차이를 확인하기 위해, 웹 사이트의 도메인이 어떤 IP 주소로 연결되는지 확인할 수 있는 nslookup과 같은 명령어를 사용할 수 있습니다.
nslookup www.naver.com
CDN의 경우, 명령어 결과로 DN 서비스 제공자(Akamai, Cloudflare 등)의 IP 주소가 반환될 수 있습니다. 이 결과는 해당 콘텐츠가 CDN을 통해 제공되고 있다는 신호입니다.
GSLB의 경우, 도메인 이름이 사용자 위치에 따라 다르게 해석되어, 지역별로 다른 IP 주소가 반환될 수 있습니다. 예를 들면, 한국에서 실행한 nslookup 결과와 미국에서 실행한 nslookup 결과가 다를 수 있습니다.
예시 이미지:
<Windows 실행 이미지 설명>
- DNS 서버: dns1.fortiguard.net을 통해 DNS 조회를 수행하고 있습니다.
- 권한 없는 응답: 여기서 "권한 없는 응답"은 캐시된 응답을 의미합니다.
- 이름: e6030.a.akamaiedge.net은 Akamai라는 CDN 서비스의 엣지 서버 도메인을 가리킵니다.
- Address: 23.2.36.224는 Akamai의 엣지 서버 IP 주소를 나타냅니다.
- Aliases: 이는 www.naver.com에 대한 여러 별칭(CNAME 레코드)을 보여주며, 이는 Akamai의 여러 엣지 서버에 해당하는 주소입니다.
<macOS 실행 이미지 설명>
- DNS 서버: 210.220.163.82에서 DNS 조회가 이루어졌습니다.
- Canonical Name (CNAME): www.naver.com.nheos.com은 Naver의 도메인이 Akamai CDN 서비스로 연결되어 있음을 나타냅니다.
- Address: 여러 개의 IP 주소(223.130.200.219, 223.130.192.248 등)는 Akamai 엣지 서버 또는 Naver의 GSLB 시스템에 의해 제공되는 여러 서버의 IP 주소를 나타냅니다.
4. GSLB와 CDN의 작동 방식
마지막으로 '두 기술이 어떻게 돌아가는가'에 대해 빠르게 짚고 넘어가며 마무리해보도록 하겠습니다.
두 기술은 모두 웹 사이트의 성능을 최적화하고, 사용자에게 빠르고 안정적인 서비스를 제공하기 위해 설계되었습니다. 그러나 각각 다른 목적을 가지고 있으며, 특정 상황에서는 독립적으로, 또 다른 경우에는 함께 사용됩니다.
GSLB와 CDN이 따로 사용되는 경우
- GSLB 단독 사용 예시
- 대기업의 글로벌 지사 간 사내 포털 시스템에서 GSLB가 사용됩니다. 이 시스템은 각 지역의 지사에서만 접근이 이루어지며, 각 지사별로 가장 가까운 서버로 트래픽을 라우팅합니다. 이러한 시스템에서는 실시간 데이터 처리와 서버 간 부하 분산이 중요하기 때문에, 정적 콘텐츠 전달이 중요한 CDN은 사용되지 않습니다.
- 또한, 아시아 지역을 대상으로 하는 금융 서비스도 이에 해당됩니다. 금융 서비스는 아시아 내 여러 국가에서 사용되며, GSLB를 통해 각 지역의 서버로 트래픽을 분산시켜 부하를 균형있게 유지합니다. 이러한 경우도 실시간 데이터 처리와 사용자 간 상호작용이 핵심이므로 CDN은 사용되지 않습니다.
- CDN 단독 사용 예시
- 뉴스 웹사이트, 블로그, 전자상거래 플랫폼 등에서는 CDN이 단독으로 사용될 수 있습니다. 정적 콘텐츠가 중요한 웹 사이트는 콘텐츠의 빠른 전달이 중요하므로, 모든 요청은 동일한 원본 서버로 보내지며, 콘텐츠는 CDN 엣지 서버를 통해 캐싱된 형태로 제공됩니다.
GSLB와 CDN이 함께 사용되는 경우
- 넷플릭스, 유튜브, 아마존과 같은 글로벌 서비스에서는 두 기술이 함께 사용됩니다. GSLB가 클라이언트 요청을 가장 적합한 데이터 센터로 라우팅(트래픽 분배)하고 이후 콘텐츠를 제공하기 위해 CDN과 연계됩니다. CDN은 콘텐츠를 캐싱하여, 동일한 콘텐츠 요청이 있을 경우 클라이언트가 위치한 지역의 가장 가까운 엣지 서버에서 콘텐츠를 제공합니다. 이러한 과정을 통해 콘텐츠 전달 시간이 최소화되며, 서버의 부하가 줄어들고, 사용자에게 빠른 응답이 가능합니다.
끝내는 말
이번 글에서는 GSLB와 CDN이 웹 서비스의 성능을 최적화하고, 사용자에게 빠르고 안정적인 경험을 제공하는 방법을 살펴보았습니다. 이 두 기술이 어떻게 작동하며, 각각 혹은 함께 사용되는 상황에 대해 알아보았는데, 도움이 되셨을까요?
다음 글에서는 이 기술들이 무중단 배포와 장애 대응에 어떻게 활용되는지에 대해 다뤄보겠습니다.
읽어주셔서 감사합니다 :)
'웹 인프라' 카테고리의 다른 글
SSR vs CSR, 어느 쪽을 선택할까? (0) | 2024.08.27 |
---|---|
렌더링: 브라우저가 웹 페이지를 그리는 방법 (3) | 2024.08.21 |
장애 대응: 안정적인 웹 서비스를 위한 필수 전략 2 (1) | 2024.08.19 |
무중단 배포: 안정적인 웹 서비스를 위한 필수 전략 1 (0) | 2024.08.17 |
브라우저에 URL을 입력하면 생기는 일 (0) | 2024.08.14 |