대용량 Traffic 발생 시 대응 방법
대용량 Traffic 발생 시 대응 방법

대용량 Traffic 발생 시 대응 방법

Tags
Node.js
Web Dev
Traffic
Published
February 13, 2024
Author
gozneokhan

로드 밸런싱 (Load Balancing)

로드 밸런서는 트래픽을 여러 서버로 분산시켜 서버 부하를 균등하게 분담합니다. 대게 라운드 로빈, 최소 연결, 최소 응답시간 등의 알고리즘을 사용하여 효율적으로 트래픽을 관리합니다. AWS, Google Cloud, Microsoft Azure 등의 클라우드 서비스에서 로드 밸런서 기능을 제공하며, 기업 중 Netflix, Instagram 등이 활용하고 있습니다. 이로써 서버 부하 분산, 고가용성 제공, 성능 향상을 이끌어냅니다. 단점으로는 로드 밸런서 자체의 싱글 포인트 오브 페일처(SPOF) 존재 가능성과 트래픽 분산이 언제나 균등하지 않을 수 있다는 점이 있습니다.

캐싱 (Caching)

캐싱은 자주 요청되는 콘텐츠를 저장해두고, 동일한 요청이 들어올 때 저장된 콘텐츠를 반환하여 응답 시간을 단축합니다. 정적 콘텐츠나 적게 변경되는 동적 콘텐츠에 적합합니다. CDN 서비스를 제공하는 기업 중에는 Akamai, Cloudflare, Amazon CloudFront 등이 있습니다. 장점으로는 빠른 응답 시간, 서버 부하 감소, 대역폭 절약을 가져오며, 단점으로는 캐시 불일치 문제와 실시간으로 변경되는 데이터에는 적합하지 않다는 한계가 있습니다.

수평적 확장 (Horizontal Scaling)

서버의 수를 늘려서 트래픽을 분산시키는 방법으로, 클러스터에 서버를 추가하거나 오토스케일링을 통해 동적으로 확장합니다. Facebook, Google, Amazon 등 대규모 서비스를 운영하는 대부분의 기업에서 활용합니다. 이로써 선형적인 성능 향상, 대규모 트래픽 대응, 고가용성을 달성합니다. 단점으로는 관리와 구성이 복잡할 수 있으며, 효과적인 수평 확장을 위해 애플리케이션을 설계해야 하는 부분이 있습니다.

자동 확장 (Auto Scaling)

트래픽이 증가하면 자동으로 서버 인스턴스를 추가하고, 감소하면 인스턴스를 줄여 운영하는 방법입니다. AWS, Google Cloud, Microsoft Azure와 같은 클라우드 서비스를 활용하는 기업에서 사용합니다. 효율적인 자원 사용, 트래픽 변동에 따른 적응성, 고가용성을 제공하나 설정의 복잡성과 잘못된 구성 시 비용 증가가 고려되어야 합니다.

비동기 처리 (Asynchronous Processing)

요청에 대한 응답을 즉시 하지 않고, 비동기적으로 백그라운드에서 처리하는 방식입니다. 큐나 메시지 브로커를 사용하여 작업을 분산 처리합니다. Twitter, LinkedIn, Instagram 등에서 비동기 처리를 활용합니다. 응답 시간 단축, 서비스 가용성 향상, 병렬 처리 가능하나 복잡한 디버깅과 일관성 유지의 어려움이 있습니다.

데이터베이스 최적화

데이터베이스 쿼리를 최적화하여 응답 시간을 단축하고, 캐싱을 사용하거나 인덱스를 효율적으로 관리합니다. Airbnb, Etsy 등이 데이터베이스 최적화를 통해 성능을 향상시켜왔습니다. 빠른 응답 시간, 효율적인 데이터 검색 및 관리가 장점이지만 복잡한 쿼리 최적화와 인덱스 관리의 어려움이 있습니다.

콘텐츠 압축 (Content Compression)

