갑작스러운 트래픽 급증과 서버 과부하를 관리하는 방법

NGINX | 2021년 7월 14일

많은 소매업체에서 코로나19 팬데믹은 고객이 연말연시 쇼핑을 하는 장소와 방식을 바꾸어 놓았습니다. 오프라인 매장을 이용할 수 없게 된 소비자들은 그 어느 때보다 온라인 소매업체로 몰렸고, 2020년 전자상거래 매출은 1,890억 달러로 급증해 2019년 대비 33% 증가했습니다. 올해 연말연시 쇼핑 시즌까지 6개월도 채 남지 않은 지금, NGINX를 활용해 갑작스러운 트래픽 급증에 대비할 수 있는 몇 가지 방법을 소개합니다.

1단계: 경쟁사 대비 현재 위치 파악하기

스택을 변경하기 전에, 단순히 버티는 데 그치지 않고 성공적인 성과를 거두려면 ‘사이버 시즌’ 성능을 얼마나 개선해야 하는지 파악하는 것이 좋습니다. 먼저 경쟁 웹사이트의 성능 데이터를 수집하세요. 페이지 로딩 시간은 아마도 가장 중요한 지표일 것입니다. 요즘처럼 참을성이 부족한 사용자 중 상당수는 사이트가 3초 이내에 로드되지 않으면 이탈합니다. 로딩 시간을 측정할 수 있는 도구는 많으며, 그중 상당수는 무료입니다. 먼저 살펴보기 좋은 자료로는 최근 Geekflare에서 소개한 테스트 도구 11종 리뷰가 있습니다.

다음 페이지의 로드 시간을 측정해 보세요:

  • 홈페이지
  • 제품 검색 결과
  • 제품 페이지 세부 정보
  • ‘구매’ 버튼을 누른 후 표시되는 확인 페이지

자사 사이트와 경쟁사 6곳의 주요 페이지를 테스트하는 데는 몇 시간이면 충분합니다. (다운로드 시간을 측정하기 전에 Shift+Refresh를 사용해 브라우저 캐시를 반드시 삭제하세요.) 결과를 확보했다면 다음과 같이 진행하세요:

  • 전체 성능을 종합적으로 평가하세요. 사이트별로 방문, 검색, 구매에 이르는 전체 과정에 얼마나 걸리나요?
  • 강점과 약점 파악하기. 사이트 성능이 앞서거나 경쟁력이 있거나 뒤처지는 구체적인 영역을 찾아보세요.
  • 기능상의 차이점을 파악하세요. 경쟁업체는 추가 기능을 통해 쇼핑 경험에 어떤 가치를 더하고 있나요? 귀사의 사이트는 차별화된 사용자 경험을 제공하기 위해 어떤 기능을 제공하나요?
  • 계획 수립하기. 사이트 성능의 한 가지 이상의 영역에서 경쟁사보다 크게 뒤처져 있다면 경쟁사의 평균 응답 시간을 달성하는 것을 목표로 삼고, 이미 경쟁력이 있다면 1위가 되기 위해 노력하세요.

2단계: 세계에서 가장 트래픽이 많은 웹사이트처럼 NGINX를 운영하세요

올해 초 NGINX는 인터넷 1위 웹 서버가 되었습니다. 수많은 사이트가 웹사이트와 앱 제공을 위해 저희를 신뢰해 주셔서 영광이며, 여러분도 함께해 주시기를 바랍니다. 하지만 NGINX는 단순한 웹 서버 그 이상입니다. 리버스 프록시, 로드 밸런서, 캐시, API 게이트웨이 기능을 모두 갖춘 통합 소프트웨어입니다.

NGINX의 가장 중요한 이점 중 하나는 사이트로 유입되는 트래픽 흐름을 최적화한다는 점입니다. NGINX를 매장 입구에서 트래픽을 관리하는 문지기라고 생각해 보세요. 각 쇼핑객(HTTP 요청)이 차례로 줄을 서서 입장하도록 원활하게 관리하여, 보도 위의 혼란스러운 인파를 매장 안에서 매끄럽고 질서 있게 이동하는 행렬로 바꿉니다. 쇼핑객은 위시 리스트에 담긴 상품이 있는 정확한 위치로 안내되므로 트래픽이 고르게 분산되고 모든 리소스가 균등하게 사용됩니다.

NGINX는 이를 위해 기본적으로 제공되는 두 가지 기법을 주로 사용합니다:

  • keepalive 연결을 사용한 HTTP 오프로딩을 통해 느리게 도착하는 HTTP 요청을 버퍼링하고, 백엔드 서버가 준비되었을 때만 전달합니다. 트랜잭션은 원격 클라이언트에서 시작될 때보다 NGINX(고속 로컬 네트워크)에서 시작될 때 훨씬 더 빠르게 완료됩니다.
  • 고급 부하 분산 기능은 여러 알고리즘 중에서 선택할 수 있어 트래픽 분산을 최적화하고 서버 리소스를 최대한 효율적으로 사용할 수 있습니다.

트래픽 흐름을 최적화하는 것 외에도, 트래픽 급증 시 NGINX를 활용해 사이트를 최적화하고 서버 과부하를 방지할 수 있는 네 가지 방법을 더 소개합니다.

다음 항목에 대한 자세한 내용을 계속 읽어보세요:

캐싱을 통한 웹 페이지 응답 시간 개선

