대용량 시스템/대규모 트래픽 이론

[대규모트래픽 이론] #3.1 대규모 트래픽 처리 개요

dev_rosieposie 2025. 4. 6. 18:59

학습목표

  1. 대규모 트래픽 처리 개요에 대해 이해한다.

목차

  1. 대규모 트래픽 발생의 주요 원인와 실패
  2. 대규모 트래픽 주요처리 전략
  3. 대규모 트래픽 처리 기술 개요

들어가기 전..

비동기 처리 시스템 복습하기

 

[대규모트래픽 이론] #2.3 비동기 처리 시스템의 장단점 및 사례

학습목표비동기 처리시스템의 장단점 및 사례를 살펴본다.목차비동기 처리의 장점비동기 처리의 단점실제 비동기 처리 시스템의 예시들어가기 전..비동기 메시징 시스템 복습하기 [대규모트

dev-rosiepoise.tistory.com


1.1 대규모 트래픽 발생의 주요 원인

  • 마케팅 이벤트 : 대규모 할인 행사, 쿠폰 발급, 타임 세일, 새로운 상품 출시 등의 이벤트로 인해 트래픽이 급증
  • 바이럴 콘텐츠 : sns, 뉴스 또는 인터넷에서 급속도로 퍼지는 콘텐츠로 인해 갑자기 트래픽 증가
  • 인기 서비스 : 갑작스럽게 주목받은 애플리케이션이나 서비스는 예상보다 훨씬 많은 사용자가 동시 접속
  • 리소스 집중 : 특정 시간대에 많은 사용자가 몰려드는 경우 (예, 저녁 시간대 스트리밍 서비스)

1.2 대규모 트래픽 처리 실패 시의 문제점

  • 성능 저하
    • 사용자 경험 저하로 이어짐
  • 시스템 다운타임
    • 매출손실, 브랜드 신뢰도 하락, 컴플레인으로 이어짐
  • 데이터 일관성 문제
    • 동시성이 증가할수록 일관성이 저하 (중복주문, 재고부족, 동기화 이슈)
  • 서버 자원 낭비
    • cpu, 메모리 비효율적 사용, 서버 유지비용 증가

1.3 대규모 트래픽 처리의 필요성

  • 사용자 경험 향상
    • 빠른 응답 시간, 안정적 서비스 제공
  • 서비스 신뢰성 보장
  • 확장성과 비지니스 성장 지원
  • 비용 최적화
    • 트래픽이 급증하더라도 적절한 리소스 사용으로 서버와 인프라 비용을 효과적으로 관리

2. 트래픽 급증 대비를 위한 주요 처리 전략

a) 수평적 확장

  • 트래픽이 증가할 때 하나의 성능을 높이기보다, 여러개의 서버 추가하여 능력을 확장하는 방식.
  • 각각의 서버는 동일한 역할을 수행하며, 트래픽을 분산 처리
  • 특징
    • 서버를 쉽게 추가하거나 제거할 수 있어 유연한 확장이 가능
    • 장애가 발생한 서버를 제외하고도 다른 서버가 계속 요청을 처리할 수 있어 고가용성을 유지
  • 실제 적용
    • 클라우드 환경에서의 amazon ec2 auto scaling
    • kubernetes와 같은 기술을 사용하여 자동으로 서버를 추가하거나 제거

b) 부하 분산

  • load balancer는 다수의 서버가 있는 환경에서 트래픽을 균등하게 분배하는 역할
  • 특정 서버에 부하가 집중되는 것을 방지
  • 특징
    • 트래픽이 많을 때도 각 서버가 안정적으로 작동하도록 보장
    • 다양한 알고리즘(라운드 로빈, 최소 연결, ip 해시 등)을 사용하여 트래픽을 분배
    • 서버 장애 시 다른 서버로 트래픽을 자동으로 전환하여 서비스 중단을 방지할 수 있음
  • 실제 적용
    • L4를 통한 하드웨어 로드 밸런서
    • nginx, HAProxy 같은 소프트웨어 로드 밸랜서
    • amazon elastic load balancing(elb)와 같은 클라우드 기반 로드

