CI/CD 파이프라인에 IaC 통합하기

AWS 배포 자동화

Dunieski Otano

Amazon Web Services Solutions Architect

코드가 먼저, 인프라는 나중에

코드 우선

  • 코드는 CodePipeline으로 배포되지만, 인프라는 수동으로 업데이트됩니다
  • 개발자는 Lambda를 확장하고, 운영팀은 SQS 큐 크기를 조정합니다
  • 코드와 인프라 간 드리프트(Drift)가 장애를 일으킵니다
  • CloudFormation을 동일한 파이프라인에 연결하세요
AWS 배포 자동화

파이프라인 작업으로서의 CloudFormation

파이프라인 작업

  • CodePipeline은 CloudFormation 배포 작업을 지원합니다
  • 파이프라인은 템플릿 아티팩트를 작업에 전달합니다
  • 모드: CREATE_UPDATE, DELETE_ONLY, REPLACE_ON_FAILURE, CHANGE_SET_REPLACE / EXECUTE
  • 소스, 빌드, 앱 배포 작업과 함께 실행됩니다
AWS 배포 자동화

일반적인 엔드투엔드 파이프라인

일반적인 구조

  • 소스: Git 푸시가 파이프라인을 트리거합니다
  • 빌드: 템플릿과 앱 아티팩트를 생성합니다
  • 인프라 배포: CloudFormation이 스택을 생성하거나 업데이트합니다
  • 앱 배포: CodeDeploy가 새 버전을 배포합니다
AWS 배포 자동화

스택 실패 시 자동 롤백

  • 업데이트가 실패하면 마지막 정상 상태로 자동 롤백됩니다
  • 파이프라인 단계가 실패하면 이후 단계가 중단됩니다
  • 1장에서 설정한 실패 알림이 자동으로 작동합니다

자동 롤백

AWS 배포 자동화

모듈형 템플릿을 위한 중첩 스택

  • 중첩 스택(Nested Stack)은 AWS::CloudFormation::Stack 타입으로 선언됩니다
  • 2,000줄짜리 템플릿을 재사용 가능한 모듈로 분리합니다
  • 상위 스택이 매개변수를 전달하고 출력값을 읽습니다
  • 각 모듈은 상위 스택 내에서 독립적으로 배포됩니다

중첩 스택

AWS 배포 자동화

다중 계정, 다중 리전을 위한 StackSet

  • StackSet은 하나의 템플릿을 여러 계정과 리전에 배포합니다
  • 보안 기준선, 가드레일, 공유 인프라에 유용합니다
  • 템플릿을 다시 작성하지 않고 스택 인스턴스를 추가하거나 제거할 수 있습니다
  • 중앙에서 관리하고 로컬에서 배포합니다

StackSet

AWS 배포 자동화

적합한 구조 선택하기

적합한 구조

  • 단일 스택: 소규모 앱, 단일 환경
  • 중첩 스택: 대규모 템플릿, 모듈형 구성 요소
  • StackSet: 동일한 템플릿, 여러 계정과 리전
  • 세 가지 모두 CodePipeline과 잘 작동합니다
AWS 배포 자동화

연습해 봅시다!

AWS 배포 자동화

Preparing Video For Download...