추천 글 🍀
[SpringBoot] REST API 카카오 로그인 개발하는 법
SpringBoot를 이용하여 카카오 로그인을 구현해 보겠습니다. 카카오 로그인에 대해서 설명되어 있는 공식 문서입니다. 공식 문서에 설명 ...
[구조 패턴] 어댑터 | 퍼싸드 | 컴포지트 | 브리지 패턴 (with 예시 코드)
GoF가 정의하고 있는 23가지 패턴은 3가지 종류(생성, 구조, 행위)로 분류한다. 정보처리기사 필기 시험에서 해당 종류에 속하는 패턴을 ...
시험 후기 보기
2024.09.01 - [자격증] - [AWS] SAA 자격증 합격 후기, 합격 팁 공유 - Solutions Architect Associate (4주 소요)
[AWS] SAA 자격증 합격 후기, 합격 팁 공유 - Solutions Architect Associate (4주 소요)
자격증 취득 이유 컴퓨터공학과에 재학하는 동안 간간히 들었던 말이 '컴공은 자격증이 필요 없다. 실력이 더 중요하고 토이 프로젝트나 CS 지식을 쌓는 것이 더 중요하다!'라는 것이었다. 하지
proysm.tistory.com
안녕하세요, 올해 취업 후 아주 오랜만에 글을 작성하고 있습니다. 지난 방문 유입 통계를 보니 자격증 관련 글이 인기가 많더라고요. 그래서 제가 SAA 자격증을 공부하면 기록해 놓은 시험 정리본을 공유하고자 합니다. 저의 시험 후기는 위 게시물을 참고하면 좋을 것 같습니다.

