| 연간 가용성 비율 | 비가용시간 |
|---|---|
| 99% | 3일 15시간 39분 |
| 99.9% | 8시간 45분 |
| 99.95% | 4시간 22분 |
| 99.99% | 52분 |
| 99.999% | 5분 |
멀티 AZ 기반 RDS 배포 환경에서 EC2 인스턴스 하나에 의존해서 실행중인 전통적인 애플리케이션 경우
EC2인스턴스및 RDS 인스턴스 가용성에 의존
총가용성
EC2인스턴스 90% 멀티 AZ 기반 RDS 인스턴스 가용성 99.5%
총 가용성을 높이기 위해 중복 구현 요소 사용시
단일 EC2 인스턴스에서 Linux 애플리케이션을 실행하되 DynamoDB를 사용하는 경우
DynamoDB 가용성은 99.99%
중복 구현 EC2 가용성 99.9
ALB 가용성 99.99%
서로 다른 6개 AZ 에 EC2 실행시
이들을 두개의 리전으로 나눠 배치하면 가용성을 더 높일수 있음
Route 53으로 트래픽 분산시
교차 리전에서 애플리케이션을 실행하는 경우 크로스 리전 복제를 지원하는 DynamoDB 글로벌 테이블을 활용하는 것이 좋으며
이 서비스의 가용성은 99.999%
즉 99.999% * 99.999% = 99.998%
AWS 는 개별 사용자가 우연히 혹은 의도적으로라도 모든 클라우드 리소스를 고갈시키지 못하도록 하는 용량 제한이 있다.
용량제한은
AWS Trusted Advisor를 이용해 계정에 적용된 서비스 용량제한을 확인 할 수 있으며
CloudWatch Alarms 설정에서 용량 제한선에 이르기 전 경고 메시지를 보낼 수 있다.
용량 제한 회피 전략
Auto Scaling 이 관리하는 EC2 인스턴스 그룹
최소용량
최대 용량
희망 용량
Auto Scaling은 요구 수준에 따라 인스턴스를 스케일 아웃 할수 있는 다양한 방법 제공
수동 스케일링
동적 스케일링 정책
이들 네이트브 성능 지표 외에도 CloudWatch logs 성능 지표를 추출할수 있는 매트릭스 필터를 사용할 수 있다.
CloudWathch alarm이 올릴 경우 희망 용량을 증가시키는 방법으로 스케일아웃 할 수 있다.
동적 스케일링 정책으로 심플 스케일링, 스텝 스케일링, 타겟 추적 스케일링 등 세가지가 있다.
지표가 기준치를 초과하면 AutoScaling이 희망 용량을 증가 시킨다.
ChangeInCapacity
ExactCapacity
PerecntChageInCapacity
AutoScaling이 조정 작업을 마치면 다음 정책 실행 전 쿨 다운 기간을 보내게 되고 이 시간 동안 알람이 울려도 무시한다
기본 쿨 다운 기간은 300초 0으로 설정해 쿨다운 기능을 끌수 있다.
단 인스턴스 상태가 좋지 못하면 Auto Scaling 쿨다운 기간을 무시하고 해당 인스턴스를 대체한다
CloudWatch Alarm 을 생성해 평균 CPU 활성화율을 모니터링하고 희망 용량 증가 시작점이자 알람의 기준치를 50%로 설정
최소 1단계의 조정 설정
스텝 스케일링 정책에서는 웜업 타임을 설정할 수 있다.
Auto Scaling이 새로운 인스턴스를 추가하기 위해 지표를 확인하기 위한 대기 시간 기본 값은 300초
쿨다운 기간은 적용되지 않는다
사용자가 지표와 목표 값을 선택하면 AutoScaling이 CloudWatch Alarm 및 스케일링 정책을 생성하고 해당 지표의 목표 값에 맞춰 인스턴스 수를 조정
지표는 그룹의 평균 cpu 활성화율 , sqs 메시지 수 , 타겟별 요청 수 등 인스턴스의 워크로드에 비례해서 변경될 수 있는 것을 선택
스케일 아웃은 물론 지표 수준에 맞춰 인스턴스 수를 줄이는 스케일 인 기능을 사용
웜업타임 지정 가능
One Zone IA를 제외한 S3 의 모든 스토리지 클래스가 멀티 AZ에 객체를 분산 저장
데이터 삭제 및 데이터 손상을 방지하려면 S3 비저닝 기능 활성화
멀티 AZ의 실패 또는 리전의 실패로부터 데이터를 보호하기 위해 크로스 리전 복제 기능을 활성화해 하나의 리전은 소스 버킷으로 또 다른 리전은 데스티네이션 버킷으로 설정
크로스 리전 복제 기능이 활성화 되면 S3는 모든 저장 객체를 동기적으로 소스 버킷에서 데이티네이션 버킷으로 복제
EC2 인스턴스와 온프레미스 서버간의 파일 공유를 가능케 하는 관리형 Network File System EFS는 리전 내 멀티 AZ 환경에 데이터를 저장해 개별 AZ 실패 상황에 대비
데이터 손실 변조를 방지하기 위해 개별 파일을 동일 리전 내 S3 버킷 도는 다른 EFS에 백업 할 수 있고 , AWS Backup Service를 이요해 정해진 스케줄에 따라 efs에 백업을 생성할수 있다.
자체 관계형 데이터베이스 서버를 실행하는 경우 해당 데이터베이스 엔진에 내장된 백업 기능을 이용해 데이터베이스 파일로 저장할수 있다.
s3 또는 Glacier에 저장해 데이터를 보호할 수 있다.
백업 파일을 목표 인스턴스로 전송하고 임포트 등의 절차를 거쳐 데이터베이스를 복원
RDS 의 경우 간단하게 데이터베이스 스냅샷만 생성하면 된다
데이터베이스 스냅샷으로 데이터베이스 복원하는 작업에느 ㄴ몇 분이 소요되며, 복원 후 새로우 ㄴ데이터베이스 인스턴스가 생성
복원성을 높이기 위해 멀티 AZ 환경에 데이터베이스를 배포 할 수 있으며, 하나의 AZ 에는 기본 인스턴스를 다른 AZ에는 대기 인스턴스를 둘수 있다.
RDS는 기본 인스턴스의 데이터를 대기 인스턴스에 동기적으로 복제할 수 있다.
복원성을 극대화하려면 Amazon Aurora 의 멀티 Aurora 복제본을 활용한다.
Aurora는 세개 AZ 데이터베이스를 저장하며, 기본 인스턴스 실패시 다른 AZ의 Aurora 복제본이 기능을 대체하게 된다
DynamoDB 는 멀티 AZ환경에서 테이블을 저장하며, 개발 AZ 실패 상황에서도 저지연성 고성능의 NoSQL 데이터베이스 서비스를 제공할 수 있다.
DynamoDB 글로벌 테이블을 사용해 멀티 리전에 테이블을 복제하면 복원성을 더욱 높일수 있다.
테이블의 기준시점 복구를 설정해 자동으로 백업을 생성하도록 할 수 있다.
SQS는 처리해야할 메시지를 담는 큐를 생성하며, 큐에 메시지를 넣는 프로듀서 컴포넌트와 큐에 있는 메시지를 읽는 컨슈머 컴포넌트로 구성
컨슈머 객체가 큐에서 메시지를 확인하더라도 메시지는 큐에 그대로 유지된다.
보유기간
딜레이큐 메시지 타이머
큐타입
초당 3천개의 메시지를 큐에 전달
메시지는 도착 순서대로 큐에 전달
각 메시지는 단 한번만 기록되므로 중복 메시지 문제를 피할수 있다.
FIFO큐는 메시지 단위로 큐를 분할해 큐에 입력된 메시지의 하위 그룹을 만들수 있다.
큐에서 메시지 확인 할때 도착 여부 조회 옵션인 숏폴링 또는 롱폴링 중 하나를 선택할 수 있다.
숏 폴링은 일부 메시지 누락이 있더라도 즉시 메시지를 확인 할 때 사용한다.
롱폴링은 약간의 지연이 있더라도 큐에 있는 모든 메시지를 정확하게 확인해야 할 때 사용한다.
숏폴링을 선택하면 SQS는 대기중인 메시지 내역만 확인하며, 큐에 들어온 메시지를 즉시 확인하거나 큐에 메시지 없을 을 즉시 확인할 수 있다.
하지만 메시지 도착후 지연시간이 짧은 관계로 큐에 메시지가 있는 상황에서 메시지가 없다는 응답을 받을 수 있다.
롱폴링을 선택하면 SQS는 큐에 대기중 모든 메시지 반환한다.