7. 모니터링 및 크기 조정
모니터링
모니터링을 하는 이유
- 운영 상태 - 운영 가시성 및 인사이트 확보
- 애플리케이션 성능 - 성능 스택의 모든 계층에서 데이터 수집
- 리소스 사용률 - 리소스 최적화 개선
- 보안 감사 - 증거 수집, 보안 및 무결성을 관리
Amazon CloudWatch
- 지표 및 로그를 거의 실시간으로 수집
- 모니터링 데이터를 한 위치에서 액세스
- 경보를 생성하고 알림을 전송
- 규칙에 따라 리소스 용량 변경
- 대시보드 생성
CloudWatch 지표
- 타임스탬프와 함께 데이터 요소 저장
로그 유형
CloudWatch Logs 예제
- 두 서버 모두 로그 파일의 이벤트를 로그 스트림에 게시할 수 있다.
- 여러 로그 스트림을 단일 로그 그룹에 수집할 수 있다.
- 지표 필터를 사용하여 로그 이벤트에서 일치하는 값을 검색할 수 있다.
- ErrorCount로 에러 몇개인지 확인하고 알림 받기 등
AWS CloudTrail
- 사용자 활동 및 API 사용량을 추적
- 누가 무엇을 언제 했는가에 대한 인사이트 제공
VPC 흐름 로그
경보 및 이벤트
CloudWatch 경보
- CloudWatch 지표 식별
- 지표를 기준으로 경보 생성
- 지표 임계값 초과 시 수행할 작업을 정의
경보 상태
OK - 지표가 정의된 임계값 내에 있음 ALARM - 정의된 임계값을 벗어남 INSUFFICIENT_DATA - 경보가 방금 시작되었거나, 지표를 사용할 수 없거나, 데이터가 충분하지 않음
경보 구성 요소
- 통계
- 기간
- 평가 기간
- 경보를 생성할 데이터 요소 -> 몇번 위반되어야 경보를 생성할지
Amazon EventBridge
- 지점 간 통합을 작성할 필요 없음
- 메세지를 보내 환경에 대응
- 함수를 활성화하거나 작업을 시작
- 상태 정보를 캡쳐
CPUAbove90Percent 경보가 발생하면 외부 API 호출 및 이메일 전송
로드 밸런싱
Elastic Load Balancing (ELB)
- 기본적으로 라운드로빈
- Least Outstanding Requests (LOR) 알고리즘 최근에 도입
- 여러 대상에 자동으로 트래픽 분산
- 고가용성 제공 - 여러 가용 영역에서 다수의 대상에 걸쳐 트래픽 분산
- 보안 기능 통합
- 상태 확인 수행
계층 4, 7 로드 밸런싱 둘 다 가능
ELB 로드 밸런서 유형
Application Load Balancer
HTTP 및 HTTPS
- 유연한 애플리케이션 관리
- 트래픽의 고급 로드 밸런싱
- 요청 수준 (계층 7)에서 작동
Network Load Balancer
TCP 및 UDP
- 탁월한 성능 및 고정 IP
- TCP 트래픽의 로드 밸런싱
- 전송 계층 (계층 4)에서 작동
Gateway Load Balancer
IP
- 유연한 애플리케이션 관리
- 트래픽의 고급 로드 밸런싱
- 네트워크 계층 (계층 3)에서 작동
ELB 구성 요소
ELB 일반 기능
자동 크기 조정
변화하는 수요를 충족하기 위해 동적으로 용량을 확장 또는 축소하는 방법
AWS Auto Scaling
Amazon EC2 Auto Scaling
- 로드 밸런서 연결
- 그룹에 인스턴스 자동으로 등록
- 수신 트래픽 분산
탄력성: 확장 및 축소
- 트래픽 급증 시 웹 서버 수 확장
- 트래픽이 감소 시 데이터베이스 쓰기 용량 축소
- 아키텍쳐 전반에 걸친 일상적인 수요 변동 처리
이런걸 제대로 예측할 확률은 매우 낮다. 그러니까 Elastic Cloud Resource로 비용을 절감해보자.
Amazon EC2 Auto Scaling 구성 요소
시작 템플릿
그룹 용량
Amazon EC2 Auto Scaling 호출
- 상태 확인 - 지정된 수의 실행 인스턴스를 항상 유지하도록 그룹 구성
- CloudWatch 경보 - ALARM 상태일 때 인스턴스 늘리도록
- 일정 - 스케줄 걸어놓고 미리 늘리기
- 수동 크기 조정 - 인스턴스 몇개 띄울지 수동으로 조정 가능
Amazon EC2 Auto Scaling을 사용하는 크기 조정 방법
- 예약 크기 조정 - 미리 늘려놓기
- 동적 크기 조정 - 수요 변화에 대응하여
- 예측 크기 조정 - 일별 및 주별 패턴으로 예측