새발블로그

[AWS SAA] 배포 / 인프라 자동화 본문

자격증/SAA

[AWS SAA] 배포 / 인프라 자동화

EUG 2026. 6. 23. 00:02

CloudFormation

핵심 개념

  • CloudFormation은 AWS 인프라를 코드로 정의하고 프로비저닝하는 IaC 서비스
  • IaC는 Infrastructure as Code의 약자
  • AWS 리소스를 YAML 또는 JSON 템플릿으로 정의
  • 템플릿을 기반으로 스택을 생성, 업데이트, 삭제할 수 있음
  • 동일한 인프라를 반복적으로 생성하거나 여러 환경에 일관되게 배포할 때 유용
  • 수동 콘솔 작업을 줄이고 인프라 변경 이력을 코드로 관리할 수 있음

CloudFormation 주요 개념

항목 내용
템플릿 AWS 리소스를 정의하는 YAML 또는 JSON 파일
스택 템플릿으로 생성된 리소스 묶음. 생성/업데이트/삭제 단위
변경 세트 스택 업데이트 전 변경될 내용을 미리 확인하는 기능
중첩 스택 부모 스택 안에서 AWS::CloudFormation::Stack 리소스로 다른 스택을 호출하는 구조
파라미터 템플릿 실행 시 입력받는 값. AMI ID, 인스턴스 타입, 키 페어 이름 등에 사용
출력값 스택 생성 후 반환되는 값. VPC ID, ALB DNS 이름 등을 다른 스택에서 참조 가능
매핑 리전별 AMI ID처럼 조건에 따라 다른 값을 선택할 때 사용
조건 환경별로 특정 리소스를 생성하거나 생략할 때 사용

CloudFormation 변경 세트

  • 변경 세트는 스택을 업데이트하기 전에 어떤 리소스가 생성, 수정, 삭제될지 미리 보여주는 기능
  • 변경 내용을 검토한 뒤 실제 업데이트를 실행할 수 있음
  • 운영 환경에서 실수로 리소스를 삭제하거나 교체하는 위험을 줄이는 데 유용
  • 템플릿 변경 시 CloudFormation이 항상 전체 리소스를 재배포하는 것은 아님
  • 필요한 리소스만 생성, 수정, 삭제함
  • 단, 일부 속성 변경은 리소스 교체가 필요할 수 있으므로 변경 세트를 확인해야 함
  • 리소스 교체가 발생하면 기존 리소스가 삭제되고 새 리소스가 생성될 수 있어 주의 필요

CloudFormation 드리프트 감지

  • 드리프트는 CloudFormation 템플릿의 예상 상태와 실제 리소스 상태가 달라진 상태를 의미
  • 예를 들어 콘솔에서 직접 보안 그룹 규칙을 수정하면 CloudFormation 템플릿과 실제 리소스 상태가 달라질 수 있음
  • 드리프트 감지를 사용하면 스택 리소스가 템플릿과 다르게 변경되었는지 확인 가능
  • 운영 환경에서 수동 변경을 추적하고 IaC 기준 상태를 유지하는 데 유용
  • 드리프트 감지는 모든 리소스 속성을 완벽하게 감지하는 것은 아니므로 지원 범위를 확인해야 함

CloudFormation 중첩 스택

  • 중첩 스택은 큰 템플릿을 여러 작은 템플릿으로 나누어 관리하는 방식
  • 공통 네트워크, 보안, 애플리케이션 리소스 등을 재사용 가능한 스택 단위로 나눌 수 있음
  • 부모 스택에서 AWS::CloudFormation::Stack 리소스를 사용해 자식 스택을 호출
  • 여러 환경에서 반복 사용하는 리소스 구조를 모듈화할 때 유용

CloudFormation과 AWS Config

  • CloudFormation은 인프라를 정의하고 배포하는 서비스
  • AWS Config는 리소스 구성 변경을 추적하고 규정 준수 여부를 평가하는 서비스
  • 예를 들어 보안 그룹이 SSH를 전체 공개하고 있는지 Config 규칙으로 평가할 수 있음
  • 비준수 리소스가 발견되면 SNS, EventBridge, Systems Manager Automation 등과 연동하여 알림이나 자동 조치를 구성할 수 있음
  • CloudFormation은 배포 자동화, Config는 구성 감사와 규정 준수 평가에 가깝다

Elastic Beanstalk

핵심 개념

  • Elastic Beanstalk는 애플리케이션 코드만 업로드하면 배포와 운영 환경 구성을 자동으로 처리해주는 PaaS 서비스
  • PaaS는 Platform as a Service의 약자
  • EC2, ELB, Auto Scaling, 보안 그룹 등 필요한 인프라를 자동으로 구성
  • Node.js, Java, Python, PHP, .NET, Go, Ruby 등 다양한 플랫폼 지원
  • 개발자는 인프라 세부 구성보다 애플리케이션 배포에 집중할 수 있음
  • 내부적으로 CloudFormation을 사용하여 환경 리소스를 생성하고 관리
  • 인프라를 직접 세밀하게 제어해야 하는 경우에는 EC2, ECS, EKS, CloudFormation, CDK 등을 고려
  • 빠르게 웹 애플리케이션을 배포하고 운영 부담을 줄이고 싶을 때 적합