c) 캐싱

  • 자주 조회되는 데이터를 미리 저장하여 사용자 요청 시 즉시 제공하는 방식
  • 데이터베이스나 api 요청 대신 캐시된 데이터를 사용하므로써, 응답시간을 줄일고 트래픽 부하를 감소
  • 주요 특징
    • 반복 요청에 대해 빠른 응답을 제공
    • 데이터베이스나 원본 서버의 부하를 줄여 성능 향상
    • ttl(time to live)설정을 통해 캐시 데이터의 유효 기간을 관리
  • 실제 적용
    • redis, memcached와 같은 인메모리 캐시 솔루션
    • cdn(content deliver network)을 통해 자주 요청도는 파일(이미지, 비디오 등)을 캐싱

d) 비동기 처리

  • 즉시 응답할 필용가 없는 작업(ex. 이메일 발송, 로그 기록 등)은 비동기 처리를 통해 백그라운드에서 수행되며, 사용자 요청에 대한 응답은 빠르게 처리
  • 주요 특징
    • 실시간으로 즉시 처리할 필요가 없는 작업을 비동기적으로 처리하여 메인 시스템의 부담을 감소
    • 큐를 통해 작업을 저장하고 필요한 시점에 나중에 처리
  • 실제 적용
    • rabbitMQ, Apache Kafka, Amazon SQS와 같은 메시지 큐 시스템을 사용하여 비동기 작업을 처리

e) 데이터베이스 샤딩

  • 데이터베이스의 데이터를 여러 개의 샤드로 나누어 분산 저장하는 기술
  • 한 번에 처리할 수 있는 데이터의 양을 줄이고, 데이터베이스의 부하를 분산
  • 주요 특징
    • 데이터가 샤드 단위로 분산되어, 각 샤드는 독립적으로 데이터를 처리
    • 데이터베이스 성능 병목을 해소하고 확장성을 향상 시킴
  • 실제 적용
    • mysql, mongoDB, Cassandra와 같은 데이터베이스에서 샤딩 기능을 제공하여 대규모 데이터 처리에 대응

f) CDN (Content Delivery Network)

  • CDN은 지리적으로 분산된 서버 네트워크로, 사용자가 서버와 가까운 위치에서 콘텐츠를 다운로드할 수 있도록 함
  • 트래픽을 분산시키고 사용자에게 더 빠른 콘텐츠 제공을 가능하게 함
  • 주요 특징
    • 사용자가 가까운 노드에서 콘텐츠를 다운로드하여 응답 시간을 최소화
    • 원본 서버의 부하를 줄여, 대규모 트래픽을 효과적으로 처리
  • 실제 적용
    • Akamai, Cloudflare, Amazon CloudFront와 같은 CDN 서비스를 통해 정적 파일(이미지, 동영상 등)을 빠르게 제공

3. 대용량 트래픽 처리 기술 개요

  1. 트래픽이 들어올 때 정적 콘텐츠 요청은 cdn을 통해서 처리, 전세계에서 들어오는 요청을 빠르게 처리가능
  2. api 요청은 Load balancer를 통해 서버에 분산되어 처리
  3. Load balancer 뒤에 있는 server1,2에 분산됨
  4. server1,2는 캐시에 있는 데이터베이스를 조회
  5. 캐시에 데이터가 없는 경우에 캐시미스로 데이터베이스 샤드에서 데이터를 찾도록 하고, 캐시에 있다면 캐시에서 데이터를 제공하거나 쿼리결과를 캐시에 업데이트
  6. db 샤드 1,2에서는 샤딩을 통해 데이터를 분산 저장하고 데이터 조회 및 반환 담당
  7. auto scailing system에서는 시스템 부하를 모니터링 하고 특정 임계치 도달시 서버 인스턴스 수를 늘리는 것을 담당

참고, 강의 및 구글링

 

1티어 패션 커머스의 세일 도메인 프로젝트로 배우는 대규모 트래픽을 견디는 실전 백엔드의 모

실전 대용량 트래픽 처리의 모든 것! 대규모 시스템 설계부터 기능 구현, 테스트까지!

fastcampus.co.kr