원인 분석
대용량 트래픽은 주로 평소 사용량을 넘는 사용자 로그인, DB 쿼리 요청 등 다양합니다.
만약 이를 처리하지 않고 방치한다면 서버 부하와 데이터베이스 부하 모두 증가하여 결국엔 서비스의 성능이 저하되고 서버 다운타임으로 인한 처리 지연 등의 문제가 발생할 수 있습니다.
대응책
1. 로드 밸런서와 오토 스케일링 그룹
로드 밸런서는 트래픽을 여러 서버로 분산시켜 서버 부하를 분담하는 중요한 도구로, 이를 통해 사용자 요청이 분산되어 특정 서버가 과부하되는 일을 방지할 수 있습니다.
AWS의 Elastic Load Balancing (ELB)은 이러한 기능을 제공하여 서버 확장성을 높이고 더 많은 사용자 트래픽을 처리할 수 있도록 지원합니다.
오토 스케일링 그룹을 통해 서버 인스턴스의 수를 자동으로 조정하여 트래픽 변화에 따라 서버 용량을 유동적으로 조절할 수 있습니다.
2. 데이터베이스 파티셔닝, 샤딩, 레플리카
데이터베이스 파티셔닝과 샤딩 모두 데이터베이스 읽기/쓰기 성능 향상을 위해 데이터베이스를 분할하는 방식으로, 거대한 데이터셋을 서브셋으로 분리하여 관리하는 방법입니다.
1) 데이터베이스 파티셔닝은 매우 큰 테이블을 여러 개의 작은 테이블로 분할하여 데이터를 물리적으로 여러 테이블에 분산 저장하지만 사용자는 하나의 테이블에 접근하는 것과 같이 사용할 수 있다는 장점이 있습니다.
2) 데이터베이스 샤딩은 동일한 스키마를 가지고 있는 여러 대의 데이터베이스 서버들에 데이터를 작은 단위(샤드)로 나누어 분산 저장하는 방법입니다.
샤딩은 일종의 수평 파티셔닝이지만 일반 파티셔닝이 모든 데이터를 동일한 컴퓨터에 저장한다면 샤딩은 데이터를 서로 다른 컴퓨터에 분산하기 때문에 쿼리 성능 향상과 더불어 부하까지 분산된다는 차이점이 있습니다.
3) 데이터베이스 레플리카는 기존의 원본 데이터를 가진 소스 서버로부터 복제된 데이터를 가지고 있는 레플리카 서버로, 소스 서버에서 데이터가 변경되면 그 내역을 레플리카 서버가 전달 받아 자신의 데이터에 반영함으로써 소스 서버와 데이터를 동기화시키는 방식입니다.
데이터베이스 레플리카는 주로 서버의 수평적 확장과 데이터 백업, 분석용 쿼리 실행을 위한 데이터 분석 및 DB 서버와 통신하는 애플리케이션 서버와의 거리를 줄임으로써 응답 시간을 개선하는 데 사용합니다.
3. CDN 서비스 적용
CDN은 Contents Delivery Network의 약자로, 대용량 또는 사용자의 잦은 요청이 있는 컨텐츠들을 캐시 서버에 분산 배치하여 컨텐츠 전송 중 발생하는 트래픽 집중과 그로 인한 병목 현상 및 데이터 손실을 해결하기 위한 컨텐츠 전송 기술입니다. Cloudflare, Akamai, AWS Cloudfront 같은 CDN 서비스는 전 세계에 분산된 서버 네트워크를 통해 빠른 컨텐츠 전달을 지원하며, 캐싱과 압축 기술을 활용하여 더욱 효율적인 서비스를 제공할 수 있습니다.
웹 브라우저가 실행되는 디바이스의 사용자가 특정 주소에 접근해 정적/동적 파일 등 렌더링을 필요로 하는 컨텐츠를 서버에 요청했을 때, DNS는 컨텐츠에 대한 각 요청을 최종 사용자와 가장 가까운 위치에 배치된 CDN 서버에 최종 사용자를 매핑하고, 해당 서버는 요청된 파일의 캐싱 버전으로 응답합니다.
만약 서버가 파일을 찾는 데 실패한다면 CDN 플랫폼의 다른 서버에서 컨텐츠를 찾아 사용자에게 전송하고, 컨텐츠가 없거나 오래됐을 경우 오리진 서버에 대한 요청 프록시를 통해 향후 동일한 요청에 응답할 수 있도록 patch 된 새로운 컨텐츠를 저장합니다.
4. 캐시 서버
캐시 서버는 자주 요청되는 데이터나 컨텐츠를 미리 저장하여 서버 응답 시간을 최적화하는 기술입니다. 대용량 트래픽 환경에서는 서버 응답 시간을 최소화하고 사용자들에게 빠른 데이터 접근을 제공하기 위해 캐시 서버 활용은 필수적입니다.
예를 들어, Redis나 Memcached와 같은 메모리 캐싱 시스템을 도입하여 데이터 접근 속도를 높이고 서버 부하를 감소시킬 수 있습니다. 이를 통해 사용자들은 더 나은 서비스 경험을 누릴 수 있고, 서버의 성능도 향상됩니다.
5. 재해 복구
재해 복구는 시스템 장애 발생 시에도 빠른 복구를 도모하는 중요한 전략입니다.
대용량 트래픽 환경에서는 시스템의 안정성을 보장하기 위해 재해 복구 계획을 갖추고 있어야 합니다.
AWS의 자동화된 백업 및 복구 서비스를 활용하여 시스템 장애 시의 복구 과정을 단축하고, 데이터의 안전성을 보장할 수 있습니다. 이를 통해 시스템이 장애로부터 빠르게 회복되어 서비스 중단을 최소화할 수 있으며, 사용자들에게 더욱 안정적인 서비스를 제공할 수 있습니다.
참고 출처
'CS > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] 포트포워딩에 대하여 (0) | 2023.12.12 |
---|---|
[컴퓨터 네트워크] OSI 7계층 - 각 계층별 네트워크 장비 (0) | 2023.10.30 |
[DNS] DNS에 대하여 (1) | 2023.10.13 |
[컴퓨터네트워크] 네트워크 스위치 (0) | 2023.10.09 |
[컴퓨터네트워크] OSI 7계층 (0) | 2023.10.08 |