Elastic Beanstalk 배포 정책

배포 정책 설명 특징
All at Once 모든 인스턴스를 한 번에 새 버전으로 배포 가장 빠르지만 배포 중 가동 중지 가능
Rolling 인스턴스를 배치 단위로 나누어 순차 배포 일부 용량 감소, 구버전/신버전이 함께 동작할 수 있음
Rolling with Additional Batch 추가 인스턴스 배치를 만든 뒤 Rolling 배포 용량 감소 없이 배포 가능하지만 추가 비용 발생
Immutable 새 Auto Scaling 그룹에 새 버전을 배포한 뒤 전환 안전하지만 배포 시간이 길고 비용 증가
Traffic Splitting 새 버전에 일부 트래픽만 보내 검증 후 전체 전환 Canary 테스트에 적합
Blue/Green 별도 환경을 만들고 CNAME 또는 DNS 전환 빠른 롤백 가능, 비용 증가
  • All at Once는 가장 단순하고 빠르지만 배포 중 서비스 중단 가능성이 있음
  • Rolling은 배치 단위로 업데이트하므로 All at Once보다 안정적이지만 배포 중 일부 용량이 줄어들 수 있음
  • Rolling with Additional Batch는 추가 인스턴스를 사용하여 배포 중 용량 감소를 줄임
  • Immutable은 새 인스턴스 그룹을 만들어 새 버전을 검증한 뒤 전환하므로 안정성이 높음
  • Traffic Splitting은 일부 트래픽만 새 버전으로 보내는 Canary 배포에 적합
  • Blue/Green은 새 환경을 별도로 만들고 DNS 또는 CNAME을 전환하므로 롤백이 빠름

CI/CD 파이프라인

핵심 서비스

서비스 설명
CodeBuild 소스 코드를 빌드하고 테스트하는 완전 관리형 빌드 서비스
CodeDeploy EC2, 온프레미스 서버, ECS, Lambda 등에 애플리케이션을 자동 배포하는 서비스
CodePipeline 소스, 빌드, 테스트, 배포 단계를 연결하여 CI/CD 파이프라인을 구성하는 서비스
  • CI는 Continuous Integration의 약자
  • CD는 Continuous Delivery 또는 Continuous Deployment의 약자
  • CodeBuild는 컴파일, 테스트, 패키징 작업에 사용
  • CodeDeploy는 배포 대상에 애플리케이션을 배포하는 데 사용
  • CodePipeline은 소스 변경부터 빌드, 테스트, 배포까지 전체 흐름을 자동화
  • 자동화 파이프라인 예시는 CodeCommit 또는 GitHub → CodeBuild → CodeDeploy → 프로덕션 구조로 구성 가능
  • 소스 저장소는 CodeCommit뿐 아니라 GitHub, Bitbucket, S3 등도 사용할 수 있음

CodeDeploy

핵심 개념

  • CodeDeploy는 애플리케이션 배포를 자동화하는 서비스
  • EC2/온프레미스, ECS, Lambda 배포를 지원
  • 배포 중 상태를 추적하고 실패 시 롤백을 구성할 수 있음
  • EC2/온프레미스 배포에서는 CodeDeploy Agent가 필요
  • Lambda와 ECS 배포에서는 트래픽 전환 방식으로 새 버전을 점진 배포할 수 있음

Lambda + CodeDeploy 배포

배포 방식 설명
Canary 일부 비율의 트래픽을 새 Lambda 버전으로 먼저 전환 후 나머지 전환
Linear 일정 비율씩 일정 간격으로 새 Lambda 버전으로 전환
All-at-once 모든 트래픽을 새 Lambda 버전으로 한 번에 전환
  • Lambda 배포에서는 Alias를 통해 새 버전으로 트래픽을 전환
  • Canary는 위험을 줄이고 새 버전을 검증하면서 배포할 때 적합
  • Linear는 점진적으로 트래픽을 늘리며 배포할 때 적합
  • All-at-once는 빠르지만 문제가 발생하면 영향 범위가 큼
  • CloudWatch Alarm과 연동하여 배포 실패 시 자동 롤백 구성 가능

배포 전략 비교

