CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
  • Week 1
    • 1.DevOps라는 운영 모델: CALMS의 다섯 축과 DORA가 측정해 보여준 진실
    • 2.Well-Architected Framework: DevOps의 6개 렌즈로 다시 읽기
    • 3.AWS DevOps 도구 지도: Code* 시리즈와 그 너머의 진짜 그림
    • 4.멀티 계정 전략: Organizations, Control Tower, IAM Identity Center의 진짜 그림
    • 5.Week 1 종합: DevOps 사고 프레임을 시나리오로 굳히기
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
    • 1.AWS SAM: CloudFormation이 서버리스에게 던진 사과
    • 2.Serverless Framework와 CDK: SAM이 아닌 길을 고른 사람들
    • 3.Lambda Version과 Alias: 불변 스냅샷 위에 얹은 가변 포인터
    • 4.Step Functions: 워크플로를 코드가 아닌 상태 머신으로
    • 5.Week 7 복습: 서버리스 CI/CD의 모든 조각을 한 그림에
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
  • Week 15
  • Week 16
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← DOP-C02/Week 7/Day 5

기준: DOP-C02 시험 가이드·오류 제보

DOP-C02· ProWeek 7 · Day 5읽기 약 24분

Day 5 - Week 7 복습: 서버리스 CI/CD의 모든 조각을 한 그림에

이번 주를 한 문장으로 정리하면 "서버리스 워크로드의 CI/CD는 IaC 도구 선택부터 배포 전략, 워크플로 오케스트레이션까지 한 묶음으로 봐야 한다"이다. 어제까지 본 SAM(Day 1), Serverless Framework·CDK(Day 2), Lambda Version·Alias·CodeDeploy Canary(Day 3), Step Functions(Day 4)는 모두 같은 그림의 다른 면이다. 시험에 나오는 시나리오 문제는 거의 항상 두세 개 도구를 결합한 형태로 출제되므로, 각 도구가 어디서 빛나고 어디서 약한지를 정확히 매칭하는 능력이 합격을 가른다.

오늘은 이번 주 다섯 가지 핵심 축을 다시 정리하고, 실제 시험 패턴과 유사한 시나리오 12문항으로 종합 점검한다. 단순 사실 암기를 넘어 "이 시나리오의 어느 키워드가 어느 답을 호출하는지"의 매핑을 외워두는 게 목표다.

다섯 가지 축 정리

축 1: IaC 도구 선택 — 워크로드 성격과 팀 언어가 결정

시나리오 키워드적합한 도구이유
"Lambda + API Gateway + Dynamo만, YAML"SAMCFN Macro로 서버리스 6종 최적화, 학습 곡선 낮음
"Lambda 200개, 멀티 stage, 풍부한 플러그인"Serverless FrameworkNode 플러그인 생태계 (단 v4 라이선스 검토)
"Lambda + EKS + RDS + OpenSearch + TS 팀"CDK모든 AWS 리소스 L2 추상화 + grant 메서드 + L3 사내 라이브러리
"멀티 클라우드 (AWS+GCP+Azure)"TerraformProvider 모델로 클라우드 무관
"CFN 거버넌스(StackSets, Drift) 그대로 + 서버리스 단순화"SAMCFN의 모든 기능 호환
"사내 9000 스택 + 표준 패턴 라이브러리 필요"CDKL3 Construct로 재사용 가능 추상화

축 2: Lambda 배포 — Version/Alias 모델

핵심 명제: Version은 불변 스냅샷, Alias는 가변 포인터. Git commit/branch, Docker image digest/tag와 같은 발상.

publish-version  →  V7 (불변, 영구히 변하지 않음)
update-alias --function-version 7  →  live가 V7 가리킴
기능동작
$LATEST가변 working copy, weighted routing 불가, PC 불가
Version 숫자불변, 자원 정책과 PC만 변경 가능
Alias weightedprimary + 1 additional만 (최대 2-way)
API Gateway 통합${stageVariables.alias} + add-permission --qualifier <alias>
CodeDeploy CanaryAutoPublishAlias + DeploymentPreference 한 줄

축 3: Cold Start 완화 — PC와 SnapStart의 정확한 구분

