AWS DVA-C02 핵심 요약본
이 문서는 AWS Certified Developer Associate (DVA-C02) 시험 대비를 위한 핵심 요약본입니다.
1. AWS 글로벌 인프라
핵심 구조
| 계층 | 설명 | 수량 |
|---|---|---|
| Region | 지리적 영역 (예: ap-northeast-2) | 30+ |
| Availability Zone | 리전 내 독립된 데이터센터 | 3~6개/리전 |
| Edge Location | CDN 캐시 서버 (CloudFront) | 400+ |
리전 선택 우선순위
- 규정 준수 (Compliance) - 데이터 주권
- 지연 시간 (Latency) - 고객과 가까이
- 서비스 가용성 - 모든 서비스가 모든 리전에 있는 건 아님
- 가격 - 리전마다 다름 (us-east-1이 가장 저렴)
Global vs Regional 서비스
| Global | Regional |
|---|---|
| IAM, Route 53, CloudFront, WAF | EC2, S3, RDS, Lambda, VPC |
2. IAM (Identity & Access Management)
핵심 구성 요소
| 구성 요소 | 설명 | 비유 |
|---|---|---|
| Users | 실제 사람 | 사원증 |
| Groups | 사용자 모음 (그룹 안에 그룹 불가) | 부서 |
| Roles | AWS 서비스/애플리케이션용 권한 | 직책 |
| Policies | JSON으로 정의된 권한 | 출입 권한증 |
Policy 핵심 요소
{
"Effect": "Allow/Deny", // 필수
"Action": ["s3:GetObject"], // 필수
"Resource": ["arn:aws:s3:::bucket/*"], // 필수
"Condition": {} // 선택
}IAM Best Practices
- Root 계정: 일상 사용 금지, MFA 필수, Access Key 생성 금지
- 최소 권한 원칙 (Least Privilege)
- EC2/Lambda는 IAM Role 사용 (Access Key 하드코딩 금지!)
- Access Key는 Git에 커밋 금지
보안 도구
| 도구 | 수준 | 용도 |
|---|---|---|
| Credentials Report | 계정 | 전체 사용자 보안 상태 CSV |
| Access Advisor | 사용자 | 서비스 접근 기록, 불필요한 권한 찾기 |
3. EC2 (Elastic Compute Cloud)
인스턴스 타입 명명 규칙
m5.2xlarge = 인스턴스 클래스(m) + 세대(5) + 크기(2xlarge)
| 타입 | 용도 | 시리즈 |
|---|---|---|
| 범용 | 웹 서버, 개발환경 | T, M |
| 컴퓨팅 최적화 | 배치, ML, 게임 서버 | C |
| 메모리 최적화 | DB, 캐시, 실시간 처리 | R, X |
| 스토리지 최적화 | OLTP, 데이터 웨어하우스 | I, D, H |
Security Group
- Inbound: 기본 모두 차단 ❌ (허용 규칙 추가 필요)
- Outbound: 기본 모두 허용 ✅
- 타임아웃 → SG 문제 / Connection Refused → 애플리케이션 문제
EC2 구매 옵션
| 옵션 | 할인 | 특징 | 용도 |
|---|---|---|---|
| On-Demand | 없음 | 약정 없음 | 단기, 테스트 |
| Reserved | ~72% | 1-3년 약정 | 24/7 서버, DB |
| Savings Plans | ~72% | 사용량 약정, 유연 | 장기 사용 |
| Spot | ~90% | 언제든 중단 가능 | 배치, 분석 (중단 OK) |
| Dedicated Host | ~70% | 물리 서버 전용 | 라이선스, 규제 |
4. EC2 스토리지
EBS vs EFS vs Instance Store
| 항목 | EBS | EFS | Instance Store |
|---|---|---|---|
| 연결 | 단일 EC2 | 다중 EC2 | 단일 EC2 |
| AZ | 단일 AZ | Multi-AZ | 단일 |
| 영속성 | ✅ | ✅ | ❌ (임시) |
| OS | Linux/Windows | Linux만 | Linux/Windows |
| 용량 | 프로비저닝 | 자동 확장 | 고정 |
| 성능 | 좋음 | 좋음 | 최고 |
EBS 볼륨 타입
| 타입 | 종류 | 최대 IOPS | 용도 | 부팅 |
|---|---|---|---|---|
| gp3 | SSD | 16,000 | 일반 (권장) | ✅ |
| io2 | SSD | 256,000 | 고성능 DB | ✅ |
| st1 | HDD | 500 | 빅데이터, 순차 처리 | ❌ |
| sc1 | HDD | 250 | 아카이브, 저비용 | ❌ |
EBS Snapshot
- 스냅샷으로 다른 AZ/Region에 EBS 복원 가능
- Archive: 75% 저렴, 복원 24~72시간
- Recycle Bin: 실수로 삭제해도 복구 가능
5. 고가용성 & 확장성
확장성 종류
| 유형 | 방법 | AWS |
|---|---|---|
| 수직 확장 | 인스턴스 크기 증가 | 타입 변경 |
| 수평 확장 | 인스턴스 수 증가 | ASG + ELB |
ELB 종류
| ELB | Layer | 용도 | 고정 IP |
|---|---|---|---|
| ALB | 7 (HTTP) | 웹 앱 (가장 많이 사용) | ❌ |
| NLB | 4 (TCP/UDP) | 초고성능, 게임, 금융 | ✅ |
| GWLB | 3 (IP) | 보안 어플라이언스 | - |
ALB 핵심
- URL 경로, 호스트, 쿼리 파라미터로 라우팅
- 클라이언트 IP:
X-Forwarded-For헤더에서 확인 - Target: EC2, ECS, Lambda, IP
Auto Scaling Group
- Minimum / Desired / Maximum 용량 설정
- Launch Template으로 EC2 설정 정의
스케일링 정책
| 정책 | 설명 | 용도 |
|---|---|---|
| Target Tracking | "CPU 40% 유지" 자동 조절 | 가장 쉬움 |
| Simple/Step | CloudWatch 알람 기반 | 세밀한 제어 |
| Scheduled | 예약된 시간에 스케일링 | 예측 가능한 트래픽 |
| Predictive | ML 기반 예측 | 패턴 있는 트래픽 |
Cross-Zone Load Balancing
- ALB: 기본 활성화 (무료)
- NLB/GWLB: 기본 비활성화 (AZ 간 데이터 비용 발생)
6. RDS, Aurora, ElastiCache
RDS 핵심
- AWS 관리형 관계형 DB (PostgreSQL, MySQL, MariaDB, Oracle, SQL Server)
- SSH 접속 불가 (RDS Custom 제외)
- Read Replica: 최대 15개, 비동기 복제, SELECT만 가능
- Multi-AZ: 동기 복제, 장애조치용 (스케일링 X)
Read Replica vs Multi-AZ
| 구분 | Read Replica | Multi-AZ |
|---|---|---|
| 복제 | 비동기 (ASYNC) | 동기 (SYNC) |
| 용도 | 읽기 성능 향상 | 재해 복구 (DR) |
| 스케일링 | O | X |
Aurora
- AWS 자체 개발 DB, PostgreSQL/MySQL 호환
- MySQL보다 5배, PostgreSQL보다 3배 빠름
- 3개 AZ에 6개 복제본 (쓰기 4개, 읽기 3개 필요)
- Writer Endpoint / Reader Endpoint (로드밸런싱)
RDS Proxy
- DB 연결 풀링, 장애조치 66% 단축
- Lambda + RDS 조합에 필수
- VPC 내부에서만 접근 가능
ElastiCache
- 관리형 인메모리 DB (Redis / Memcached)
- Redis: Multi-AZ, 영속성, 복잡한 데이터 구조
- Memcached: 샤딩, 멀티스레드, 비영속적
캐싱 전략
| 전략 | 설명 | 특징 |
|---|---|---|
| Lazy Loading | 캐시 미스 시 DB 조회 후 캐싱 | 요청된 데이터만 캐싱 |
| Write-Through | DB 쓰기 시 캐시도 동시 저장 | 항상 최신 데이터 |
7. Route 53
레코드 타입
| 타입 | 설명 | 비고 |
|---|---|---|
| A | 호스트명 → IPv4 | 가장 기본 |
| AAAA | 호스트명 → IPv6 | - |
| CNAME | 호스트명 → 다른 호스트명 | Zone Apex 사용 불가 |
| Alias | 호스트명 → AWS 리소스 | Zone Apex 가능, 무료 |
Alias vs CNAME
| 구분 | CNAME | Alias |
|---|---|---|
| Zone Apex | ❌ 불가 | ✅ 가능 |
| 비용 | 쿼리 과금 | 무료 |
| 대상 | 모든 호스트명 | AWS 리소스만 |
라우팅 정책
| 정책 | 기준 | 헬스체크 | 용도 |
|---|---|---|---|
| Simple | 없음 | ❌ | 단일 리소스 |
| Weighted | 가중치 | ✅ | A/B 테스트, 카나리 |
| Latency | 지연시간 | ✅ | 글로벌 성능 최적화 |
| Failover | Primary 상태 | ✅ 필수 | 재해 복구 |
| Geolocation | 사용자 위치 | ✅ | 현지화, 콘텐츠 제한 |
8. Amazon S3
핵심 개념
- 버킷: 전역 고유 이름, 리전에 생성
- 객체: 키(전체 경로), 최대 5TB
- 5GB 초과 업로드 시 Multi-part Upload 필수
보안
- EC2에서 S3 접근 → IAM Role 사용 (Access Key 대신)
- Cross-Account 접근 → Bucket Policy
스토리지 클래스
| 클래스 | 가용성 | 최소 저장 기간 | 용도 |
|---|---|---|---|
| Standard | 99.99% | 없음 | 자주 접근 |
| Standard-IA | 99.9% | 30일 | 가끔 접근 |
| One Zone-IA | 99.5% | 30일 | 단일 AZ, 저비용 |
| Glacier Instant | 99.9% | 90일 | 밀리초 검색 |
| Glacier Flexible | 99.99% | 90일 | 분~시간 검색 |
| Glacier Deep Archive | 99.99% | 180일 | 12~48시간 검색 |
| Intelligent-Tiering | 99.9% | 없음 | 자동 최적화 |
버전 관리 & 복제
- 버전 관리: 삭제 방지, 롤백
- CRR (Cross-Region): 규정 준수, 지연시간 단축
- SRR (Same-Region): 로그 집계
- 복제는 버전 관리 필수
9. VPC (Virtual Private Cloud)
핵심 구성 요소
| 구성 요소 | 설명 |
|---|---|
| VPC | 가상 프라이빗 네트워크 (리전 레벨) |
| Subnet | VPC 분할 (AZ 레벨) |
| Internet Gateway | VPC ↔ 인터넷 연결 |
| NAT Gateway | Private Subnet → 인터넷 (아웃바운드만) |
Security Group vs NACL
| 항목 | Security Group | NACL |
|---|---|---|
| 레벨 | 인스턴스 | 서브넷 |
| 상태 | Stateful | Stateless |
| 규칙 | ALLOW만 | ALLOW + DENY |
VPC Endpoints
- Gateway Endpoint: S3, DynamoDB (무료)
- Interface Endpoint: 대부분의 서비스 (비용 발생)
- Private Subnet에서 NAT Gateway 없이 AWS 서비스 접근
VPC Peering
- 두 VPC 연결 (다른 계정도 가능)
- CIDR 중복 불가
- 전이성 없음 (A↔B↔C에서 A↔C 불가)
10. AWS CLI, SDK, IAM
EC2 Instance Metadata (IMDS)
http://169.254.169.254/latest/meta-data- IAM Role 이름 조회 가능, Policy 내용은 불가
- IMDSv2: 세션 토큰 기반 (더 안전)
Credentials Provider Chain (우선순위)
- Command line options
- Environment variables
- CLI credentials file (~/.aws/credentials)
- CLI configuration file (~/.aws/config)
- Container credentials (ECS)
- Instance profile credentials (EC2)
Exponential Backoff
- 5xx 서버 에러, ThrottlingException → 재시도 O
- 4xx 클라이언트 에러 → 재시도 X (코드/권한 수정 필요)
- AWS SDK/CLI는 자동 구현, 직접 API 호출 시 구현 필요
모범 사례
- 코드에 자격 증명 하드코딩 ❌
- AWS 내부에서는 항상 IAM Role 사용
- EC2 → EC2 Instance Role
- Lambda → Lambda Execution Role
- ECS → ECS Task Role
11. S3 Advanced & Security
Lifecycle Rules
| 유형 | 설명 | 예시 |
|---|---|---|
| Transition Actions | 스토리지 클래스 전환 | 60일 후 Standard IA로 |
| Expiration Actions | 객체 삭제 | 365일 후 삭제 |
S3 성능 최적화
| 방식 | 용도 |
|---|---|
| Multi-Part Upload | 대용량 업로드 (>100MB 권장, >5GB 필수) |
| Transfer Acceleration | Edge Location 통해 원거리 전송 속도 향상 |
| Byte-Range Fetches | 병렬 다운로드, 부분 조회 |
| Prefix 분산 | Prefix당 3,500 PUT + 5,500 GET/초 |
암호화 방식
| 방식 | 키 관리 | 특징 |
|---|---|---|
| SSE-S3 | AWS | 기본값, AES-256 |
| SSE-KMS | AWS KMS | CloudTrail 감사, KMS 할당량 주의 |
| SSE-C | 고객 | HTTPS 필수, 키 매 요청 전달 |
| Client-Side | 고객 | 클라이언트에서 암/복호화 |
CORS
- Origin = Scheme + Host + Port
- CORS는 **자원 제공 서버(B)**에서 설정
- S3 버킷 간 리소스 요청 시 CORS 설정 필요
Pre-Signed URL
- 임시 S3 객체 접근 권한 부여
- CLI: 최대 7일 (604,800초)
- Console: 최대 12시간
S3 Access Points
- 버킷의 보안 관리 간소화
- Prefix별 다른 권한 부여 가능
- VPC Origin Access Point: VPC 내부에서만 접근
12. Amazon CloudFront
CloudFront 개요
- CDN (Content Delivery Network) 서비스
- 전 세계 400개+ Edge Location에서 콘텐츠 캐싱
- DDoS 방어, AWS Shield/WAF 통합
Origin 유형
| Origin | 설명 | 보안 |
|---|---|---|
| S3 Bucket | 파일 배포/캐싱 | OAC (Origin Access Control) |
| VPC Origin | Private Subnet 앱 | ALB/NLB/EC2 |
| Custom HTTP | 모든 HTTP 백엔드 | - |
OAC (Origin Access Control)
- S3 버킷 Private 유지하면서 CloudFront만 접근 허용
- OAI (레거시) → OAC (권장)
Cache 전략
- Cache Key = hostname + URL (+ Headers/Cookies/Query Strings)
- Cache Policy: Cache Key에 포함할 요소 지정
- Origin Request Policy: Cache Key 미포함, Origin에만 전달
- Cache Invalidation:
/*또는/images/*등으로 캐시 강제 갱신
Signed URL vs Signed Cookies
| 구분 | Signed URL | Signed Cookies |
|---|---|---|
| 대상 | 개별 파일 | 여러 파일 |
| 용도 | 프리미엄 콘텐츠 보호 | 다수 콘텐츠 접근 |
CloudFront vs S3 Pre-Signed URL
| 항목 | CloudFront Signed URL | S3 Pre-Signed URL |
|---|---|---|
| 캐싱 | ✅ 활용 | ❌ 직접 S3 접근 |
| 필터링 | IP, 경로, 날짜 | 제한적 |
13. Containers (ECS, EKS, Fargate)
AWS 컨테이너 서비스
| 서비스 | 설명 |
|---|---|
| ECS | AWS 자체 컨테이너 플랫폼 |
| EKS | AWS 관리형 Kubernetes |
| Fargate | 서버리스 컨테이너 (ECS/EKS와 함께) |
| ECR | 컨테이너 이미지 저장소 |
ECS Launch Type
| 구분 | EC2 Launch Type | Fargate Launch Type |
|---|---|---|
| 인프라 | 직접 관리 (EC2) | 서버리스 |
| ECS Agent | 설치 필요 | 불필요 |
| 스케일링 | EC2 + Task 관리 | Task만 |
ECS IAM Roles
| Role | 적용 대상 | 용도 |
|---|---|---|
| EC2 Instance Profile | EC2 Launch Type | ECS Agent (ECR Pull, CloudWatch) |
| ECS Task Role | 각 Task | AWS 서비스 접근 (Task Definition 정의) |
ECS + Load Balancer
- ALB 권장 (대부분 사용 사례)
- EC2: Dynamic Host Port Mapping
- Fargate: 각 Task에 고유 Private IP
ECS Auto Scaling
- ECS Service Auto Scaling: Task 레벨 (CPU, Memory, ALB 요청 수)
- Cluster Capacity Provider: Task 부족 시 EC2 자동 추가
ECS Data Volumes
- EFS: EC2 + Fargate 모두 지원, 다중 AZ 데이터 공유
- Fargate + EFS = 완전 서버리스
- ⚠️ S3는 파일 시스템 마운트 불가
EKS (Elastic Kubernetes Service)
- AWS 관리형 Kubernetes
- ECS 대안 (클라우드 무관, 기존 K8s 환경 이전에 유리)
- Node Types: Managed Node Groups, Self-Managed, Fargate
14. Elastic Beanstalk
개요
- 개발자 중심 배포 서비스
- 인프라 자동 관리 (EC2, ASG, ELB, RDS)
- 개발자는 코드만 책임
- Beanstalk 자체는 무료 (리소스만 과금)
Environment Tier
| Tier | 용도 | 구성 |
|---|---|---|
| Web Server | HTTP 요청 처리 | ELB + EC2 (ASG) |
| Worker | 백그라운드 작업 | SQS + EC2 (ASG) |
배포 옵션
| 방식 | 다운타임 | 속도 | 용도 |
|---|---|---|---|
| All at once | ✅ 있음 | 가장 빠름 | 개발 |
| Rolling | ❌ | 느림 | - |
| Rolling + batches | ❌ | 느림 | 프로덕션 |
| Immutable | ❌ | 가장 느림 | 프로덕션 (빠른 롤백) |
| Blue/Green | ❌ | 느림 | 프로덕션 |
| Traffic Splitting | ❌ | 느림 | 카나리 테스트 |
.ebextensions
- 위치: 소스 코드 루트의
.ebextensions/ - 형식: YAML/JSON, 확장자
.config - 용도: 설정을 코드로 관리, 추가 리소스 생성
RDS 분리
- Beanstalk으로 RDS 생성 시: 환경 삭제 = DB 삭제
- 프로덕션: RDS 별도 생성 후 연결 문자열만 제공
15. AWS CloudFormation
개요
- AWS 인프라를 선언적으로 정의 (IaC)
- 700개+ 리소스 타입 지원
- Template(설계도) → Stack(완성된 리소스 집합)
템플릿 구성 요소
| 섹션 | 필수 | 설명 |
|---|---|---|
| Resources | ⭐ 필수 | AWS 리소스 정의 |
| Parameters | 선택 | 동적 입력값 |
| Mappings | 선택 | 정적 변수 (리전별 AMI 등) |
| Outputs | 선택 | 값 출력/내보내기, Cross-Stack |
| Conditions | 선택 | 조건부 리소스 생성 |
핵심 함수
| 함수 | 용도 |
|---|---|
!Ref | 파라미터 값 / 리소스 ID 참조 |
!GetAtt | 리소스 속성 가져오기 |
!FindInMap | Mappings에서 값 조회 |
!ImportValue | 다른 스택 Output 가져오기 |
!Sub | 문자열 치환 |
Pseudo Parameters
AWS::AccountId,AWS::Region,AWS::StackName등- 기본 제공, 별도 정의 없이 사용
DeletionPolicy
| 정책 | 동작 | 사용 사례 |
|---|---|---|
| Delete | 삭제 (기본) | 일반 |
| Retain | 보존 | 중요 데이터 |
| Snapshot | 스냅샷 후 삭제 | RDS, EBS |
Custom Resources
- CloudFormation 미지원 리소스 정의
- Lambda 함수 연동
- 사용 사례: S3 버킷 비우기 후 삭제
StackSets
- 여러 계정/리전에 스택 동시 배포
- AWS Organizations 전체 적용 가능
16. Integration & Messaging (SQS, SNS, Kinesis)
비동기 통신 서비스
| 서비스 | 모델 | 용도 |
|---|---|---|
| SQS | Queue (Pull) | 메시지 대기열, 디커플링 |
| SNS | Pub/Sub (Push) | 여러 수신자에게 발행 |
| Kinesis | Stream | 실시간 데이터 스트리밍 |
SQS Standard vs FIFO
| 항목 | Standard | FIFO |
|---|---|---|
| 순서 | Best effort | 보장 |
| 중복 | 가능 | Exactly-once |
| 처리량 | 무제한 | 300 msg/s |
SQS 핵심 개념
- Visibility Timeout: 기본 30초, 처리 중 다른 Consumer에게 안 보임
- Dead Letter Queue (DLQ): MaximumReceives 초과 시 실패 메시지 저장
- Long Polling: 1~20초 대기, API 호출 감소 (권장)
- Extended Client: S3 활용하여 1GB까지 메시지 저장
SNS Fan-Out 패턴
SNS Topic → SQS Queue 1 → Service A
→ SQS Queue 2 → Service B
→ Lambda → ...- 완전 디커플링, 데이터 손실 없음
SNS Message Filtering
- JSON 정책으로 구독자별 메시지 필터링
Kinesis Data Streams vs Data Firehose
| 항목 | Data Streams | Data Firehose |
|---|---|---|
| 용도 | 수집 | 적재 |
| 실시간성 | Real-time | Near Real-time |
| 데이터 저장 | 최대 365일 | 없음 |
| Replay | ✅ 가능 | ❌ 불가 |
17. Monitoring (CloudWatch, X-Ray, CloudTrail)
서비스 비교
| 서비스 | 용도 |
|---|---|
| CloudWatch | 메트릭, 로그, 이벤트, 알람 |
| X-Ray | 분산 추적, 성능 문제 해결 |
| CloudTrail | API 호출 감사, 변경 추적 |
CloudWatch Metrics
- EC2 기본 메트릭: 5분 주기 (Detailed: 1분, 유료)
- EC2 Memory는 기본 제공 안 됨 → Custom Metric 필요
- Custom Metric:
PutMetricDataAPI
CloudWatch Logs
- Log Group → Log Stream 구조
- 보존: 만료 없음 ~ 10년
- Unified Agent: 시스템 메트릭 + Logs (RAM 포함)
CloudWatch Alarms
- 상태: OK, INSUFFICIENT_DATA, ALARM
- Targets: EC2 (Stop/Terminate/Recover), ASG, SNS
- Composite Alarms: AND/OR 조합, 알람 노이즈 감소
EventBridge (구 CloudWatch Events)
- Schedule (Cron) + Event Pattern 기반 자동화
- 18개+ AWS 서비스와 연동
X-Ray 핵심 개념
| 용어 | 설명 |
|---|---|
| Trace | 요청의 전체 경로 |
| Segment | 각 서비스가 기록 |
| Annotations | 인덱싱됨, 검색 가능 |
| Sampling | 일부만 기록 (비용 절감) |
CloudTrail
- 기본 활성화, 모든 API 호출 기록
- Management Events (기본), Data Events (선택), Insights (비정상 탐지)
- 기본 보존: 90일 → S3로 장기 저장
18. AWS Lambda
Lambda vs EC2
| 항목 | EC2 | Lambda |
|---|---|---|
| 서버 관리 | 직접 | 불필요 |
| 실행 | 지속 | 온디맨드 |
| 최대 시간 | 무제한 | 15분 |
| 스케일링 | 수동 | 자동 |
호출 유형
| 유형 | 서비스 | 특징 |
|---|---|---|
| 동기 | ALB, API Gateway | 즉시 응답 |
| 비동기 | S3, SNS, EventBridge | 재시도 3회, DLQ |
| Event Source Mapping | Kinesis, DynamoDB, SQS | Polling, 배치 |
Lambda IAM Roles
- Execution Role: Lambda가 AWS 서비스 접근
- Resource-based Policy: 다른 서비스가 Lambda 호출 허용
VPC 내 Lambda
- Private 리소스 접근: VPC 배포 필요
- 인터넷 접근: NAT Gateway 필요
- AWS 서비스 접근: VPC Endpoint (NAT 없이)
Lambda 구성
| 항목 | 값 |
|---|---|
| RAM | 128MB ~ 10GB |
| vCPU | RAM에 비례 (1,792MB = 1 vCPU) |
| Timeout | 기본 3초, 최대 15분 |
| /tmp | 최대 10GB |
| 동시 실행 | 리전당 1,000 |
Cold Start 방지
- Provisioned Concurrency: 미리 동시성 할당
Edge Functions
| 유형 | 용도 | 실행 시간 |
|---|---|---|
| CloudFront Functions | 간단한 Viewer 처리 | < 1ms |
| Lambda@Edge | 복잡한 처리, Origin 접근 | 5~10초 |
19. Amazon DynamoDB
특징
- 완전 관리형 NoSQL, Multi-AZ 복제
- 초당 수백만 요청, 수조 행 지원
- 빠르고 일관된 저지연 성능
Primary Key 옵션
- Partition Key (HASH): 고유해야 함
- Partition Key + Sort Key (HASH + RANGE): 조합이 고유
Capacity Modes
| 모드 | 특징 | 용도 |
|---|---|---|
| Provisioned | RCU/WCU 지정, 저렴 | 예측 가능 워크로드 |
| On-Demand | 자동, 2.5배 비쌈 | 예측 불가 워크로드 |
RCU/WCU 계산
- 1 WCU = 1KB 이하 아이템 1개/초 쓰기
- 1 RCU = 4KB 이하 아이템 (Strongly: 1개/초, Eventually: 2개/초)
인덱스
| 항목 | LSI | GSI |
|---|---|---|
| Partition Key | 동일 | 다름 |
| 생성 시점 | 테이블 생성 시만 | 언제든 |
| RCU/WCU | 메인 테이블 | 별도 프로비저닝 |
핵심 기능
- DAX: DynamoDB 앞단 캐시, 마이크로초 응답
- DynamoDB Streams: 변경 데이터 캡처 (24시간 보존)
- Global Tables: Multi-Region Active-Active 복제
- TTL: 자동 아이템 삭제
20. Amazon API Gateway
주요 기능
- REST API, WebSocket 지원
- 인증/인가, API 키, Throttling
- 요청/응답 변환, 캐싱
Integration Types
| 타입 | 설명 |
|---|---|
| AWS_PROXY | Lambda에 그대로 전달 (가장 많이 사용) |
| HTTP_PROXY | HTTP 백엔드에 그대로 전달 |
| AWS/HTTP | Mapping Template으로 변환 |
| MOCK | 백엔드 없이 응답 반환 (테스트용) |
Endpoint Types
| 유형 | 설명 |
|---|---|
| Edge-Optimized | CloudFront 경유, 글로벌 |
| Regional | 같은 리전 클라이언트용 |
| Private | VPC 내에서만 접근 |
Stage & Deployment
- 변경 후 Deployment 필수
- Stage: dev, test, prod 환경 분리
- Stage Variables: 환경별 다른 값 설정
Throttling
- 기본: 10,000 RPS
- 초과 시: 429 Too Many Requests
에러 코드
| 코드 | 의미 |
|---|---|
| 429 | Too Many Requests (Throttle) |
| 502 | Bad Gateway (Lambda 응답 형식 오류) |
| 504 | Gateway Timeout (29초 초과) |
인증 방식
- IAM: AWS 사용자/역할
- Cognito User Pools: 사용자 인증
- Lambda Authorizer: 커스텀 인증 (토큰/요청 기반)
21. AWS CI/CD
CI/CD 서비스 스택
| 서비스 | 역할 | 핵심 파일 |
|---|---|---|
| CodeCommit | 코드 저장소 (deprecated) | - |
| CodePipeline | 파이프라인 오케스트레이션 | - |
| CodeBuild | 빌드 & 테스트 | buildspec.yml |
| CodeDeploy | 배포 자동화 | appspec.yml |
| CodeArtifact | 패키지 저장소 | - |
| CodeGuru | ML 코드 리뷰 | - |
CodeBuild buildspec.yml
version: 0.2
env:
variables: { NODE_ENV: "production" }
parameter-store: { DB_PASSWORD: "/my-app/db-password" }
phases:
install: { commands: [npm ci] }
pre_build: { commands: [npm test] }
build: { commands: [npm run build] }
post_build: { commands: [zip -r app.zip dist/] }
artifacts:
files: [app.zip, appspec.yml]
cache:
paths: [node_modules/**/*]CodeDeploy 배포 전략
| 전략 | 다운타임 | 롤백 속도 | 비용 |
|---|---|---|---|
| In-place | 있음 | 느림 | 낮음 |
| Blue/Green | 없음 | 빠름 | 높음 (2배 리소스) |
Lambda/ECS 배포 전략
| 전략 | 설명 |
|---|---|
| AllAtOnce | 즉시 100% |
| Canary10Percent5Minutes | 10%로 5분 → 100% |
| Linear10PercentEvery1Minute | 매 분 10%씩 증가 |
CodeGuru
| 기능 | 용도 |
|---|---|
| Reviewer | 정적 코드 분석, 보안 취약점 |
| Profiler | 런타임 성능 분석, CPU/메모리 |
22. AWS SAM (Serverless Application Model)
SAM 핵심
- Transform:
AWS::Serverless-2016-10-31(필수) - CloudFormation의 확장 (모든 CF 기능 사용 가능)
- YAML로 간단하게 서버리스 앱 정의
SAM 리소스 타입
| SAM 타입 | 생성되는 것 |
|---|---|
AWS::Serverless::Function | Lambda + IAM Role |
AWS::Serverless::Api | API Gateway REST API |
AWS::Serverless::HttpApi | API Gateway HTTP API |
AWS::Serverless::SimpleTable | DynamoDB |
SAM CLI 명령어
| 명령어 | 용도 |
|---|---|
sam init | 프로젝트 초기화 |
sam build | 빌드 |
sam deploy | 배포 (CloudFormation) |
sam sync --watch | 파일 변경 감지 + 자동 동기화 |
sam local start-api | API Gateway 로컬 실행 |
SAM + CodeDeploy
AutoPublishAlias: live
DeploymentPreference:
Type: Canary10Percent5Minutes
Alarms: [!Ref MyAlarm]
Hooks:
PreTraffic: !Ref PreTrafficHook23. AWS CDK (Cloud Development Kit)
CDK 특징
- 프로그래밍 언어로 인프라 정의 (TypeScript, Python, Java, .NET, Go)
- CloudFormation으로 변환되어 배포
- IDE 자동완성, 타입체크 지원
Construct 레벨
| 레벨 | 예시 | 특징 |
|---|---|---|
| L1 | CfnBucket | CF 리소스 1:1 |
| L2 | Bucket | 편리한 기본값 |
| L3 | LambdaRestApi | 완성된 패턴 |
CDK 명령어
| 명령어 | 용도 |
|---|---|
cdk init | 프로젝트 생성 |
cdk synth | CF 템플릿 생성 |
cdk bootstrap | 환경 준비 (1회) |
cdk deploy | 배포 |
cdk diff | 차이 확인 |
CDK vs SAM
| 항목 | SAM | CDK |
|---|---|---|
| 언어 | YAML | 프로그래밍 언어 |
| 범위 | 서버리스 중심 | 모든 AWS |
| 타입체크 | ❌ | ✅ |
24. Amazon Cognito
두 가지 핵심 서비스
| 서비스 | 역할 | 반환 |
|---|---|---|
| User Pools | 인증 (누구인가?) | JWT 토큰 |
| Identity Pools | 권한 부여 (뭘 할 수 있나?) | AWS Credentials |
Cognito vs IAM
| 항목 | IAM | Cognito |
|---|---|---|
| 대상 | AWS 내부 사용자 | 앱 사용자 |
| 규모 | 수십~수백 명 | 수백만 명 |
| 인증 | Access Key, MFA | 소셜 로그인, SAML |
User Pools 기능
- 회원가입/로그인, MFA, 비밀번호 재설정
- 소셜 로그인 (Google, Facebook, Apple)
- Hosted UI: AWS 제공 로그인 화면
- Lambda Triggers: Pre Sign-up, Post Confirmation 등
User Pools 통합
| 서비스 | 연동 방법 |
|---|---|
| API Gateway | Cognito Authorizer |
| ALB | authenticate-cognito 액션 |
Identity Pools
- JWT 토큰 → 임시 AWS Credentials 교환
- Guest 접근: 비인증 사용자 허용 가능
- Policy Variables:
${cognito-identity.amazonaws.com:sub}로 사용자별 리소스 격리
25. Other Serverless
Step Functions
| State 타입 | 설명 |
|---|---|
| Task | 실제 작업 수행 |
| Choice | 조건 분기 |
| Parallel | 동시 실행 |
| Map | 반복 처리 |
| Wait | 대기 |
Step Functions 에러 처리
| 메커니즘 | 설명 |
|---|---|
| Retry | 재시도 (BackoffRate) |
| Catch | 에러 잡기, 다른 상태로 |
Standard vs Express
| 항목 | Standard | Express |
|---|---|---|
| 시간 | 최대 1년 | 최대 5분 |
| 실행 | Exactly-once | At-least-once |
| 초당 | 2,000+ | 100,000+ |
AppSync
- GraphQL API 서비스
- 필요한 데이터만 요청 (Over-fetching 방지)
- 실시간 WebSocket 지원
- 다중 데이터 소스 통합 (DynamoDB, Lambda, RDS)
Amplify
- 풀스택 앱 개발 플랫폼
- 인증 (Cognito), 데이터 (AppSync), 스토리지 (S3)
- Hosting: CI/CD + CDN (Vercel/Netlify 대안)
- React, Vue, Next.js, iOS, Android 지원
26. AWS STS & Advanced IAM
STS 주요 API
| API | 용도 |
|---|---|
| AssumeRole | Role 가정 (같은/다른 계정) |
| GetSessionToken | MFA 인증 후 토큰 |
| GetCallerIdentity | 현재 자격 증명 확인 |
IAM 정책 평가
Explicit DENY > Explicit ALLOW > Implicit DENY (기본값)정책 변수 (Dynamic Policies)
| 변수 | 설명 |
|---|---|
${aws:username} | IAM 사용자 이름 |
${cognito-identity.amazonaws.com:sub} | Cognito Identity ID |
iam:PassRole
- EC2/Lambda에 Role 연결 시 PassRole 권한 필수
- Role의 Trust Policy에서 해당 서비스 허용 필요
Directory Services
| 서비스 | On-premise 연동 |
|---|---|
| AWS Managed AD | Trust 관계 |
| AD Connector | Proxy |
| Simple AD | ❌ 불가 |
27. Security & Encryption
암호화 유형
| 유형 | 설명 |
|---|---|
| In Flight | HTTPS (전송 중) |
| At Rest | 서버 측 암호화 |
| Client-Side | 클라이언트가 직접 |
KMS Key 유형
| 종류 | 비용 | 관리 주체 |
|---|---|---|
| AWS Owned Keys | 무료 | AWS |
| AWS Managed Keys | 무료 | AWS |
| Customer Managed | $1/월 | 고객 |
Envelope Encryption
- 4KB 초과 데이터 암호화 시 필수
- GenerateDataKey API 사용
- DEK(Data Encryption Key)로 데이터 암호화, DEK는 KMS로 암호화
SSM Parameter Store vs Secrets Manager
| 항목 | Parameter Store | Secrets Manager |
|---|---|---|
| 주 용도 | 설정 + 비밀 | 비밀 전용 |
| 자동 교체 | ❌ | ✅ (내장) |
| RDS 통합 | ❌ | ✅ |
| 비용 | 저렴/무료 | 비쌈 |
CloudHSM vs KMS
| 항목 | KMS | CloudHSM |
|---|---|---|
| 관리 | AWS 관리 | 내가 관리 |
| 하드웨어 | 공유 | 전용 |
| 키 소유 | AWS 접근 가능 | 나만 접근 가능 |
28. 기타 서비스
Amazon SES
- 대량 이메일 발송 서비스
- SMTP / API 발송 지원
- 트랜잭션/마케팅 이메일
Amazon OpenSearch
- 전문 검색 (Full-text Search) 엔진
- ElasticSearch 후속 서비스
- DynamoDB/CloudWatch Logs와 연동
Amazon Athena
- S3에 SQL 쿼리 (Serverless)
- $5/TB 스캔 비용
- Parquet/ORC 컬럼형 포맷 권장
Amazon MSK
- 관리형 Apache Kafka
- Kinesis 대안 (Kafka 호환 필요 시)
AWS ACM
- SSL/TLS 인증서 관리
- Public 인증서 무료, 자동 갱신
- ALB, CloudFront, API Gateway 통합
Amazon Macie
- S3 민감 정보 탐지 (PII)
- ML + 패턴 매칭
- GDPR, HIPAA 규정 준수
AWS AppConfig
- 실시간 설정 변경 (재배포 없이)
- Feature Flag 관리
- 점진적 배포 + 자동 롤백