플랫폼, 데브옵스와 클라우드

관리형 서비스

meellon 2026. 7. 4. 05:40

학습 목표

RDS·ElastiCacheHA·연결·VPC 배치를 설계할 수 있다.

S3 오브젝트 스토리지스토리지 클래스·라이프사이클워크로드맞게 선택할 수 있다.

SQS·SNS비동기·fan-out 메시징을 설계할 수 있다.

Lambda 이벤트 모델·cold start·VPC 연동 트레이드오프를 설명할 수 있다.

직접 운영 vs 관리형 선택 기준을 비용·운영·제어 관점에서 비교할 수 있다.

문제 상황

  • EC2에 PostgreSQL 직접패치·백업·장애 복구 올인
  • RDS public 접근 허용16편 VPC 설계 무력화
  • 캐시 없이 DB 조회 폭주p99 급등·connection pool 고갈
  • 로그·백업을 EBS쌓음용량·비용 선형 증가
  • 주문 API 동기이메일·정산 처리타임아웃·재시도 폭주
  • Lambda VPC 연결cold start↑·ENI 한도·NAT 비용

앞서 VPC·subnet·SG관리형 서비스동일 네트워크 경계 안에 둔다. 이번 편은 DB·스토리지·메시징·Serverless 대표 관리형 스택이다.

1. RDS와 ElastiCache

RDS(Relational Database Service)MySQL·PostgreSQL·Aurora관리형 RDB. 패치·백업·스냅샷·Multi-AZ failoverAWS담당.

옵션  
Single-AZ 개발·비용 최소AZ 장애 다운
Multi-AZ 동기 standby자동 failover (수 분)
Read replica 읽기 분산·리전 복제failover 대상 아님 (설정 가능)
Aurora 스토리지 자동 확장·reader endpoint
# code/rds.example.tf
resource "aws_db_subnet_group" "main" {
  name       = "app-db"
  subnet_ids = [aws_subnet.private_a.id, aws_subnet.private_b.id]
}

resource "aws_db_instance" "main" {
  identifier             = "app-postgres"
  engine                 = "postgres"
  instance_class         = "db.t4g.medium"
  allocated_storage      = 100
  db_subnet_group_name   = aws_db_subnet_group.main.name
  vpc_security_group_ids = [aws_security_group.rds.id]
  multi_az               = true
  backup_retention_period = 7
  storage_encrypted      = true
  publicly_accessible    = false
}
배치  
Subnet private onlydb subnet group multi-AZ
SG 5432 from app SG only
Endpoint writer vs readerORM·pool 분리
K8s SecretDSNConfigMap 금지

ElastiCacheRedis·Memcached 관리형 인메모리 캐시.

App read:
  1. GET cache key
  2. hit  → return
  3. miss → SELECT DB → SET cache (TTL) → return
패턴  
Cache-aside 앱이 캐시 직접 관리가장 흔함
Write-through 쓰기 캐시+DB 동시
TTL stale 허용 범위 명시
invalidation 업데이트 삭제·버전
실수  
캐시 = source of truth 영속 데이터 유실
RDS·Redis 같은 SG 과다 개방 least privilege
connection storm pool 크기·RDS max_connections
  • Database 시리즈복제·트랜잭션·인덱스 심화
  • 16편RDS private subnet·SG 참조

2. S3 오브젝트 스토리지

S3무제한 스케일 오브젝트 스토리지. 버킷··버전·라이프사이클.

용도 패턴
정적 자산 CloudFront + S3 — 이미지·SPA 빌드
백업·로그 → S3 — Glacier 이관
데이터 레이크 ingest → S3 → Athena·Spark
아티팩트 CI 빌드 산출물·Terraform state (잠금 별도)
# code/s3-bucket.example.tf
resource "aws_s3_bucket" "app_assets" {
  bucket = "myapp-assets-prod"
}

resource "aws_s3_bucket_versioning" "app_assets" {
  bucket = aws_s3_bucket.app_assets.id
  versioning_configuration { status = "Enabled" }
}

resource "aws_s3_bucket_server_side_encryption_configuration" "app_assets" {
  bucket = aws_s3_bucket.app_assets.id
  rule {
    apply_server_side_encryption_by_default {
      sse_algorithm = "AES256"
    }
  }
}
스토리지 클래스  
Standard 자주 접근
Standard-IA 1회 미만최소 보관·검색 요금
Glacier 아카이브복구 시간 ~시간
Intelligent-Tiering 접근 패턴 자동 이동
보안  
Block Public Access 기본 ON 유지
IAM·bucket policy least privilege
presigned URL 시간 제한 업로드·다운로드
VPC Endpoint NAT 우회16편
  • K8sCSI driverS3 마운트 (특수 케이스)
  • EBS·PV (9편) — 블록 스토리지 vs S3 오브젝트

3. SQS와 SNS

메시징동기 API 결합 완화·피크 흡수·재시도 분리.

서비스  
SQS 1 consumer 그룹·at-least-once
SNS 토픽 pub/subfan-out
조합 SNS → 여러 SQS — 서비스 독립 처리
# code/sqs-sns.example.tf
resource "aws_sns_topic" "orders" {
  name = "orders-events"
}

