25. 대규모 트래픽 해결방법
출처 : 면접을 위한 CS전공지식 노트(책 / 강의)
서버 과부하란?
서버에 접속하는 사람들이 폭발적으로 증가하여 트래픽이 급격하게 증가한 경우
- 이럴 경우 서버의 성능이 저하된다
- 500 번 대 에러 메세지가 뜬
모니터링
서버 과부하의 원인은 정말 많지만, 그 중에 하나가 자원의 한계점 도달이다
즉 CPU 같은 자원의 사용량이 한계점에 도달했거나, 메모리가 부족할 때 서버 과부하 상태가 된다
그래서 자원들을 모니터링 하면서, 적절하게 용량을 할당을 시켜줄 수 있다
- AWS 오토스케일링
- cloud watch를 통해 어플리케이션을 모니터링하고, 자동으로 자원의 용량을 조정한다
- 예) 메모리, GPU, CPU 증가
- 그 외에 서버를 모니터링 하며, 자원의 용량을 할당시켜준다
모니터링을 하면, 어느 페이지에서 어떤 트래픽이 일어났는지 확인 할 수 있다
- 반대로, 어느 페이지가 활용도가 낮은지 확인하고, 개선할 수도 있다
로드밸런서
모니터링을 통한 오토스케일링은 빠르지만 시간이 걸린다
그래서 로드밸런서를 앞 단에 이용하여 트래픽을 분산 시키는 것이다
- 오토스케일링을 하면, 이용자들은 짧더라도 서버가 만들어지는 시간을 기다려야 한다
- 예) 1차선만 있는 도로가 막히자, 급하게 2차선을 만드는 것
- 로드밸런스를 통해, 이용자들은 들어가려는 서버가 과부하 상태면, 다른 서버로 들어가면 된다
- 예) 4차선이 있는 고속도로에서 1차선이 막히면, 덜 막히는 2차선으로 차선만 변경하면 된다
블랙스완 프로토콜
시스템이 다운될 때 사용되는 프로토콜이다
- 영향을 받은 시스템과 각 시스템의 상대적 위험 수준을 확인
- 해당 시스템 때문에 영향을 받을 다른 시스템의 팀들에게 위험에 대해 알림
- 모든 시스템을 패치
- 복원을 위한 계획과 대응 과정을 파트너 또는 고객에게 전달
서킷 브레이커
장바구니, 정보 입력, 결제는 서로 의존하는 관계
- 즉, 장바구니에 문제가 생기면 연쇄적으로 정보 입력과 결제 페이지도 장애가 발생할 수 있다
- 하나라도 장애가 발생한다면, 서킷 브레이커를 통해 유저들이 그 이후의 기능들을 사용 못 하게 막는다
- 서킷 브레이커는 서버를 해결하는 것이 아닌, 에러가 생기면, 기능을 차단해버리는 것이다
서버에 요청을 계속 보냈지만, 응답을 제대로 안 보내주는 경우는 서버에 장애가 발생했다는 것이다
- 해당 서버로 인해, 다른 서비스도 악영향을 미칠 수 있다
- 이렇게 서킷 브레이커에서 서버에 장애가 발생했다고 느끼면, 서킷 브레이커가 열린다
- 서킷 브레이커가 열렸다는 것은, 서킷 브레이커가 중간에서 클라이언트의 요청을 받는 것을 막는 것이다
서킷 브레이커의 상태값
- closed : 요청 실패율이 낮음. 서버 정상
- open : 요청을 서버로 전송하지 않는다. 서버 장애
- half-open : 서버가 장애일 수 있다. 즉 장애가 풀리면 closed를 유지하고, 안 풀리면 open으로 바꾼다
컨텐츠 확인
불필요한 컨텐츠 제거
- 사용자가 요청을 했을 때, 사용자가 필요한 컨텐츠보다 더 많은 데이터를 제공할 수 있다
- 사용자가 1명, 2명이면 괜찮은데, 사용자 수가 증가하면, 그만큼 불필요한 데이터가 훨씬 많아지는 것이다
- 그래서 사용자가 정말 필요한 컨텐츠만 볼 수 있도록 설정을 해야 한다
- 예시)
- 사용자는 옷에 대한 사이즈만 필요하다 / 서버는 사이즈, 색상, 가격을 응답 해준다
- 100명의 사용자가 옷에 대한 사이즈만 필요로 한다는 것은 100개의 데이터만 있으면 된다
- 하지만 서버는 100명의 사용자에게 300개의 데이터를 보내주게 된다
- 즉, 서버에서 색상, 가격만 제거를 하면, 사용자에게 필요한 데이터만 응답하면서, 데이터 전송 속도를 훨씬 빠르게 만들 수 있다
- 불필요한 쿼리 제거
CDN을 통한 컨텐츠 제공
CDN은 메인 서버를 대신하여, 엔드 유저와 가까운 물리적 위치 및 네트워크에서 엔드 유저 요청에 응답하는 것이다
- 엔드 유저는, 서비스를 이용하는 일반 사람이다
메인 서버에서 모든 요청을 처리하면, 서버 과부하가 걸릴 수 있다
그래서 메인 서버 대신, CDN을 통해 서버 네트워크를 분산시킨다
컨텐츠 캐싱
- 메인 서버가 응답을 하는 것보단, 캐시에서 응답을 읽어 네트워크 요청에 관한 비용을 모두 제거한다
- 즉 메인 서버가 요청을 처리하는 것이 아니
컨텐츠 압축
- 응답을 보낼 때에, 컨텐츠를 압축시켜서 응답을 보낸다
컨텐츠의 우하한 저하 (미리 준비된 응답)
- 컨텐츠 또는 기능을 일시적으로 줄이는 것이다
- 응답하는 양이 줄어들어서 일시적으로 서버 과부하를 막을 수 있다
'독서 > CS 노트' 카테고리의 다른 글
27. 운영체제 [메모리, 캐시] (0) | 2023.03.14 |
---|---|
26. 운영체제 [운영체제, 컴퓨터의 요소] (0) | 2023.03.13 |
24. 유선/무선 LAN (0) | 2023.03.09 |
23. 네트워크를 이루는 장치 (0) | 2023.03.09 |
22. HTTP [상태코드, 메서드, REST API] (0) | 2023.03.08 |