오늘은 AWS 공인교육이 있는 날이다. DevOps Engineering on AWS라는 주제로 강사님이 오셔서 수업을 진행하였다.DevOps 개념부터 시작해서 CI/CD 파이프라인, 코드형 인프라(IaC), AWS CloudFormation까지 다뤘다.
DevOps는 개발(Dev)과 운영(Ops)의 경계를 허무는 문화이자 방법론이다.
핵심은 빠르고 안정적인 소프트웨어 전달이다.
주요 방식들:
| 방식 | 설명 |
|---|---|
| 지속적 통합 (CI) | 코드 변경 시 자동 빌드 + 테스트 |
| 지속적 전달 (CD) | 테스트 환경까지 자동 배포 |
| 지속적 배포 (CD) | 프로덕션까지 완전 자동화 |
| 코드형 인프라 (IaC) | 인프라를 코드로 관리 |
| 마이크로서비스 | 독립적으로 배포 가능한 작은 서비스 단위 |
CI/CD 파이프라인 흐름은 이렇다.
코드 → 빌드 → 테스트 → 프로비저닝 → 배포 → 모니터링
인프라를 코드로 정의하면 뭐가 좋냐면:
AWS에서는 CloudFormation이 IaC의 대표 서비스다.
CloudFormation 템플릿은 YAML 또는 JSON으로 작성한다.
주요 섹션 구성:
| 섹션 | 필수 여부 | 설명 |
|---|---|---|
AWSTemplateFormatVersion | 선택 | 템플릿 버전 |
Description | 선택 | 템플릿 설명 |
Parameters | 선택 | 입력값 |
Mappings | 선택 | 정적 변수 (키-값) |
Conditions | 선택 | 리소스 생성 조건 |
Resources | 필수 | 생성할 AWS 리소스 |
Outputs | 선택 | 출력값 (URL, 사용자명 등) |
CloudFormation이 리소스를 업데이트할 때는 3가지 방식 중 하나를 택한다.
스택이 템플릿과 달라졌는지 확인하는 기능이다.
DRIFTED: 실제 구성이 템플릿과 다름IN_SYNC: 일치NOT_CHECKED: 아직 검사 안 함스택 상태 확인과 드리프트 탐지를 CLI로 직접 해봤다.
# 스택 상태 확인
aws cloudformation describe-stacks \
--stack-name Lab1 \
--query "Stacks[0].StackStatus"
# 드리프트 탐지 결과 확인
aws cloudformation describe-stack-resource-drifts \
--stack-name Lab1 \
--stack-resource-drift-status-filters MODIFIED DELETED
# 변경 세트 생성 (인스턴스 타입 변경)
aws cloudformation create-change-set \
--stack-name Lab1 \
--change-set-name Lab1ChangeSet \
--parameters ParameterKey=InstanceType,ParameterValue=t2.micro \
--template-body file://lab1-CS.yaml
변경 세트(Change Set)는 실제로 적용하기 전에 어떤 리소스가 어떻게 바뀌는지 미리 확인할 수 있는 기능이다.
운영 환경에서 스택 업데이트할 때 꼭 활용해야 할 것 같다.
EC2 인스턴스 초기화 자동화에 쓰이는 스크립트들이다.
| 스크립트 | 역할 |
|---|---|
cfn-init | 패키지 설치, 파일 생성, 서비스 시작 |
cfn-signal | 리소스 준비 완료 신호 전송 |
cfn-get-metadata | 리소스 메타데이터 조회 |
cfn-hup | 메타데이터 변경 감지 후 후크 실행 |
오늘은 DevOps의 전반적인 개념과 CloudFormation을 통한 IaC 실습을 했다.
변경 세트와 드리프트 탐지 기능이 특히 인상 깊었다. 인프라도 코드처럼 diff를 보고 적용할 수 있다는 게 실무에서 정말 유용할 것 같다.
이번 velog는 AWS Kiro를 통해 작성하고 Kiro에 Notion MCP를 연결하여 Notion에서 바로 읽을 수 있도록 하였다.