기법적용 런타임비용효과
Provisioned Concurrency모든 런타임활성 시간 과금Cold start 0 (PC 용량 내)
SnapStartJava 11/17/21, Python 3.12+, .NET 8+ (zip만)Java 무료, Py/.NET 유료Init 시간 90% 단축
Reserved Concurrency모든무료동시 한도 (cold start와 무관)
ARM 아키텍처호환 런타임20% 저렴Init 10~20% 빠름

축 4: Step Functions — Standard vs Express

항목StandardExpress
시간1년5분
보장Exactly-onceAt-least-once
동기 호출불가가능 (StartSyncExecution)
TaskToken✅❌
가격상태 전이당호출 + 실행 시간
사용배포 워크플로, 사람 승인API 백엔드, IoT, ETL

축 5: 통합 흐름 — 한 그림으로

   ┌─ Source (Git) ──→ CodePipeline ──→ CodeBuild (sam build) ──→ CFN Deploy ──┐
   │                                                                                                         ↓
   │                                                                                Lambda 새 Version V7 게시
   │                                                                                                         ↓
   │                                                              CodeDeploy: Alias 'live' weighted (V6:90, V7:10)
   │                                                                                                         ↓
   │                                                              5분 대기 + CloudWatch Alarm 모니터
   │                                                                                                         ↓
   │                                                                            ┌─ Alarm OK → V7:100
   │                                                                            └─ Alarm → V6:100 (롤백)
   │
   └─ 복잡한 흐름 → Step Functions로 위임
      ├─ AWS SDK Service Integration (Lambda 없이 직접 호출)
      ├─ TaskToken (사람 승인, 외부 시스템)
      └─ Distributed Map (대용량 병렬)

헷갈리기 쉬운 비교표

AB가르는 키워드
SAMCDKYAML 서버리스 특화 vs 코드 범용·모든 AWS
SAMServerless FrameworkAWS 네이티브·OSS vs 멀티 클라우드·v4 상업
Standard SFnExpress SFn1년·exactly-once vs 5분·at-least-once
Provisioned ConcurrencyReserved Concurrency워밍업·유료 vs 한도·무료
Lambda zipContainer Image250MB·Layer 가능 vs 10GB·Layer 불가·SnapStart 불가
$LATESTVersion 숫자가변·PC 불가 vs 불변·PC 가능
Alias weightedVersion 100%Canary 두 단계 vs All-at-once
Inline MapDistributed Map40 동시·부모 history 영향 vs 1만 동시·child execution
.sync integration.waitForTaskToken자동 완료 대기 vs 외부 콜백 대기
sam deploysam syncCFN 표준 경로 vs 개발 가속·drift 위험

이 표의 모든 비교는 트레이드오프 모델의 전형이다. CAP 정리(2000년 Eric Brewer), PACELC(2010년 Daniel Abadi), Conway의 법칙(1968) 같은 시스템 디자인 원칙이 IaC와 워크플로 도구에도 동일하게 적용된다. 예를 들어 Standard SFn의 exactly-once는 가용성/성능을 일부 희생한 일관성 보장이고, Express의 at-least-once는 반대의 트레이드. 시험 시나리오는 거의 항상 "어느 trade가 더 중요한가"를 묻는다.

🎯 시나리오: 이번 주 도구 5개의 결합으로 다음 그림을 그리는 문제가 시험에 나올 수 있다 — "CDK로 Lambda+DynamoDB+API Gateway 합성 → CodePipeline Source/Build → SAM Canary로 배포 → 30분 모니터링 → Step Functions로 멀티 리전 순차 배포 + 사람 승인". 이 흐름의 각 단계에서 어느 서비스가 책임지는지 묻는 문제가 출제될 수 있다.

2023년 AWS Summit Seoul에서 한 핀테크 회사가 발표한 사례 — Lambda 1500개를 CDK + SAM 혼합으로 운영. 단순 서버리스(API+Lambda+Dynamo)는 SAM, 복잡 인프라(Lambda+EKS+OpenSearch+Step Functions)는 CDK, 배포 워크플로는 CodePipeline + Step Functions로 분리. 각 도구의 강점을 정확히 매칭한 결과 배포 시간 70% 단축. 시험에서 "여러 도구를 어떻게 조합?"의 답은 "각 도구의 강점에 맞춰 분리" — 한 도구로 모든 걸 하려는 건 안티패턴.

