1. 오토스케일링 (Auto Scaling)
- 목적: 트래픽 증가 시 자동으로 서버 인스턴스를 추가하고, 트래픽 감소 시 자동으로 인스턴스를 줄여 비용을 절감합니다.
- 방법:
- 클라우드 서비스 사용: AWS Auto Scaling, Google Cloud Autoscaler, Azure Virtual Machine Scale Sets 등을 설정합니다.
- 트리거 설정: CPU 사용량, 메모리 사용량, 네트워크 트래픽 등의 지표를 기반으로 인스턴스를 자동으로 조정합니다.
2. 콘텐츠 전송 네트워크 (CDN)
- 목적: 전 세계에 분산된 서버 네트워크를 통해 정적 콘텐츠를 캐싱하고 제공하여 원래 서버의 부하를 줄입니다.
- 방법:
- CDN 서비스 사용: Cloudflare, AWS CloudFront, Akamai, Fastly 등의 CDN 서비스를 설정합니다.
- 캐싱 설정: 정적 파일(이미지, CSS, JavaScript 등)을 캐싱하고, TTL(Time To Live)을 적절히 설정하여 캐싱된 콘텐츠를 유지합니다.
적용이 쉽고 빠르기 때문에 나도 현업에서도 많이 사용 했었음.
3. 캐싱 (Caching)
- 목적: 서버 부하를 줄이고 응답 시간을 줄이기 위해 자주 요청되는 데이터를 캐싱합니다.
- 방법:
- 웹 서버 캐싱: Nginx, Varnish 등을 사용하여 정적 콘텐츠 및 API 응답을 캐싱합니다.
- 애플리케이션 레벨 캐싱: Redis, Memcached 등을 사용하여 데이터베이스 조회 결과나 계산 결과를 캐싱합니다.
- 브라우저 캐싱: 클라이언트 측에서 캐싱하도록 HTTP 헤더 설정을 통해 브라우저 캐싱을 유도합니다.
4. 트래픽 관리 및 최적화
- 목적: 트래픽을 효율적으로 관리하여 서버의 과부하를 방지합니다.
- 방법:
- Rate Limiting: 특정 시간 동안의 요청 수를 제한하여 서버에 과도한 부하가 걸리지 않도록 합니다.
- Queueing: 요청을 큐에 넣고 순차적으로 처리하여 서버의 부하를 분산시킵니다.
- Backpressure: 클라이언트에게 서버의 부하 상태를 알려주고 요청 속도를 조절하도록 합니다.
5. 임시 스케일링 전략
- 목적: 일시적인 트래픽 증가에 대비한 전략을 미리 계획합니다.
- 방법:
- 로드 테스트: 트래픽 증가 시 시스템이 어떻게 반응하는지 미리 테스트하여 병목 지점을 파악합니다.
- 미리 준비된 인프라: 예상되는 트래픽 증가에 대비하여 미리 준비된 서버 인프라를 설정해 둡니다.
- 핫 스탠바이 서버: 필요할 때 즉시 사용할 수 있는 대기 서버를 준비합니다.
6. 임시 데이터베이스 확장
- 목적: 일시적인 부하를 처리하기 위해 데이터베이스 성능을 일시적으로 확장합니다.
- 방법:
- 읽기 복제본 추가: 데이터베이스의 읽기 부하를 분산시키기 위해 읽기 복제본을 추가합니다.
- 클라우드 데이터베이스 확장: 클라우드 데이터베이스 서비스의 성능을 일시적으로 확장합니다. (예: Amazon RDS, Google Cloud SQL)
이와 같은 방법들을 통해 일시적인 트래픽 증가에 대응할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
[tomcat] 톰캣 가상 호스팅 (0) | 2023.06.06 |
---|---|
웹 서버와 WAS의 차이 (0) | 2023.01.12 |
쿠키(cookie) 저장 및 삭제 (0) | 2022.12.29 |
REST API 기본 (0) | 2022.10.31 |
객체지향 프로그래밍의 5가지 설계 원칙, SOLID (2) | 2022.10.22 |