전송되는 데이터를 압축하여 대역폭을 절약하고 응답 시간을 단축합니다. 대부분의 웹 서버와 브라우저에서 지원하는 Gzip, Brotli 등의 압축 알고리즘을 사용합니다. 대역폭 절약과 빠른 데이터 전송을 가져오지만 압축 및 해제에 따른 부하와 압축이 어려운 바이너리 데이터가 단점으로 언급됩니다.

DDoS 대응 (DDoS Mitigation)

분산 거부 서비스 공격에 대비하여 트래픽을 식별하고 차단하는 메커니즘을 도입합니다. Cloudflare, Akamai, Arbor Networks 등 DDoS 대응 전문 기업에서 사용합니다. 서비스 지속성 보장과 트래픽 필터링을 통해 단점으로는 높은 비용과 가끔씩 정당한 트래픽까지 차단될 수 있는 가능성이 있습니다.

성능 모니터링 및 로깅

시스템의 성능을 지속적으로 모니터링하고 로그를 분석하여 병목 현상을 파악하고 시스템을 최적화합니다. New Relic, Datadog, Splunk 등의 성능 모니터링 도구를 사용하는 기업이 있습니다. 실시간 모니터링과 문제 식별 및 해결이 장점이지만 추가적인 리소스 소비와 데이터 관리의 어려움이 있습니다.

클라우드 서비스 이용

클라우드 서비스를 통해 인프라를 외부에 위탁함으로써 서버의 유연한 확장과 효율적인 관리가 가능합니다. AWS, Google Cloud, Microsoft Azure와 같은 대규모 기업부터 스타트업까지 다양한 기업들이 클라우드 서비스를 활용하고 있습니다. 이를 통해 확장성, 유연성, 운영의 간편함을 얻을 수 있지만, 초기 투자가 필요하며 종종 락인 효과가 발생할 수 있습니다.

분산 캐싱

여러 지리적 위치에 분산된 캐시 서버를 사용하여 전체 트래픽을 분산시키고 캐시 효율을 높입니다. CDN 서비스 및 분산 캐싱 솔루션을 제공하는 기업들이 이를 활용합니다. 이로써 지역적으로 캐시를 사용하여 지연 시간을 감소시키고 대역폭을 효율적으로 사용할 수 있습니다. 그러나 캐시 일관성 관리의 어려움과 초기 설정, 유지보수에는 일정한 비용이 소요될 수 있습니다.

압축 알고리즘 사용

전송되는 데이터를 압축하여 대역폭을 절약하고 네트워크 성능을 향상시킵니다. 대부분의 웹 브라우저와 웹 서버에서 지원하는 Gzip, Brotli 등의 압축 알고리즘을 사용합니다. 이는 대역폭 절약과 빠른 데이터 전송을 가져오지만, 압축 및 해제에 따른 부하와 모든 클라이언트가 압축을 지원하지 않을 수 있는 단점이 있습니다.

디바이스 최적화

다양한 디바이스 및 화면 크기에 대응하여 웹 페이지나 애플리케이션을 최적화합니다. 모바일 서비스를 중시하는 기업들이나 모든 환경에서 최적의 사용자 경험을 제공하려는 기업들이 이를 적용합니다. 이는 다양한 디바이스를 지원하고 사용자 친화적인 환경을 제공하지만, 추가적인 개발과 테스트 시간이 필요합니다.

프록시 캐싱

서버로부터 받은 응답을 클라이언트에 직접 전달하는 대신, 중간에 프록시 서버가 캐싱하여 클라이언트에게 전달합니다. 프록시 서버를 사용하여 캐싱을 구현하는 기업들이 활용합니다. 이로써 빠른 응답 시간과 대역폭의 효율적인 사용을 가져옵니다. 그러나 캐시 일관성 관리와 보안 이슈에 주의해야 합니다.

서버리스 아키텍처

서버를 프로비저닝하거나 관리하지 않고, 필요한 순간에만 코드를 실행하는 서버리스 아키텍처를 사용합니다. AWS Lambda, Azure Functions, Google Cloud Functions 등의 서버리스 플랫폼을 활용하는 기업들이 있습니다. 이는 유연성, 운영 부담 감소, 사용량에 따른 비용 효율성을 제공하지만, 일부 애플리케이션에는 적합하지 않을 수 있습니다.