핵심 함정 정리

⚠️ 함정 1: add-permission --qualifier를 빠뜨려 API Gateway가 Alias 호출 시 403. Function ARN 권한은 $LATEST만 허용.

⚠️ 함정 2: SnapStart로 모든 호출에서 같은 UUID/random 생성. org.crac.Resource의 afterRestore Hook에서 재초기화 필수.

함정 3: SAM Policy Template은 광범위(GSI/LSI 포함). PCI/HIPAA에선 Statement 직접 작성으로 정확한 ARN 제한.

함정 4: sam sync --watch는 CFN 우회 → drift 발생. 프로덕션에서 다음 정규 deploy가 변경 덮어씀.

함정 5: PC는 $LATEST에 설정 불가, Alias/Version에만. Canary 중 두 Version 모두 PC라 비용 2배 일시 상승.

함정 6: Container Image Lambda는 Layer 불가, SnapStart 불가. 모든 의존성을 Dockerfile에 포함.

함정 7: Alias weighted routing은 primary + 1 additional만. 3-way는 ALB target group이나 Route 53 weighted 필요.

함정 8: Step Functions Express는 TaskToken 미지원. 사람 승인 워크플로는 반드시 Standard.


🧠 종합 시나리오 문제 12개

시나리오 1

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

한 SaaS 팀이 Lambda 200개를 Serverless Framework v3로 운영 중인데, v4 상업 라이선스 적용으로 연간 비용이 부담된다. 가장 합리적인 마이그레이션 경로는?

문제 2

Java Spring Boot Lambda(메모리 1GB, 패키지 80MB, init 8초)의 P99 latency를 1초 미만으로 만들고 싶다. 비용도 최소화. 가장 효과적인 조합은?

문제 3

S3 데이터 레이크에서 매일 5000만 JSON 객체(평균 50KB)를 변환·집계해야 한다. 1% 실패 허용, 운영 부담 최소화. 가장 적합한 패턴은?

문제 4

API Gateway REST API가 Lambda Alias live를 가리키는데, 코드 변경마다 API 재배포가 발생해 운영이 번거롭다. 가장 깔끔한 구성은?

문제 5

한 팀이 sam local invoke로 모든 통합 테스트를 통과한 후 production에 배포했다. Lambda가 즉시 throttle되고 API Gateway가 30초 timeout으로 5xx를 반환. 가장 가능성 높은 원인은?

문제 6

Lambda zip 패키지에 ML 모델(2.5GB)을 포함해야 한다. zip 한도 초과. 가장 적합한 패키징 방식은?

문제 7

CodePipeline에서 us-east-1 → eu-west-1 → ap-northeast-2 순차 배포 중 EUW1 단계에서 알람 발동 시 USE1과 EUW1을 역순 롤백해야 한다. 가장 적합한 구성은?

문제 8

프로덕션 배포 시 보안팀 → DevOps 팀 → 자동 배포 3단계 승인, 각 단계 7일 안에 응답 없으면 자동 취소, 통보는 Slack interactive message. 가장 적합한 워크플로 엔진과 패턴은?

문제 9

한 팀이 sam sync --watch를 production 환경에 사용 중. 며칠 후 다음 정규 sam deploy가 hotswap 변경을 모두 덮어썼다. 가장 정확한 원인 설명은?

문제 10

한 회사가 1500개 Lambda 함수를 CDK로 관리 중. 각 팀이 비슷한 함수 패턴(Lambda + DynamoDB + API Gateway + IAM grant + X-Ray + Powertools)을 반복 작성하고 있다. 운영 표준화와 재사용성을 어떻게 확보?

문제 11

CDK Pipelines에 selfMutation: true를 켜고 production 운영 중. 어느 날 잘못된 파이프라인 정의를 push해 self-mutation이 깨진 파이프라인을 deploy. 다음 실행이 깨진 파이프라인으로 시작되어 정상 복구 불가. 가장 적절한 예방·복구 전략은?

문제 12

