기준: DOP-C02 시험 가이드오류 제보
이번 주 다섯 글에 걸쳐 본 것들은 따로 보면 제각각의 도구다. SSM Run Command, Session Manager, Patch Manager, State Manager, Inventory, AppConfig, Parameter Store, Secrets Manager. 하지만 이들은 사실 하나의 질문에 대한 서로 다른 각도의 답이다 — "수천 대 규모의 fleet과 그 위에서 도는 애플리케이션을, 사람이 손으로 만지지 않고 안전하게 운영하려면 어떻게 하는가." 오늘은 개별 기능을 다시 나열하는 대신, 이 도구들이 실제 운영 상황에서 어떻게 한 그림으로 맞물리는지를 시나리오로 묶어 본다. DOP 시험은 단일 기능 암기가 아니라 "이 상황에 어떤 조합이 맞는가"를 묻기 때문에, 시나리오로 사고하는 훈련이 곧 시험 대비다.
Week 9의 도구들을 네 개의 축으로 정리하면 전체 그림이 잡힌다.
운영 자동화 4축
==================================================
[명령·접속] Run Command(일회성 명령) / Session Manager(셸·터널)
[상태 강제] State Manager(원하는 상태 정기 적용) / Inventory(수집)
[앱 구성] AppConfig(기능 플래그·동적 구성 + 검증 + 자동 롤백)
[비밀 관리] Parameter Store(설정·무료) / Secrets Manager(회전)
└─ 공통 토대: SSM Agent(pull 모델) · IAM · KMS · CloudTrail(감사)
이 네 축을 관통하는 공통 원리가 둘 있다. 하나는 선언적(declarative) 운영 — "이렇게 하라(명령)"가 아니라 "이런 상태여야 한다(목표)"를 선언하면 시스템이 알아서 수렴시킨다(State Manager, AppConfig, Patch Baseline). 다른 하나는 폭발 반경 통제(blast radius control) — 모든 변경을 한 번에 전체에 적용하지 않고 점진적으로 퍼뜨리며 실패하면 멈춘다(max-concurrency/max-errors, AppConfig 배포 전략, Patch Maintenance Window).
💡 관련 이론: 이 두 원리는 신뢰성 공학의 핵심 교의다. 선언적 운영은 제어 이론의 폐루프 제어(closed-loop control) — 목표 상태와 현재 상태의 차이를 계속 측정해 그 오차를 줄이는 피드백 루프다. Kubernetes의 reconciliation loop, Terraform의 desired state, Git의 declarative config가 모두 같은 뿌리다. 폭발 반경 통제는 점진적 출시(progressive delivery)와 회로 차단기(circuit breaker) 패턴이다. "변경은 위험하고, 위험은 작게 나눠 빨리 감지해야 한다"는 경험칙. Week 9 전체가 이 두 원리의 AWS 구현체다.
📚 사례: 2017년 AWS S3의 us-east-1 대규모 장애는 운영 명령을 폭발 반경 통제 없이 전체에 던졌을 때 무슨 일이 벌어지는지를 보여준 교과서적 사례다. 한 엔지니어가 청구 시스템의 일부 서버를 제거하는 디버깅 명령을 실행했는데, 입력 오타로 의도보다 훨씬 많은 서버가 한 번에 제거되어 S3의 핵심 서브시스템이 연쇄적으로 재시작에 들어갔고, 그 재시작이 수 시간 걸리며 us-east-1 전역의 수많은 서비스가 멈췄다. 교훈은 명확하다 — fleet 규모 명령에는 반드시 한 번에 일부만 적용하고(max-concurrency) 실패하면 멈추는(max-errors) 통제가 있어야 한다. AWS는 사후 이 도구의 제거 속도에 안전 한계를 추가했다. Week 9에서 본 Run Command의 점진 배포·Patch Manager의 Maintenance Window가 바로 이런 사고를 막기 위한 장치다.
시험에서 헷갈리기 쉬운 것은 "비슷해 보이는 두 도구 중 무엇인가"다. 핵심 갈림길 몇 개를 미리 정리해두면 시나리오가 쉬워진다.
Run Command vs State Manager. 둘 다 인스턴스에 명령을 실행한다. 차이는 시간성이다. Run Command는 일회성 — 지금 한 번 친다. State Manager는 정기·지속 — "항상 이 상태여야 한다"를 주기적으로 강제하고 컴플라이언스를 리포팅한다. "지금 긴급 패치 한 번"이면 Run Command, "모든 인스턴스에 CloudWatch Agent가 항상 깔려 있어야 함"이면 State Manager.
AppConfig vs Parameter Store. 둘 다 설정을 담는다. 차이는 안전 장치다. Parameter Store는 값을 저장만 한다. AppConfig는 배포 전략(점진 롤아웃) + Validator(배포 전 검증) + Monitor(알람 감지 시 자동 롤백)를 갖춘 "구성 배포 파이프라인"이다. "잘못된 구성이 배포되면 자동으로 되돌려야 한다"면 AppConfig, "그냥 값을 읽기만"이면 Parameter Store.
Secrets Manager vs Parameter Store(SecureString). 둘 다 비밀을 암호화 저장한다. 차이는 회전이다. 회전이 필요하면 Secrets Manager, 정적이면 Parameter Store. 그리고 비용이 10배 차이다.
Session Manager vs Bastion. 둘 다 프라이빗 인스턴스 접속 수단이다. Bastion은 22번 포트를 인터넷에 노출하고 항상 켜둬야 하는 공격 표적이다. Session Manager는 포트 없이 IAM 신원으로 접속하고 세션 전체를 감사한다. 새 설계에서 Bastion을 고르는 것은 오답이다.
StackSets vs 개별 스택. 멀티 계정·멀티 리전에 같은 인프라를 배포할 때, 계정마다 스택을 따로 만드는 건 운영 부담이 폭증한다. StackSets는 하나의 템플릿을 여러 계정·리전에 한 번에 배포하고, Organizations와 통합(Service-managed)하면 OU 단위로 다루며 새 계정 자동 배포(Auto-deployment)까지 된다. "조직 차원", "모든 멤버 계정", "새 계정 추가 시 자동"이 단서면 StackSets다.
이 갈림길들을 한 표로 압축하면 시험장에서 즉시 꺼내 쓸 수 있다.
| 헷갈리는 쌍 | 가르는 기준 | 단서 키워드 |
|---|---|---|
| Run Command vs State Manager | 일회성 vs 정기 강제 | "항상", "정기적으로", "새 인스턴스에도" → State Manager |
| AppConfig vs Parameter Store | 점진 배포·자동 롤백 유무 | "코드 재배포 없이", "자동 롤백", "기능 플래그" → AppConfig |
| Secrets Manager vs Parameter Store | 회전 필요 여부 | "30일마다 회전", "zero-downtime" → Secrets Manager |
| Session Manager vs Bastion | 포트 노출·감사 | "SSH 키 제거", "세션 감사", "Bastion 없이" → Session Manager |
| StackSets vs 개별 스택 | 멀티 계정·자동 배포 | "조직 전체", "새 계정 자동" → StackSets |
이 갈림길들의 바닥에는 "운영 부담(operational overhead)"이라는 시험의 숨은 평가 기준이 깔려 있다. DOP 시험은 "동작하는 답"이 아니라 "운영 부담이 가장 적으면서 안전한 답"을 묻는다. 그래서 같은 결과를 내더라도 Lambda를 직접 짜는 답(높은 부담)보다 매니지드 기능(State Manager, --manage-master-user-password, AppConfig 자동 롤백)을 쓰는 답이 정답일 가능성이 높다. 보기에서 "Lambda를 작성하여", "스크립트를 cron으로", "EC2를 두어"가 나오면 더 매니지드한 대안이 있는지 먼저 의심한다. 이게 DOP 시나리오를 푸는 메타 전략이다.
🎯 시나리오: "조직 전체 멤버 계정 50개에 동일한 SSM Patch Baseline과 IAM 역할을 자동 배포하고, 새 계정이 OU에 추가되면 자동으로 적용되어야 한다." — 답은 CloudFormation StackSets의 Service-managed 권한 + Auto-deployment다. StackSets가 OU 단위로 스택을 배포하고, AutoDeployment를 켜면 OU에 새 계정이 들어올 때 자동으로 스택이 배포된다. Lambda로 계정 추가를 감지해 배포하는 답(높은 운영 부담)이나 수동 배포는 오답이다. "조직 차원·계정 추가 시 자동"이라는 단서가 나오면 StackSets Auto-deployment를 떠올린다.
🎯 시나리오: "온프레미스 데이터센터와 AWS를 하이브리드로 운영한다. 두 환경의 비밀번호·접속·패치를 가능한 한 동일한 도구 체계로 관리하고 싶다." — 답은 SSM의 하이브리드 확장을 전면 활용하는 것이다. Hybrid Activation으로 온프레미스 서버를 mi- 관리 인스턴스로 등록하면 Run Command·Session Manager·Patch Manager·Inventory가 EC2와 똑같이 동작하고, 시크릿은 Secrets Manager를 단일 진실 공급원으로 두되 온프레미스 앱은 VPN/Direct Connect 경유로 같은 시크릿을 읽는다. 핵심은 "도구를 두 벌 운영하지 않는다"는 것 — 하이브리드 시나리오에서 별도 온프레미스 전용 도구를 답으로 고르면 거의 오답이다.
Week 9를 관통하는 사고법은 이렇다. 문제를 읽으면 먼저 4축 중 어디인가(명령·접속 / 상태 강제 / 앱 구성 / 비밀)를 잡고, 그다음 시간성(일회성 vs 지속), 안전 장치(롤백·검증 필요 여부), 운영 부담(매니지드 우선), 감사 요구(CloudTrail·세션 로그)를 순서대로 따진다. 이 네 질문이면 Week 9의 거의 모든 시나리오가 풀린다. 아래 12개 문제로 그 사고를 굳힌다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
수백 대 EC2에 OS 보안 패치를 토요일 새벽 시간대에만 자동 적용하고, prod는 패치 출시 후 일정 기간 검증을 거친 뒤 적용하려 한다. 가장 적절한 구성은?
문제 2
기능 플래그를 코드 재배포 없이 10% → 50% → 100%로 점진 노출하고, 5xx 오류율이 임계치를 넘으면 자동으로 이전 구성으로 롤백되어야 한다. 무엇을 쓰는가?
문제 3
RDS 마스터 비밀번호를 30일마다 회전하되, 회전 순간에도 신규·진행 연결이 실패하면 안 된다. 초당 신규 연결이 많다. 가장 적절한 것은?
문제 4
단순 설정값 100개와 회전이 필요한 비밀번호 5개의 비용을 최소화하려 한다.
문제 5
A 계정의 시크릿을 B 계정 앱이 가져오려 한다. Resource Policy와 B의 IAM 권한을 모두 설정했는데 KMS 단계에서 AccessDenied가 난다. 원인은?
문제 6
운영자의 SSH 키 관리 부담을 없애고, 프라이빗 인스턴스 접속을 IAM으로 통제하며, 모든 세션 입출력을 변조 불가능하게 감사하려 한다.
문제 7
새 EC2가 ASG로 수시로 생성·종료되는 환경에서, 모든 인스턴스에 CloudWatch Agent가 항상 설치되어 있어야 하고 표준 상태가 강제되어야 한다.
문제 8
수십만 대 인스턴스의 소프트웨어 인벤토리를 수집해 "특정 취약 버전 패키지가 깔린 인스턴스"를 SQL로 질의하고 싶다.
문제 9
초당 수천 번 호출되는 Lambda가 매번 Secrets Manager GetSecretValue를 직접 호출해 ThrottlingException이 간헐 발생한다. 시크릿은 30일에 한 번만 바뀐다.
문제 10
데이터센터의 물리 서버 200대와 AWS EC2 fleet을 단일 패치 정책으로 통합 관리하고, 두 환경을 같은 콘솔에서 컴플라이언스 리포팅하려 한다.
문제 11
조직의 모든 멤버 계정에 동일한 SSM Patch Baseline과 IAM 역할을 배포하고, OU에 새 계정이 추가되면 자동으로 적용되어야 한다. 운영 부담을 최소화하려면?
문제 12
긴급 제로데이 취약점이 발표되어, 평소 approve-after-days(7일) 정책을 기다리지 않고 특정 패치를 prod에 즉시 적용해야 한다. Patch Baseline에서 무엇을 쓰는가?
이번 주의 핵심은 운영 자동화의 4축 — 명령·접속(Run Command/Session Manager), 상태 강제(State Manager/Inventory), 앱 구성(AppConfig), 비밀 관리(Parameter Store/Secrets Manager) — 가 SSM Agent의 pull 모델과 IAM·KMS·CloudTrail이라는 공통 토대 위에서 맞물린다는 것이다. 이들을 관통하는 두 원리는 선언적 운영(목표 상태로의 수렴)과 폭발 반경 통제(점진 롤아웃 + 실패 시 중단)다. 시나리오를 풀 땐 4축 식별 → 시간성 → 안전 장치 → 운영 부담 → 감사 요구 순으로 따지면 거의 모든 문제가 풀린다. 그리고 DOP의 숨은 기준은 항상 "운영 부담이 가장 적은 매니지드 답"임을 기억하라.
다음 주(Week 10)부터는 모니터링 심화로 들어가 CloudWatch를 깊이 파고든다.