전략 설명 다운타임 롤백 비용
All at Once 모든 인스턴스 동시 업데이트 발생 가능 느릴 수 있음 낮음
Rolling 순차적으로 인스턴스를 배치로 나눠 업데이트 보통 없음, 단 용량 감소 가능 느릴 수 있음 낮음
Rolling with Additional Batch Rolling + 추가 인스턴스 배치 사용 보통 없음 느릴 수 있음 약간 높음
Immutable 새 인스턴스를 별도 그룹에 배포 후 전환 거의 없음 빠름 높음
Blue/Green 기존 환경과 동일한 새 환경 생성 후 트래픽 전환 거의 없음 매우 빠름 높음
Canary / Traffic Splitting 일부 트래픽만 새 버전으로 전환 후 점진 확대 거의 없음 빠름 높음
  • Blue/Green은 새 환경을 별도로 만들기 때문에 롤백이 빠르고 안전함
  • Canary는 새 버전의 위험을 최소화하며 점진적으로 적용할 때 적합
  • Immutable은 기존 인스턴스를 직접 수정하지 않고 새 인스턴스로 교체하는 방식
  • Rolling은 비용이 낮지만 배포 중 구버전과 신버전이 함께 동작할 수 있음
  • All at Once는 단순하고 빠르지만 가동 중지 시간이 발생할 수 있음

CDK

  • CDK는 Cloud Development Kit의 약자
  • TypeScript, Python, Java, C#, Go 등 프로그래밍 언어로 AWS 인프라를 정의하는 도구
  • 코드 기반으로 인프라를 정의하고 재사용 가능한 구성 요소를 만들 수 있음
  • 내부적으로 CloudFormation 템플릿으로 변환되어 배포됨
  • 복잡한 인프라 패턴을 코드로 추상화하고 재사용하기 좋음
  • 반복되는 리소스 구성을 함수, 클래스, Construct로 모듈화할 수 있음
  • 개발자가 익숙한 프로그래밍 언어로 IaC를 작성하고 싶을 때 적합

OpsWorks

  • OpsWorks는 Chef와 Puppet 기반의 구성 관리 서비스
  • 서버 환경과 애플리케이션 구성을 코드로 관리하는 데 사용
  • 기존 Chef/Puppet 워크플로를 AWS로 이전하거나 하이브리드로 운영할 때 고려
  • EC2 인스턴스의 패키지 설치, 서비스 구성, 애플리케이션 배포 같은 서버 구성 관리에 사용
  • 신규 워크로드에서는 Systems Manager, CloudFormation, CDK, Elastic Beanstalk, ECS 같은 서비스를 우선 고려하는 경우가 많음
  • 시험에서는 “Chef/Puppet 기반 구성 관리”가 나오면 OpsWorks를 떠올리면 됨

AWS Service Catalog

  • AWS Service Catalog는 조직에서 승인한 AWS 서비스와 구성을 중앙에서 배포하고 관리하는 서비스
  • 관리자는 승인된 제품을 포트폴리오로 구성
  • 사용자는 허용된 제품만 셀프서비스 방식으로 배포 가능
  • 표준화된 EC2, RDS, 네트워크 구성 등을 안전하게 배포할 때 사용
  • 권한, 제약 조건, 태그 등을 적용하여 거버넌스를 강화할 수 있음
  • Control Tower와 함께 다중 계정 거버넌스 요구사항에서 자주 등장
  • 개발팀에게 자유로운 배포 권한을 주되, 승인된 구성만 사용하게 하고 싶을 때 적합

배포 / 인프라 자동화 서비스 선택 기준 요약

요구사항 적합한 서비스
AWS 인프라를 YAML/JSON으로 정의 CloudFormation
스택 업데이트 전 변경 사항 검토 CloudFormation Change Set
실제 리소스와 템플릿 차이 확인 CloudFormation Drift Detection
큰 템플릿을 모듈화 CloudFormation Nested Stack
애플리케이션 코드 중심의 빠른 PaaS 배포 Elastic Beanstalk
Beanstalk에서 가장 단순한 배포 All at Once
Beanstalk에서 용량 감소 없이 순차 배포 Rolling with Additional Batch
Beanstalk에서 가장 안전한 새 인스턴스 기반 배포 Immutable
Beanstalk에서 일부 트래픽만 새 버전으로 전환 Traffic Splitting
소스 빌드와 테스트 CodeBuild
EC2/ECS/Lambda 자동 배포 CodeDeploy
전체 CI/CD 파이프라인 구성 CodePipeline
Lambda Canary/Linear 배포 CodeDeploy
프로그래밍 언어로 IaC 작성 CDK
Chef/Puppet 기반 구성 관리 OpsWorks
승인된 AWS 구성만 배포하도록 관리 AWS Service Catalog
여러 계정의 랜딩존과 거버넌스 Control Tower
리소스 구성 준수 평가 AWS Config

 

'자격증 > SAA' 카테고리의 다른 글

[AWS SAA] 분석 / 데이터 처리  (0) 2026.06.23
[AWS SAA] 재해복구 / 마이그레이션  (0) 2026.06.23
[AWS SAA] 비용 최적화  (0) 2026.06.22
[AWS SAA] 서버리스  (0) 2026.06.22
[AWS SAA] 애플리케이션 통합  (0) 2026.06.22