대용량 트래픽 발생 시 어떻게 대응해야 하나요?

ayboori·2023년 11월 21일
0

CS Study

목록 보기
22/22
post-custom-banner

1. 로드 밸런싱(Load Balancing) = 부하 분산

  • 외부로부터 들어오는 요청을 로드 밸런서가 대신 받아 서버에 적절히 배분하여 요청을 처리하는 것
  • 각 서버의 부하를 분산시켜 가용성을 높이고, 성능을 향상시킨다.
  • 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다.

로드 밸런서

  • 클라이언트와 서버 풀 (분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하여, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리한다.

로드 밸런싱 기법

  • 라운드 로빈 : 서버에 들어온 요청을 순서대로 배정
  • 가중 라운드 로빈 : 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 요청을 우선 배분
  • IP 해시 : 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리
  • 최소 연결 : 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선 배분
  • 최소 응답 시간 : 서버의 현재 연결 상태, 응답 시간을 모두 고려하여 트래픽을 배분

2. 캐싱(Caching)

  • 파일 복사본을 캐시 또는 임시 저장 위치에 저장하여 보다 빠르게 액세스할 수 있도록 하는 프로세스
  • 정적 콘텐츠나 반복적으로 요청되는 동적 콘텐츠를 캐시하여 서버 부하를 감소 시킴
  • 캐싱은 CDN(Content Delivery Network)을 통해 전 세계에 분산된 위치에서 콘텐츠를 더 빠르게 제공하는 데에도 도움이 됩니다.

CDN(Content Delivery Network)

  • 전 세계적으로 분산된 서버 네트워크를 이용하여 콘텐츠를 빠르게 제공하는 시스템
  • 원본 서버보다 최종 사용자에게 더 가까운 프록시 서버에 콘텐츠를 캐시한다.
  • 여러 서버 간에 트래픽을 균형있게 분산하는 로드 밸런싱을 수행한다.

3. 스케일 업/아웃(Scale-Up/Out)

Scale-Up

= 수직 스케일 업(Vertical Scaling)

  • 단일 서버의 성능을 향상
    하드웨어 : 서버에 디스크를 추가, CPU나 메모리를 업그레이드
    소프트웨어 : EC2 인스턴스 사양을 micro > small > medium 등으로 높임

Scale-Out

= 수평 스케일 업(Horizontal Scaling)

  • 장비를 추가하여 확장하는 방식
  • 서버 인스턴스의 수를 늘려 전체 시스템의 성능을 향상

    로드 밸런싱 없이 사용할 경우 100명의 사용자가 2대의 서버에 접속한다고 가정했을 때 99명의 사용자가 서버 1에 접속, 1명의 사용자가 서버 2에 접속하는 이슈가 발생할 수도 있다.


4. 데이터베이스 최적화

쿼리의 최적화(Query Optimization)

쿼리 최적화는 데이터베이스 엔진이 쿼리를 빠르고 효율적으로 실행하도록 하는 프로세스입니다. 이는 쿼리 실행 계획을 개선하여 최소한의 리소스로 원하는 결과를 얻도록 하는 것을 의미합니다.
최적화 기술에는 쿼리 실행 계획의 분석, 인덱스 사용, 조인 최적화, 부하 분산, 메모리 사용 최적화 등이 포함됩니다.
개발자는 쿼리를 작성할 때 효율적이고 최적의 방법으로 데이터를 요청할 수 있도록 노력해야 합니다.

색인 사용(Indexing)

색인은 특정 열(속성)의 값을 빠르게 검색하기 위해 사용되는 데이터베이스 객체입니다. 색인을 사용하면 데이터베이스 엔진은 검색 조건을 빠르게 만족시키는 데 도움이 됩니다.
주로 WHERE 절에서 사용되는 열에 색인을 생성하면 검색 속도가 향상됩니다. 그러나 색인은 쓰기 작업(INSERT, UPDATE, DELETE)에 대한 성능 저하를 가져올 수 있으므로 적절한 균형을 유지해야 합니다.

적절한 데이터베이스 엔진 선택

데이터베이스 엔진은 데이터베이스 시스템의 핵심이며, 선택된 엔진은 성능, 안정성, 확장성 등에 영향을 미칩니다.
관계형 데이터베이스(예: MySQL, PostgreSQL)는 정형화된 데이터에 적합하며, 복잡한 JOIN 작업이나 트랜잭션 처리에 유리합니다.
NoSQL 데이터베이스(예: MongoDB, Cassandra)는 비정형 또는 반정형 데이터에 적합하며, 대용량 데이터의 저장 및 검색에 효율적입니다.
In-Memory 데이터베이스(예: Redis, Memcached)는 데이터를 메모리에 저장하여 빠른 읽기 및 쓰기 작업을 지원합니다.


5. 분산 데이터 스토리지

데이터를 여러 위치에 분산하여 처리할 수 있는 분산 데이터 스토리지 시스템을 사용합니다. 이는 데이터베이스 및 파일 시스템에서 효율성을 높일 수 있습니다.


6. 무정지 업데이트 및 롤백 기능

서비스에 변경을 가할 때, 무정지 업데이트와 롤백 기능을 고려하여 사용자에게 지속적인 서비스를 제공할 수 있도록 합니다.


7. 보안 및 DDoS 대응

대규모 트래픽은 보안 공격으로 이어질 수 있습니다. DDoS 공격에 대비하여 방어 메커니즘을 구현하고, 웹 방화벽 등의 보안 기술을 사용합니다.


8. 성능 모니터링 및 로깅

서버 및 네트워크 성능을 모니터링하고 로깅하는 도구를 사용하여 문제를 조기에 감지하고 해결합니다.


참고
로드 밸런싱
로드 밸런싱 종류
캐싱
scale-up/out
데이터 베이스 최적화

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초
post-custom-banner

0개의 댓글