서비스 이용불가능 상태 발생 이전 cloud watch가 계속해서 모니터링하여 서버 대수를 늘려주는 방법
애플리케이션을 자동으로 모니터링하고 자원의 용량을 자동으로 조정
동작원리
- EC2 인스턴스 클러스터가 있고 8개의 인스턴스가 필요하다 - 하드웨어가 터졌다던지 소프트웨어 문제가 터져서 EC2 한개가 죽어버렸다 - 이것을 오토스케일링이 감지를 한다 - 시작구성에 맞는 인스턴스를 생성을 해서 오토 스케일링 클러스터에 넣어준다.
* 스케일링 : 인스턴스나 컴퓨팅파워를 높이는 것
② netdata를 이용한 모니터링
CPU 사용량, 디스크 활동, 대역폭 사용량, 웹 사이트 방문 등과 같은 실시간 메트릭을 수집 한 다음 해석하기 쉬운 실시간 차트로 표시하도록 설계된 오픈 소스 도구
slack 과 연동해서 설정한 임계치를 기반으로 알림 서비스를 구축할 수 있다.
③ 모니터링을 하는 이유
서버 과부화로 인해 서버 중지에 대한 대처를 할 수 있다.
어떤 페이지에 어떤 트래픽이 얼마나 발생했는지?
어떤 네트워크에서 병목현상이 일어났는지?
활용도가 낮은 페이지, 높은 페이지를 파악할 수 있어 나중에 서비스 개선에도 도움을 준다.
모니터링한 결과물을 알려주면서 서비스의 중단 등의 여부를 사용자에게 알려준다.
▶ 문제점을 파악하고 해결하기 위해 모니터링은 필수적이다
2) 로드밸런서
로드밸런싱 기술을 제공하는 서비스 또는 장치
클라이언트와 네트워크 트래픽이 집중되는 서버들 또는 네트워크 허브 사이에 위치한다
장애가 발생했을 때, 트래픽을 다른 기능 서버로 리디렉션하여 시스템 중단을 방지한다.
종류 : L4스위치, L7스위치
ex) AWS 오토스케일링은 구성하는데 시간이 걸리기 때문에 로드밸런서로 트래픽을 분산시켜야 한다.
로드밸런싱 - 네트워크 또는 서버에 가해지는 로드를 분산 해주는 기술 - 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미 - 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술
3) 블랙스완 프로토콜
블랙스완 : 예측할 수 없는 사고가 일어난 것
사후에는 사고의 원인 등을 분석할 수 있지만 사전에는 이 사고를 예측할 수 없는 것
매번 일어나기 때문에 이에 따라 대비해야한다.
ex ) 구글
1. 영향을 받은 시스템과 각 시스템의 상대적 위험 수준을 확인 2. 체계적으로 데이터를 수집하고 원인에 대한 가설을 수립한 후 이를 테스팅 3. 잠재적으로 영향을 받을 수 있는 내부의 모든 팀에 연락 4. 최대한 빨리 취약점에 영향을 받는 모든 시스템을 업데이트 5. 복원계획을 포함한 우리의 대응 과정을 파트너와 고객 등 외부에 전달
4) 서킷 브레이커 ( 서킷 브레이커 패턴 )
서비스 장애를 감지하고 연쇄적으로 생기는 에러를 방지하는 기법
서비스와 서비스 사이에 서킷브레이커 계층을 두고 미리 설정해놓은 timeout 임계값에 도달하면 서킷브레이커가 그 이후의 추가호출에 무조건 에러를 반환하게한다.
클라이언트 측면에서 장애를 방지하기 위한 도구로써, 실패할 수 있는 작업을 계속 시도하지 않도록 방지한다.
서킷브레이커가 구현된 라이브러리 : 넷플릭스의 Hystrix와 Resilience4j
① 서킷 브레이커 사례
스레드의 차단
스레드 하나 차단 => O
다중 스레드 상황에서 대다수의 스레드가 에러가 있는 서비스에 요청을 보낸다면 정상작동하는 스레드도 차단된다.
계단식 실패
하나이상의 부품, 서비스 등의 고장이 연결되어있는 다른 부품, 서비스의 고장으로 이어지는 것을 말합니다.
서비스 A,B,C,D가 이어져 있는 상태에서 A에 장애가 생긴다면, B,C,D의 서비스응답도 지연된다.
② 서킷 브레이커 동작과정 & 상태
서킷브레이커는 closed, open, half_open 의 상태값을 갖는다.
각각의 정해진 임계치가 넘어갈 경우 요청이 차단된다.
③ 서킷 브레이커 장점
연속적인 에러 발생을 막아준다
일부서비스가 종료되더라도 다른 서비스들은 이상없이 동작하게 만들 수 있으며 사용자경험을 높여준다.
5) 컨텐츠 관리
① 불필요한 컨텐츠 제거
불필요한 쿼리 등을 제거
ex) 인프런 장애복구사례
② CDN을 통한 컨텐츠 제공
사용자 가까이, 그리고 분산된 대규모 서버 네트워크를 기반으로 컨텐츠를 제공해서 메인 서버에 대한 부하를 줄인다..
③ 컨텐츠 캐싱
브라우저 캐시를 통해 해당 요청에 관한 항목을 캐시에서 응답을 읽어 네트워크 요청에 관한 비용을 모두 제거한다.
④ 컨텐츠 압축
텍스트 기반 리소스는 gzip 또는 Brotli를 통해 압축한다.
압축하면 70% 정도까지 압축할 수 있습니다.
⑤ 컨텐츠의 우하한 저하(미리 준비된 응답)
시스템의 과도한 부하를 줄이기 위해 제공하는 컨텐츠 및 기능을 일시적으로 줄이는 전략
예시
정적 텍스트 페이지를 제공, 검색을 비활성화, 적은 수의 검색 결과를 반환, 필수적이지 않은 기능을 비활성화