한 결제 회사가 결제 처리 워크플로를 다음과 같이 설계한다 — 검증(50ms) → 인증(100ms) → 차지(150ms) → 기록(50ms). API Gateway 동기 응답 필요, 초당 500회 호출. 가장 적합한 워크플로 엔진과 호출 패턴은?

📌 Week 7 종합 요약

이번 주에 익힌 다섯 가지 축의 핵심을 마지막으로 다시 정리한다.

  1. IaC 도구 선택은 워크로드 성격과 팀 언어가 결정한다. AWS-only 서버리스는 SAM, 다양한 AWS 자원은 CDK, 멀티 클라우드는 Terraform. Serverless Framework는 v4 라이선스 검토 필수.

  2. Lambda Version은 불변 스냅샷, Alias는 가변 포인터. Git commit/branch와 같은 발상. Weighted routing은 primary + 1 additional만 가능 — CodeDeploy Canary가 "한 번에 한 단계"인 구조적 이유.

  3. Cold Start 완화의 두 표준 — Provisioned Concurrency(워밍업·유료) vs SnapStart(Java/Python/.NET zip만·init 시간 90% 단축). Reserved Concurrency는 한도 설정이지 cold start와 무관.

  4. Step Functions는 호출 빈도×실행 시간으로 Standard/Express 선택. AWS SDK Service Integration으로 200+ 서비스 Lambda 없이 호출. TaskToken으로 사람·외부 시스템 통합. Distributed Map으로 1만 동시 자식 워크플로.

  5. 통합 흐름은 CodePipeline + CodeBuild + CFN/SAM Deploy + CodeDeploy Canary + Step Functions의 결합. 각 서비스의 강점에 맞춰 분리하는 게 표준 패턴. 한 도구로 모든 걸 하려는 건 안티패턴.


🔜 다음 주 예고 (Week 8)

IaC 심화 - CloudFormation/CDK/Terraform 깊이

  • Day 1: CloudFormation 고급 — Nested Stack, Cross-Stack, Macro 직접 작성
  • Day 2: StackSets — 멀티 계정/리전 거버넌스
  • Day 3: Drift Detection, Change Set, Custom Resource의 내부 동작
  • Day 4: CDK Pipelines 심화 + CDK ↔ Terraform 통합 + cdktf
  • Day 5: 종합 시나리오 12문항

이번 주가 "어떤 도구를 쓸 것인가"였다면, 다음 주는 "그 도구를 어떻게 깊이 운영할 것인가"가 주제다. StackSets로 100개 계정에 정책을 일괄 적용하고, Drift Detection으로 수동 변경을 잡고, Custom Resource로 CFN이 모르는 자원을 통합하는 — 엔터프라이즈 IaC의 본격적 영역이 펼쳐진다.


이전Step Functions: 워크플로를 코드가 아닌 상태 머신으로Week 7 · Day 4다음 CloudFormation 고급: Nested·Cross-Stack과 모듈화의 깊은 이야기Week 8 · Day 1

참고 공식 자료

  • DOP-C02 공식 시험 안내(새 탭에서 열림)
  • AWS Lambda 공식 문서(새 탭에서 열림)
  • AWS Step Functions 공식 문서(새 탭에서 열림)
  • Amazon API Gateway 공식 문서(새 탭에서 열림)
  • AWS IAM 공식 문서(새 탭에서 열림)
  • AWS CodePipeline 공식 문서(새 탭에서 열림)

이 페이지

  • 다섯 가지 축 정리
  • 축 1: IaC 도구 선택 — 워크로드 성격과 팀 언어가 결정
  • 축 2: Lambda 배포 — Version/Alias 모델
  • 축 3: Cold Start 완화 — PC와 SnapStart의 정확한 구분
  • 축 4: Step Functions — Standard vs Express
  • 축 5: 통합 흐름 — 한 그림으로
  • 헷갈리기 쉬운 비교표
  • 핵심 함정 정리
  • 종합 시나리오 문제 12개
  • 시나리오 1
  • 시나리오 2
  • 시나리오 3
  • 시나리오 4
  • 시나리오 5
  • 시나리오 6
  • 시나리오 7
  • 시나리오 8
  • 시나리오 9
  • 시나리오 10
  • 시나리오 11
  • 시나리오 12
  • Week 7 종합 요약
  • 다음 주 예고 (Week 8)