resource "aws_sqs_queue" "billing" {
  name = "orders-billing"
}

resource "aws_sns_topic_subscription" "billing" {
  topic_arn = aws_sns_topic.orders.arn
  protocol  = "sqs"
  endpoint  = aws_sqs_queue.billing.arn
}
개념  
Visibility timeout 처리 숨김실패 재노출
DLQ N회 실패격리·조사
FIFO 순서·exactly-once (처리량 제한)
idempotency at-least-once중복 처리 대비 필수
Order API → SNS topic "order.placed"
              ├→ SQS billing queue   → worker
              ├→ SQS email queue     → worker
              └→ SQS analytics queue → Lambda
vs K8s  
관리형 운영 부담↓ — 벤더 락인
Kafka·RabbitMQ in cluster 제어↑·운영 직접
EDA Architecture 이벤트 기반 설계

4. Lambda와 Serverless

Lambda이벤트 트리거 코드 실행. 서버 프로비저닝 없음·사용량 과금.

트리거
API Gateway HTTP API·BFF
SQS 폴링 워커
S3 업로드 리사이즈·스캔
EventBridge 스케줄·크로스 서비스 라우팅
# code/lambda.example.tf
resource "aws_lambda_function" "processor" {
  function_name = "order-processor"
  role          = aws_iam_role.lambda_exec.arn
  handler       = "handler.main"
  runtime       = "python3.12"
  timeout       = 30
  memory_size   = 256

  vpc_config {
    subnet_ids         = [aws_subnet.private_a.id]
    security_group_ids = [aws_security_group.lambda.id]
  }
}

resource "aws_lambda_event_source_mapping" "sqs" {
  event_source_arn = aws_sqs_queue.billing.arn
  function_name    = aws_lambda_function.processor.arn
  batch_size       = 10
}
트레이드오프  
Cold start 메모리↑·SnapStart (Java)·프로비저닝
VPC 연결 RDS 접근 가능ENI·지연
Timeout 최대 15분장기 배치 부적합
State 무상태DB·S3·DynamoDB상태
Serverless 적합 부적합
이벤트 처리·웹훅 장시간 CPU 바운드
간헐 트래픽 예측 가능 고정 부하 (EC2·K8s 저렴)
파일 변환·ETL 조각 저지연 항상 API (warm 필요)
  • PaaS (15편) — Lambda는 FaaS
  • 14편 IaCLambda·IAM 함께 코드화

5. VPC와 연동

관리형 서비스마다 VPC 둘지·에서 API붙일지다르다.

서비스 VPC 접근
RDS subnet group 필수 private endpoint
ElastiCache subnet group SG 6379
S3 리전 서비스 endpoint·IAM
SQS/SNS 리전 API IAM·resource policy
Lambda 선택 VPC RDS 필요
EKS (private) ──SG──► RDS / ElastiCache
                    ──IAM──► S3 / SQS / SNS
Lambda (VPC)    ──SG──► RDS
Lambda (no VPC) ──API──► public AWS endpoints only
Endpoint 효과
S3 Gateway NAT 비용
SQS/SNS Interface private subnet에서 API 호출
RDS 퍼블릭 엔드포인트 비활성 권장

6. 직접 운영 vs 관리형

  EC2 + OSS 관리형
운영 패치·백업·HA 직접 AWS 담당
제어 버전·튜닝 자유 파라미터 그룹 범위
비용 인스턴스 고정 인스턴스+I/O·요청
규모 DBA 있으면 혼합 소규모 선호
선택 힌트  
표준 RDB 요구 RDS
초고 QPS 캐시 ElastiCache
대용량 파일·로그 S3
비동기 decouple SQS/SNS
짧은 이벤트 핸들러 Lambda

7. 실무 체크리스트

항목 확인
RDS Multi-AZ? backup retention? public false?
Cache TTL·invalidation? hot key?
S3 encryption·versioning·lifecycle? public block?
Queue DLQ? visibility timeout처리 시간?
Lambda idempotent? VPC 필요 여부? timeout·memory?
IAM resource policy·least privilege?
비용 NAT·GB 이송·Lambda GB-sec 모니터?

8. 정리

  • RDS Multi-AZ + private subnet 데이터 계층 표준
  • ElastiCache cache-aside읽기 부하·지연 완화
  • S3오브젝트·백업·정적 자산·데이터 레이크
  • SQS/SNS비동기·fan-out·DLQ·멱등
  • Lambda이벤트 드리븐·VPC 트레이드오프 이해
  • 다음 — Well-Architected 6 pillars·실무 체크리스트

다음에 다룰 것

  • 운영·보안·안정성·성능·비용·지속가능성
  • Well-Architected 실무 점검

해당 내용은 AWS RDS User Guide, Amazon S3 User Guide, AWS Lambda Developer Guide 의 내용을 기반으로 합니다.

'플랫폼, 데브옵스와 클라우드' 카테고리의 다른 글

서비스 메시  (0) 2026.07.06
Well-Architected  (0) 2026.07.05
VPC와 네트워킹  (0) 2026.07.03
클라우드 모델  (0) 2026.07.02
IaC와 GitOps  (0) 2026.07.01