서버 과부하
- 서버가 리소스를 소진하여 들어오는 요청을 처리하지 못할 때 발생
- 이 때, 서버는 사용자의 웹요청을 처리하지 못해 응답없음이 뜸
해결방법
모니터링을 통한 자원 할당
"자원의 한계점 도달"로, 보통 서버의 CPU 사용량이 80-90%에 도달하거나 메모리가 부족해
계속해서 스와핑이 발생하면 과부하 상태가 됨
- AWS 오토 스케일링
- 서비스 이용불가능 상태 발생 이전 cloud watch가 계속해서 모니터링하여 서버 대수를 늘려주는 방법
- AWS Auto Scaling은 애플리케이션을 자동으로 모니터링하고 자원의 용량을 자동으로 조정
- netdata를 이용한 모니터링
- 모니터링을 하는 이유
- 어떤 페이지에 어떤 트래픽이 얼마나 발생했냐
- 어떤 네트워크에서 병목현상이 일어났냐
- 활용도가 낮은/높은 페이지를 파악 -> 서비스 개선
로드밸런서
- AWS 오토스케일링은 빠르지만 구성에 시간이 걸리기 때문에 앞단에서 로드밸런서를 통해 트래픽을 분산해야함
- 로드밸런서는 한 서버에 장애가 발생하면 로드 밸런서는 트래픽을 다른 기능 서버로 리디렉션하여 시스템 중단을 방지할 수 있음
서킷 브레이커
- MSA에서 과부하를 방지하기 위해 사용되는 패턴, 시스템의 일부가 과부하되었을 때 자동으로 해당 부분을 차단하는 역할
- 감지 : 특정 서비스나 리소스에 대한 요청 실패율이 설정된 임계값을 초과하면 감지
- 차단 : 임계값을 초과하면 자동으로 해당 서비스나 리소스에 대한 요청을 일시적으로 차단
- 복구 시도 : 설정된 시간이 지난 후, 서킷 브레이커는 자동으로 차단을 해제, 서비스 상태 확인
- 장점 : 연속적인 에러 발생을 막아주며, 일부 서비스가 종료되더라도 다른 서비스들은 이상 없이 동작하게 만들 수 있으며, 사용자 경험을 높임
블랙스완 프로토콜
- 예상치 못한 큰 이벤트나 요청이 서버에 과부하를 일으킬 때, 이를 감지하고 대응하는 시스템
- 감지 : 시스템은 트래픽 패턴, 메모리 사용량, CPU 사용량을 지속적으로 모니터링
- 대응 : 이상 징후가 감지되면 자동으로 트래픽을 조절하거나, 필요한 경우 일부 서비스를 일시적으로 중단
- 복구 : 문제가 해결되면 서비스는 자동으로 정상 상태로 돌아감
구글의 블랙스완 대응 수칙
컨텐츠 관리
- 불필요한 컨텐츠 제거
- CDN을 통한 컨텐츠 제공
- CDN을 통해 사용자 가까이, 그리고 분산된 대규모 서버 네트워크를 기반으로 컨텐츠를 제공해서 메인 서버에 대한 부하를 줄임
CDN(Content Delivery Network) : 전 세계에 분산된 서버 네트워크를 사용하여 사용자에게 웹 콘텐츠를 제공, 이 네트워크는 사용자에게 가까운 위치에 서버를 두어 콘텐츠 접근 속도를 향상시킴
- 컨텐츠 캐싱
- 네트워크 트래픽을 해결하는 가장 좋은 방법은 해당 트래픽이 발생하지 않는 것
- 브라우저 캐시(쿠키, 로컬저장소, 세션저장소)를 통해 해당 요청에 관한 항목을 캐시에서 읽어 네트워크 요청에 관한 비용을 모두 제거
- 컨텐츠 압축
- gzip/Brotli를 통해 70% 정도까지 압축
- 압축을 풀기위해 서버에서 자원을 사용하는 양까지 고려해야함
- 보통은 압축하면 좋음
- 컨텐츠의 우하한 저하(미리 준비된 응답)
- 정적 텍스트 페이지를 제공
- 검색 비활성화 or 더 적은 수의 검색 결과를 반환
- 필수적이지 않은 기능 비활성화
출처 및 참고 : https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95#