유데미에서 가장 유명한 SAA 자격증 강의입니다. 이 강의를 들으며 제가 한국어로 작성한 정리본입니다.
아예 AWS 서비스에 대한 이해가 없는 분이라면 이해가 어려울 수 있을 것 같습니다.
바로 시작하겠습니다.
정리본 공유 START
📕 IAM
- IAM은 권한 정책이다. 전체 서비스(글로벌)이기 때문에 리전을 선택하지 않아도 된다.
- IAM을 적용할 때, JSON 문서를 이용한다. → 최소 권한의 원칙을 적용한다.
🔎 (예시) IAM을 적용하는 법
{
"Version" : "2012-10-17",
"Id" : "S3-Account-Permissions",
"Statement" : [
{
"Sid" : "1",
"Effect" : "Allow",
"Principal" : {
"AWS" : ["arn:aws:iam:123456789:root"]
},
"Action" : [
"s3:GetObject",
"s3:PutObject"
]
"Resource" : ["arn:aws:s3:::your-bucket-name/*"]
}
]
}
✅ 이렇게 코드를 작성하면 계정 123456789의 루트 사용자가
버킷 your-bucket-name 안의 객체를 읽기(GetObject)와 쓰기(PutObject) 할 수 있다.
Statement 구성요소
- Effect(효과) : Allow / Deny
- Principal(원칙) : 누구에게 이 권한을 줄 것인지? (사용자/계정/역할)
- Action(조치) : 어떤 행동을 허용/차단할 것인지? -> 허용/차단할 S3작업(API) 목록
- Resource(리소스) : 어떤 리소스에 적용할 것인지? -> 권한이 적용되는 대상(S3 버킷이나 객체)
Quiz)
Statement의 구성 요소가 아닌 것은? -> Version(버전)
IAM 역할의 올바른 정의는?
→ AWS 서비스에 요청을 생성하기 위한 일련의 권한을 정의하고, AWS 서비스에 의해 사용될 IAM 객체
IAM 보안 도구에 해당되는 것은?
→ IAM 자격 증명 보고서
IAM 사용자 그룹은 IAM 사용자만 포함할 수 있다. (기타 그룹 포함 불가)
IAM 모범 사례는,
→ 루트 사용자 계정을 사용하지 않는다.
📕 EC2
- EC2는 AWS에서 가상 서버를 빌려 쓰는 서비스다.
- IaaS(Infrastructure as a Service)
- CPU, RAM, 스토리지(EBS/EFS), 네트워크를 원하는 대로 설정 가능하다.
💬 EC2의 핵심 구성요소
- EBS(Elastic Block Store) : 네트워크 기반 블록 스토리지
- ELB(Elastic Load Balancer) : 트래픽 분산
- ASG(Auto Scaling Group) : 트래픽/부하에 따라 EC2 자동 증감
- AMI(Amazon Machine Imange) : OS + 패키지 템플릿
📌 EC2 인스턴스
인스턴스 타입에는 t2.micro(무료), m5.2xlarge 등이 있다.
🔎 (예시) m5.2xlarge 해석
- m : 인스턴스 클래스
- 5 : 세대
- 2xlarge : 인스턴스 클래스의 사이즈
💬 인스턴스 유형
1️⃣ 범용 인스턴스 (General Purpose)
- 웹 서버나 코드 저장소와 같은 다양한 작업에 적합하다
- 균형 : 컴퓨팅, 메모리, 네트워킹
2️⃣ 컴퓨팅 최적화 인스턴스 (Compute Optimized)
- 컴퓨터의 집약적인 작업에 최적화된 인스턴스(고성능)
- CPU와 컴퓨팅을 요구하는 작업을 수행
- 모두 C로 시작하는 이름을 가지고 있다.
3️⃣ 메모리 최적화 인스턴스 (Memory Optimized)
- 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공한다.
- 인 메모리 데이터베이스가 되는 고성능의 관계형 또는 비관계형의 데이터베이스에 사용
- 분산 웹스케일 캐시 저장소
- BI에 최적화된 데이터베이스
4️⃣ 스토리지 최적화 인스턴스 (Storage Optimized)
- 로컬 스토리지에서 대규모 데이터셋에 접근할 때
- OLTP(온라인 트랜잭션 처리)
- 관계형 비관계형 NoSql
- Redis
- 분산 파일 시스템
📌 EC2의 네트워킹 & 보안
💬 보안 그룹 (Security Group)
- EC2의 방화벽 역할을 한다. (인바운드/아웃바운드 통제)
- 허용 규칙만 존재한다. 즉, 규칙에 없는 트래픽을 차단.
- 보안 그룹은 서로 참조할 수 있다.
- IP를 기준으로 설정할 수 있다.
💬 퍼블릭 IP vs 프라이빗 IP vs 탄력적 IP
- 퍼블릭 IP: 인터넷 접근용
- 프라이빗 IP: 내부 VPC 통신용
- 탄력적 IP: 고정 퍼블릭 IP
💬 포트 번호
- 22 : SSH (Secure Shell) - 리눅스 인스턴스 용
- 21 : FTP (File Transfer Protocol)
- 22 : SFTP (Security File Transfer Protocol)
- 80 : HTTP
- 443 : HTTPS
- 3389 : RDP (Remote Desktop Protocol) - 윈도우 인스턴스용
📌 EC2 구매 옵션
💡 TIP
이러한 상황에는 어떤 구매 옵션을 선택해야 할까?라는 문제가 출제된다.
1️⃣ EC2 On Demand(온디맨드)
- 필요할 때 바로 쓰고, 사용한 만큼 요금을 지불한다.
- 유연하지만 비싸다.
2️⃣ EC2 Reserved Instances(에약 인스턴스)
- 예약하여 사용하며 온디맨드보다 72% 정도 저렴하게 이용할 수 있다.
- 1년 또는 3년 약정 계약이다.
3️⃣ EC2 Savings Plans(절약 플랜)
- 2번 예약 인스턴스와 비슷하지만, 차이점은 특정 인스턴스를 예약하는 것이 아닌 시간당 사용량을 예약한다.
- 1년 또는 3년 약정 계약이다.
4️⃣ EC2 Spot Instances(스팟 인스턴스)
- AWS에서 남는 컴퓨팅 자원을 싸게 빌려주며 할인 폭이 제일 크다.
- 하지만 AWS가 자원을 회수한다면 인스턴스는 종료되고 그 자원은 손실된다.
- 아주 중요한 작업이나 데이터베이스에서는 적절하지 않다.
- 중단되어도 괜찮은 작업(데이터 분석, 머신러닝 학습, 배치작업)에 사용한다.
5️⃣ EC2 Dedicated Hosts(전용 호스트)
- 실제 물리적 서버를 내 계정 전용으로 할당받는다. (가장 비싼 모델)
- 온디맨드로 지불하거나 1년 또는 3년 동안 예약할 수 있다.
- 라이선스가 있는 회사에서 주로 사용한다.
6️⃣ EC2 Dedicated Instances(전용 인스턴스)
- AWS가 내 전용 물리서버에 EC2 인스턴스를 띄워준다. 하지만 서버 자체(하드웨어)는 보이지 않는다.
- "내 인스턴스가 다른 사람 인스턴스와 같은 물리 서버에 올라가지 않는다." 정도를 보장해 주는 것이다.
- 보안 및 규제 때문에 물리적 서버 공유를 피해야 할 때 사용한다.
🙋🏻♀️ Hosts vs Instances 차이점
전용 호스트는 물리 서버 그 자체를 내가 소유/관리하듯 쓸 수 있다.
전용 인스턴스는 내 인스턴스 전용 물리 서버에 올라가지만, 서버 자체는 보이지 않는다.
7️⃣ EC2 Capacity Reservations(용량 예약)
- 특정 가용영역(AZ)에 EC2 인스턴스를 띄울 용량을 미리 확보하는 기능이다.
- 온디맨드 요금이 부과된다.
- 필요할 때 용량이 반드시 확보되어야 하는 상황에 적합하다. (이벤트, 세일시즌, 금융 서비스, 의료 서비스)
9️⃣ Spot Fleets (요금을 절감하는 가장 효과적인 방법)
- 여러 개의 스팟 인스턴스 + 필요하다면 온디맨드 인스턴스까지 묶어서 가장 저렴한 조합으로 자동/실행 관리해 주는 서비스다.
- 쉽게 설명한다면, AWS에게 내가 원하는 성능을 이 예산 안에서 맞춰줘!라고 하는 것이다.
- 동작 방식 :
- 사용자가 목표(capacity)를 정한다. (예: vCPU 100개, GPU 4개 등)
- 여러 인스턴스 유형 / 여러 AZ 조합을 제시해 놓음
- Spot Fleet이 자동으로 가장 싼 조합을 찾아서 인스턴스를 띄운다.
- 인스턴스가 회수되면 다른 스팟/온디맨드로 다시 채워 넣는다.
- 비용을 극단적으로 줄이고 싶을 때 사용한다.
- 대규모 분산 작업에 사용한다. (빅데이터 분석, 대량배치 작업, 머신러닝 학습)
📌 EC2 배치그룹(Placement Group)
- EC2 인스턴스가 AWS 인프라에서 어떤 방식으로 배치될지 지정하는 서비스다.
- 내 인스턴스들을 어떤 위치(서버, AZ, 랙)에 놓을지 AWS에게 알려주는 옵션이다.
- 배치그룹을 선택하는 3가지 방식이 있다.
💡 TIP
이러한 상황에는 어떤 배치 옵션을 선택해야 할까?라는 문제가 출제된다.
1️⃣ Cluster
- 모든 인스턴스가 같은 물리적 랙에 배치된다.
- 장점 : 고속 네트워크, 낮은 지연, 높은 처리량
- 단점 : 가용영역에 장애가 발생하면 모든 인스턴스가 동시에 장애를 일으킨다.
- 빅데이터 작업, 처리량이 많은 작업(HPC)에 적합
2️⃣ Spread
- 여러 가용 영역에 분산시킨다.
- 장점 : 동시 실패의 위험이 감소한다.
- 단점 : 하나의 AZ당 최대 7개의 인스턴스로 제한이 된다. 배치 그룹 규모에 제한이 있다.
- 중용한 서버 거나 가용성을 극대화하고 싶을 때 사용한다.
3️⃣ Partition
- 여러 AZ의 파티션 단위로 인스턴스를 분산시킨다.
- 장점 : 서로의 랙 실패로부터 안전하다.
- HDFS, HBase, Cassandra, Apached Kafka 같은 대규모 분산 시스템에 사용한다.
📌 EC2 ENI(Elastic Network Interfaces)
- 가상 네트워크 인터페이스로, EC2 인스턴스에 부착할 수 있는 네트워크 어댑터다.
- IP주소, 서브넷, 보안그룹, MAC 주소 등의 네트워크 속성을 부착할 수 있다.
- 하나 이상의 보안그룹을 연결할 수 있다.
- EC2 인스턴스와 독립적으로 생성/이동 가능하다.
- AZ 단위로 고정이므로, 다른 AZ에 있는 EC2 인스턴스와 연결될 수 없다.
- 보조 ENI는 고가용성/이중화에 활용된다.
📌 EC2 Hibernate mode (절전 모드)
- EC2 인스턴스가 RAM 상태를 EBS에 저장하고, 종료 후 다시 켜면 그대로 이어서 부팅한다.
- 최대 60일 동안 이용할 수 있다.
- EC2 인스턴스 RAM은 150GB 미만이어야 한다.
- 온디맨드 및 예약 인스턴스를 지원한다.
- 루트 볼륨 유형은 EBS 볼륨이어야 한다. (인스턴스 스토어 볼륨 X)
- 절전모드를 켠다.
- 실행 중인 인스턴스는 중지 상태로 전환되고 RAM의 내용은 EBS 볼륨에 저장된다.
- 인스턴스를 종료하면 RAM이 사라진다.
- 하지만 볼륨에 여전히 존재하기 때문에 인스턴스를 재시작하면 디스크에서 RAM을 불러와 EC2 인스턴스 메모리로 가져간다.
- 인스턴스를 중지한 적이 없는 효과를 볼 수 있다.
📌 EC2 인스턴스 스토리지
🎯 시험 포인트
EBS = 블록 스토리지, AZ 단위, 스냅샷으로 백업/이동
AMI = 미리 설치된 이미지 → 빠른 배포
Instance Store = 임시 로컬 디스크, EC2 종료 시 데이터 손실
EFS = 여러 AZ/EC2 공유 가능, NFS 기반
1️⃣ EBS 볼륨 (Elastic Block Volume)
- EC2 인스턴스에 연결 가능한 블록 스토리지다.
- 인스턴스를 재생성하고 EBS 볼륨을 마운트 하면 데이터를 다시 받을 수 있다.
- 인스턴스는 여러 개의 볼륨을 가질 수 있지만, 볼륨은 하나의 인스턴스에만 연결될 수 있다.
- 하나의 가용 영역에 한정된다. (us-east-1a에서 생성된 볼륨은 us-east-1b로 연결이 불가능하다.)
💬 종료 시 삭제 옵션 설정이 가능하다. (Delete on Termination)
- 기본 설정으로는 루트 볼륨에 체크되어 있다. 이 경우에 종료 시 볼륨이 삭제된다.
- 인스턴스가 종료될 때 루트 볼륨을 유지하고자 하는 경우 삭제 속성을 비활성하면 된다.
- EC2 인스턴스를 종료하면, 루트 볼륨 유형은 삭제되고 EBS 볼륨 유형은 삭제되지 않는다.
💬 EBS 볼륨 유형은 다음과 같다.
| 유형 | 저장 매체 | 특징 | 용도 |
| gp2 / gp3 | 범용 SSD | 낮은 대기시간, 비용 효율 | 부팅 볼륨, 가상 데스크톱, 개발/테스트 환경 |
| io 1 / io 2 | SSD (Provisioned IOPS 볼륨) | 지속적인 고성능 IOPS 제공, 16,000 IOPS 이상 가능 | DB, I/O 민감 애플리케이션 |
| st 1 | HDD | 높은 처리량, 저비용 | 빅데이터, 로그, 스트리밍 |
| sc 1 | HDD | 매우 저비용, 낮은 성능 | 장기보관, 백업, 데이터 아카이브 |
io1과 io2 제품군에 한해서만, 하나의 볼륨이 여러 개의 인스턴스와 연결될 수 있다. (한 번에 16개만 가능)
💬 EBS 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업이다. AZ 간 이동이 가능하므로 us-east-1A의 EBS의 스냅샷을 찍고 us-east-1B에 연결하면 한 AZ에서 다른 AZ로 전송이 가능하다.
- EBS Snapshot Archive
- 75% 저렴하게 스냅샷을 옮기는 방법
- 복원하는데 24시간~72시간 걸림
- Recycle Bin for EBS Snapshots
- EBS 스냅샷을 삭제하는 경우 영구 삭제하는 대신에 휴지통에 넣을 수 있다.
- 1일에서 1년 사이로 보존 기간을 설정할 수 있다.
- Fast Snapshot Restore(FSR)
- 빠른 스냅샷 복원, 스냅샷을 완전 초기화해 지연 시간을 줄임
- 비용이 많이 든다.
2️⃣ AMI (Amazon Machine Image)
- EC2 인스턴스를 통해 만든 이미지를 통칭
- 인스턴스에 설치하고자 하는 모든 소프트웨어를 AMI가 미리 패키징 해준다.
- 특정 AWS 리전에 국한되며 각 AWS 리전에는 고유한 AMI가 있다.
💬 Golden AMI
- EC2 인스턴스에 필요한 OS+소프트웨어+종속성을 미리 설치하고 설정한 표준 이미지
- 즉, 언제든 바로 쓰는 준비된 EC2 이미지
Quiz)
솔루션 아키텍트로서, 여러분은 복잡한 ERP 소프트웨어 스위트를 AWS Cloud로 이전하려 합니다. 오토 스케일링 그룹이 관리하는 한 세트의 Linux EC2 인스턴스에 소프트웨어를 호스팅 할 계획입니다. 소프트웨어가 Linux 기기를 준비하는 데에는 보통 한 시간 이상이 걸립니다. 스케일 아웃이 발생할 경우, 설치 과정을 빠르게 만들기 위해서는 어떤 방법을 추천할 수 있을까요?
→ Golden AMI 사용
애플리케이션을 Elastic Beanstalk으로 배포하던 도중, 배포 프로세스가 극도로 느리다는 것을 알게 되었습니다. 로그를 검토한 결과, 종속성이 매 배포 당 각 EC2 인스턴스로 리졸브 된다는 사실을 발견했습니다. 영향을 최소화하면서 배포 프로세스를 빠르게 하려면 어떻게 해야 할까요?
→ 종속성을 포함하는 Golden AMI를 생성해 그 이미지를 EC2 인스턴스 실행에 사용
3️⃣ EC2 인스턴스 스토어
- EC2 인스턴스와 물리적으로 연결된 임시 디스크다.
- 고성능의 하드웨어 디스크가 필요할 때 사용한다.
- 인스턴스 스토어를 종료하면 해당 스토리지 또한 손실되므로 임시 저장용이다.
- EC2 종료 시 캐시 손실이 괜찮고, IOPS 높은 데이터베이스를 사용할 때 적합하다.
Quiz)
310,000의 IOPS를 요구하는 고성능 데이터베이스가 있다. 다음 중 무엇을 추천해야 할까?
→ EC2 인스턴스 스토어 사용
4️⃣ Amazon EFS(Elastic File System)
- NFS 기반 네트워크 파일 시스템이다.
- 여러 개의 EC2 인스턴스에 마운트 될 수 있고 다른 가용 영역에서도 가능하다.
- 내부적으로 NFS protocol을 사용한다. 액세스 제어를 위해 보안 그룹을 설정해야 한다.
- 윈도우가 아닌 Linux 기반 AMI(Amazon Machine Image)와만 호환된다는 점이다.
- 다수 AZ 인스턴스에서 공유 데이터 필요하거나 대규모 파일 시스템을 구축할 때 적합하다.
Quiz)
대량의 데이터 세트를 처리하는, 다수의 AZ에 걸친 EC2 인스턴스 플릿이 있다. 동일한 데이터가 NFS 드라이브로서 모든 EC2 인스턴스에서 액세스 할 수 있게 만들기 위해서는 어떤 방법을 추천할 수 있을까?
→ EFS
EC2 인스턴스에 호스팅 된 애플리케이션에 고성능 로컬 캐시를 포함시키려 한다. EC2 인스턴스 종료 시, 캐시가 소실되어도 문제가 없는 상황이다. 이런 경우, 솔루션 아키텍트로서 어떤 스토리지 메커니즘을 추천할 수 있을까?
→ 인스턴스 스토어
기반 스토리지에 310,000의 IOPS가 필요한 고성능 데이터베이스를 실행하고 있다. 어떤 방법을 추천할 수 있을까?
→ EC2 인스턴스 스토어
📕 고가용성 및 스케일링성
💬 수직확장성 : t2.micro → t2.large
- 데이터베이스와 같이 분산되지 않은 시스템에서 흔히 사용된다.
- ex) 신입직원을 경력직원으로 교체
- RDS
💬 수평확장성
- 애플리케이션에서 인스턴스나 시스템의 수를 늘리는 방법이다.
- ex) 신입직원을 더 뽑는다.
- EC2
💬 고가용성
- 애플리케이션 또는 시스템을 적어도 둘 이상의 AWS의 AZ나 데이터 센터에 가동 중이라는 것을 의미한다.
- 센터가 하나 멈춰도 계속 작동하도록 한다.
💬 인스턴스의 수가 늘어나면 스케일 아웃, 줄어들면 스케일 인
📌 ELB & 로드밸런서
로드밸런서란 트래픽을 여러 EC2인스턴스나 서버로 분산하는 것이다.
ELB는 Elastic Load Balancer를 가리키는데, AWS가 관리해주는 로드밸런서를 말한다. 알아서 EC2의 상태를 확인하고 정상적으로 작동하는 인스턴스에만 트래픽을 전송한다.
1️⃣ ALB(Application Load Balancer)
- HTTP/2, WebSocket을 지원한다.
- 여러 대상 그룹으로 라우팅할 수 있다.
- EC2 인스턴스
- Private IP 주소
- Lambda 함수
2️⃣ NLB(Network Load Balancer)
- 성능이 매우 좋다. (고성능 TCP/UDP 처리)
- AZ 당 하나의 정적 IP 주소를 가지며, 여기에 탄력적 IP 주소를 연결할 수 있다.
- 상태 확인에 3가지 프로토콜을 지원한다.
- TCP 프로토콜
- HTTP 프로토콜
- HTTPS 프로토콜
Quiz)
규정 준수를 위해, 고정된 정적 IP 주소를 최종 사용자에게 노출하여 사용자들이 안정적이고, 규제 기관의 승인을 받은 방화벽 규칙을 작성할 수 있도록 하려 한다. 이런 경우, 다음 중 어떤 종류의 Elastic Load Balancer를 사용해야 할까?
→ NLB
3️⃣ GWLB(Gateway Load Balancer)
- 네트워크 전체 트래픽을 분석한다.
- IDPS, 패킷 분석용
- 6081번 포트의 GENEVE 프로토콜을 사용하여 네트워크 트래픽을 캡슐화하여 보안장치(방화벽)으로 전달한다.
4️⃣ Sticky Sessions(고정 세션)
- 클라이언트의 요청이 항상 같은 백엔드 인스턴스로 전달되도록 만드는 기능이다. (쿠키)
- 예를 들어, 사용자의 로그인 상태를 유지하기 위해 같은 사용자 요청은 계속 같은 서버로만 보내지도록 하여 로그인을 유지한다.
2가지 유형의 쿠키 전략을 사용한다.
- 애플리케이션 기반 : 쿠키 이름은 `AWSALB`, `AWSALBAPP`이다.
- 기간 기반 : 쿠키 이름은 `AWSALB`, `AWSELB`이다.
5️⃣ Cross-Zone Load Balancing
- 로드밸런서가 모든 AZ 인스턴스에 트래픽을 균등하게 분배한다.
- ALB는 자동 활성화 되며, 추가 비용은 없다.
- NLB/GWLB은 수동 설정이 필요하고, 비용이 발생할 수 있다.
6️⃣ SSL/TLS & ACM & SNI(Server Name Indication)
- SSL/TLS은 클라이언트와 로드밸러서 간의 트래픽을 암호화한다.
- ACM은 AWS 인증서를 관리한다.
- SNI는 하나의 로드밸러서에 여러 SSL 인증서 사용이 가능하도록 해준다.
Quiz)
다음과 같은 호스트 이름을 기반으로, 트래픽을 3개의 대상 그룹으로 리다이렉팅 하도록 구성된 Application Load Balancer가 있다: users.example.com, api.external.example.com, checkout.example.com. 이 각각의 호스트 이름에 HTTPS를 구성하려 한다. 이런 작업을 위해서는 ALB를 어떻게 구성해야 할까?
→ SNI
7️⃣ Connection Draining
- 인스턴스가 종료/등록 해제 되더라도 기존 연결 요청을 끝까지 처리하도록 한다.
📌 Auto Scaling Group(ASG)
- AWS에서 EC2 인스턴스의 수를 자동으로 조절할 수 있는 기능을 제공한다.
- ASG는 사용자가 정의한 조건에 따라 인스턴스 수를 자동으로 늘리거나 줄여서, 애플리케이션이 일정한 성능과 가용성을 유지하도록 돕는다.
💬 스케일링 정책
- 동적 정책 : CloudWatch 알림 기반으로 자동 확장/축소한다.
- 스케쥴 정책 : 시간 기반으로 확장/축소한다.
- 예측 정책 : 부하를 예측하여 인스턴스를 미리 확보한다.
| 정책 | 특징 | 사용 사례 |
| 대상 추적(Target Tracking) | 목표값 유지 (자동 온도조절기) | CPU 50% 유지, ALB 연결 1,000개 유지 |
| 단계 조정(Step Scaling) | 임계 초과 정도에 따라 단계적 스케일링 | CPU 70% → +1, CPU 90% → +3 |
| 단순 조정(Simple Scaling) | 조건 발생 시 정해진 개수만 조정 | CPU 70% → 인스턴스 1개 추가 |
| 예측 조정(Predictive Scaling) | 과거 패턴 학습 후 미래 수요 대비 | 매일 9시 트래픽 폭주 대비 |
💬 주요 Metric
- CPU 사용률
- 타겟당 요청 수
- 네트워크 사용량
- 커스텀 Metric 가능
Quiz)
한 애플리케이션이 ALB(Application Load Balancer)와 ASG(Auto Scaling Group)를 통해 배포되었다. 이 상태에서
ASG의 크기를 수동으로 조정해, EC2 인스턴스의 평균 연결 개수가 약 1,000개가 되도록 조정 정책을 정의하려고 한다. 어떤 조정 정책을 사용해야 할까?
→ 대상 추적 조정 정책(Target Tracking Scaling Policy)
📕 RDS(Relational Database Service)
📌 Amazon RDS
- RDS가 지원하는 엔진은 여러 개다.(Aurora, PostgreSQL, MySQL, MariaDB, Oracle, ...)
- AWS가 관리하는 DB이기 때문에 자동 백업, Multi-AZ, 읽기 전용 복제본, IAM인증, 보안그룹, 암호화 등을 지원한다.
- 단, RDS 인스턴스에 SSH 접근은 불가하다.
📌 Aurora
- MySQL, PostgreSQL 호환된다.
- 성능 ↑ (MySQL 대비 5배, PostgreSQL 대비 3배)
- 스토리지를 자동 확장한다.
💬 고가용성 & 확장성
- 3개의 리전에 총 6개(2*3)의 복제본이 생긴다.
- 손상이 있으면 백엔드에서 P2P 복제를 통한 자가 복구가 진행된다.
- 단일 볼륨이 아닌 수 백 개의 볼륨을 사용한다.
- 쓰기가 가능한 마스터는 단 한 개이며 읽기는 16개까지 둘 수 있다.
💬 Aurora 클러스터 엔드포인트
- Writer 엔드포인트는 DNS 이름으로 항상 마스터를 가리킨다.
- Reader 엔드포인트는 자동 로드밸런싱된 읽기 복제본을 연결한다.
- Custom Endpoint는 특정 읽기 복제본 그룹에 연결할 수 있다.
💬 Aurora 고급 기능
- 오토 스케일링
- 읽기 복제본 자동 추가/삭제
- 특정 복제본에 특정 쿼리를 보내도록 Custom Endpoint 사용
- Aurora Serverless
- 사용량 기반 자동 확장
- 예측 불가능/간헐적 워크로드에 적합
- Global Aurora (글로벌 DB)
- 1차 리전 (RW) + 최대 5개 보조 리전 (RO)
- 보조 리전당 최대 16개 읽기 복제본
- 복제 지연 < 1초, 리전 장애 시 1분 이내 복구
- Aurora DB Cloning
- Copy-on-write 방식 → 빠른 복제
- 테스트/스테이징 환경 구축에 적합
- Aurora + ML 통합
- DB 쿼리에서 바로 AI/ML 모델 호출 가능
Quiz)
주 AWS 리전에 재해가 발생했을 때에 대비하여 다른 AWS 리전에 데이터베이스의 복제본을 만들어 두려 한다. 이런 작업을 쉽게 구현하기 위해서는 어떤 데이터베이스의 사용을 추천할 수 있을까?
→ Aurora 글로벌 데이터베이스(Aurora 글로벌 데이터베이스를 사용하면 최대 5개의 2차 리전까지 Aurora 복제본을 가질 수 있다.)
📌 RDS & Aurora 백업
💬 RDS 백업
- 비용을 절감하고 싶을 때도 RDS를 백업한다. 하루에 두 시간만 사용한다면 두시간 사용 후 스냅숏을 만든 다음 원본 데이터베이스를 삭제하면 된다. 그리고 다시 스냅샷을 복원하여 사용한다.
- RDS에는 Amazon S3에서 백업 파일을 복원하는 옵션이 있다.
💬 Aurora 백업
- Aurora는 자동 백업을 비활성화할 수 없다.
- RDS MySQL로 복원할 때는 데이터베이스의 백업만 있으면 되었지만, Aurora MySQL은 Percona ZtraBackup으로 백업을 한 다음, S3에서 Aurora DB Cluster로 백업을 하면 된다.
📌 RDS Proxy
- DB 연결 풀링 제공
- Lambda, 서버리스 환경에서 DB 연결 효율 ↑
- 장애 조치 시간 66% 감소
- IAM 인증 강제 가능 (자격 증명은 Secrets Manager에 저장)
- 지원 엔진: RDS MySQL, PostgreSQL, MariaDB / Aurora MySQL, PostgreSQL
- 보안: 퍼블릭 액세스 ❌, 오직 VPC 내부 연결만 가능
📌 Amazon ElastiCache
- Redis / Memcached를 지원한다.
- 읽기 집약적 워크로드에서 DB 부하가 감소된다.
- 캐시를 먼저 조회하도록 애플리케이션 코드 수정이 필요하다.(코드 변경이 필요 없는 캐싱 솔루션을 물어본다면 ElastiCache는 답이 될 수 없다.)
| 특징 | Redis(복제되는 캐시) | Memcached(분산되어 있는 캐시) |
| 복제 | 지원 (Multi-AZ, HA) | ❌ |
| 백업/복원 | 지원 | ❌ |
| 데이터 구조 | String, Hash, List, Set, Sorted Set | Key-Value |
| 인증 | Redis AUTH, IAM 인증 | SASL |
| 용도 | 세션 저장, 리더보드, 복잡한 데이터 캐시 | 단순 캐시, 샤딩 |
'자격증' 카테고리의 다른 글
| [AWS] SAA 자격증 합격 후기, 합격 팁 공유 - Solutions Architect Associate (4주 소요) (9) | 2024.09.01 |
|---|---|
| 2024 AWS 자격증 할인 바우처 ~ 24. 09. 30 (0) | 2024.08.08 |
| [TOPCIT] 탑싯 벼락치기 | TOPCIT 공부하는 법 | 결과 공유 (4) | 2024.05.21 |