온라인 주문 후 매장에서 수령하는 클릭 앤 컬렉트와 고객 결제 옵션은 온라인 거래의 성공 가능성을 높여 줍니다. 콘텐츠 캐싱을 NGINX와 함께 사용하면 웹 트래픽에서도 이와 비슷한 효과를 얻을 수 있습니다. NGINX는 클라이언트에 전송하는 각 파일을 자동으로 저장하고, 이후 동일한 파일에 대한 요청이 들어오면 캐시에서 직접 제공합니다. 캐싱은 사용자에게 더 빠르게 응답할 뿐만 아니라, 업스트림 서버가 동일한 요청을 매번 처음부터 반복해서 처리할 필요가 없도록 하여 서버 부하를 줄여 줍니다. 애플리케이션에 따라 콘텐츠 캐싱을 통해 내부 트래픽 양을 최대 100분의 1로 줄일 수 있으며, 그 결과 애플리케이션 제공에 필요한 하드웨어 용량도 줄어듭니다.

캐싱에 대한 자세한 내용과 구성 예시는 블로그의 사이트 콘텐츠 캐싱 및 마이크로캐싱 및 NGINX 및 NGINX Plus를 활용한 캐싱 가이드를 참조하세요.

연결 수, 요청 속도 및 대역폭 제어를 통한 방문자 트래픽 관리

가장 붐비는 시간대에는 매장 안내 직원이 입장하는 고객 수를 제한해야 할 수 있습니다. 이는 안전상의 이유(과밀 방지)나 우수 고객 우대(VIP 전용 시간, 초대 고객 전용 프로모션 등)를 위한 조치일 수 있습니다. 웹 앱에도 이와 유사한 조치가 필요합니다. 사이트로 유입되는 트래픽의 양을 제한하면 서버 과부하를 방지하고 클라이언트가 필요한 리소스에 적시에 액세스하도록 보장할 수 있습니다. NGINX(컨테이너 환경에서는 NGINX Ingress Controller)는 다음을 비롯해 유입 트래픽을 제한하는 다양한 방법을 제공합니다:

  • 동시성 제한 – 각 서버의 제한된 작업자 스레드 또는 프로세스 수에 맞게 서버별로 전달되는 동시 요청 수를 제한합니다.
  • 요청 속도 제한 – 각 클라이언트의 요청 수를 초당 또는 분당으로 제한하여 결제 게이트웨이나 복잡한 검색과 같은 서비스에서 서버 과부하를 방지합니다(자세한 내용은 블로그의 NGINX 및 NGINX Plus를 사용한 속도 제한 참조).
  • 대역폭 제한 – 클라이언트가 각 연결에서 다운로드할 수 있는 데이터의 양을 제어합니다

필요한 경우 클라이언트 유형별로 구분할 수 있습니다. 예를 들어 스토어의 배송 지역에 아시아가 포함되지 않거나, 장바구니에 상품을 담은 사용자를 우선 처리하고 싶을 수 있습니다. 쿠키, 지리적 위치 데이터 및 기타 매개변수를 활용하여 NGINX가 트래픽 제한을 적용하는 방식을 제어할 수 있습니다.

탄력적 확장으로 서버 과부하 방지

적절한 인프라를 갖추지 않으면 트래픽이 급증할 때 서버에 과부하가 쉽게 발생할 수 있습니다. NGINX의 경량 이벤트 기반 아키텍처는 기존 인프라를 활용해 애플리케이션 전송 성능을 극대화합니다. NGINX Ingress Controller와 베어 메탈 및 가상화 환경에서 실행되는 NGINX Plus의 규모 산정 가이드를 활용하면 준비 중인 성능과 확장 규모에 필요한 운영 비용을 정확하게 산정할 수 있습니다.

트래픽 급증에 효과적으로 대응하여 확장할 수 있도록 DevOps 팀이 활용할 수 있는 추가 NGINX 기능은 다음과 같습니다:

  • 클라우드 환경에 NGINX와 애플리케이션을 배포하세요. NGINX는 AWS, Google Cloud Platform, Microsoft Azure와 같은 주요 클라우드 환경의 마켓플레이스에서 제공됩니다. 각 클라우드 제공업체는 수요 변화에 따라 애플리케이션 인스턴스 수를 조정하는 자동 확장 기능을 지원합니다. 자세한 내용은 AWS, GCP, Azure의 자동 확장 설명서를 참조하세요.
  • Kubernetes 환경에 컨테이너를 배포합니다. NGINX Ingress Controller와 NGINX Service Mesh에는 Kubernetes 앱의 복원력을 강화하는 다양한 기능이 포함되어 있습니다. 사용자 수요에 따라 애플리케이션 Pod를 수평으로 확장할 수 있으며, 실시간 사용자의 지연 시간은 거의 늘어나지 않습니다.
  • NGINX Plus API를 사용하여 NGINX Plus에서 부하 분산되는 백엔드 서버를 동적으로 확장하세요.

기본 제공 보안 기능으로 고객 데이터 보호

안전한 거래 환경을 제공하는 것은 모든 웹사이트의 기본 요건이며, 신용카드 정보를 취급하는 온라인 소매업체에는 특히 중요합니다. Target과 같이 피해를 입은 소매업체들이 직접 경험했듯이, 데이터 유출은 브랜드 이미지 훼손과 소송으로 이어질 수 있습니다. Target은 2014년 데이터 유출 사고에 대응해 가시성을 높이고 보안을 강화했습니다. 다음을 구현하여 시장에서 가장 안전한 쇼핑 경험을 제공하고 경쟁업체와 차별화하세요:

이제 준비가 완료되었습니다

지금 웹 자산에 엔터프라이즈급 솔루션을 적용하면 2021년 연말 쇼핑 시즌에 매장(또는 온라인!)에서 어떤 일이 닥치더라도 안심하고 대비할 수 있습니다.

모든 상용 솔루션을 30일 동안 무료로 체험해 보실 수 있습니다:

또는 무료 오픈 소스 제품으로 시작해 보세요:

이 블로그에는 Owen Garrett과 Floyd Smith가 기여한 내용이 포함되어 있습니다.


공유

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.