배포 아티팩트와 구성 관리

DVA-C02 대비 Lambda 배포 패키지, ECR 컨테이너 이미지, AppConfig를 활용한 환경별 구성 관리 방법을 정리합니다.

앱을 만들었으면 서버에 올려야 합니다. 이 과정을 배포(Deployment)라고 합니다. AWS에서는 어떤 방식으로 코드를 패키징하고, 설정을 관리하며, 배포할까요?

DVA-C02 시험에서 배포 구성 문제는 코드와 설정을 어떻게 패키징하고 관리하는가를 집중적으로 묻습니다.

 

Lambda 배포 패키지

Lambda 함수를 AWS에 올릴 때 두 가지 방법이 있습니다.

첫 번째 방법: .zip 파일 함수 코드와 필요한 라이브러리를 ZIP 파일로 압축해 올립니다. 직접 업로드: 최대 50MB S3를 경유해 업로드: 최대 250MB 간단한 함수나 종속성이 적을 때 적합합니다.

두 번째 방법: 컨테이너 이미지 Docker 이미지 형태로 패키징해 ECR에 저장한 뒤 Lambda에 연결합니다. 최대 10GB까지 지원합니다. 머신러닝 모델처럼 용량이 큰 종속성이 있을 때 유리합니다. 컨테이너 기술에 익숙한 팀이라면 기존 Docker 워크플로를 그대로 활용할 수 있습니다.

 

Amazon ECR (Elastic Container Registry)

ECR은 Docker 컨테이너 이미지를 저장하고 관리하는 서비스입니다. 쉽게 말하면 AWS의 Docker Hub입니다. GitHub에 코드를 저장하듯이, Docker 이미지를 ECR에 저장합니다.

주요 기능: 이미지 스캔: 저장된 이미지에 알려진 보안 취약점이 있는지 자동으로 검사합니다. 수명 주기 정책: 오래된 이미지를 자동으로 정리해 저장 비용을 줄입니다. 크로스 계정 공유: 리소스 정책을 설정하면 다른 AWS 계정과 이미지를 안전하게 공유할 수 있습니다.

 

AWS AppConfig

앱을 새로 배포하지 않고도 설정을 바꿀 수 있다면 어떨까요? 예를 들어 새 기능을 켜고 끄거나, 특정 사용자 그룹에게만 먼저 공개하는 것처럼요. 이것이 바로 AWS AppConfig의 역할입니다.

Feature Flag (기능 플래그): 코드 배포 없이 특정 기능을 켜거나 끌 수 있습니다. 예를 들어 새 결제 시스템을 일부 사용자에게만 먼저 테스트할 때 유용합니다. 점진적 배포: 설정 변경을 한 번에 모두 적용하지 않고 일부 사용자에게 먼저 적용합니다. 문제가 생기면 바로 되돌릴 수 있습니다. 검증: 설정을 배포하기 전에 JSON 스키마 또는 Lambda 함수로 유효성을 검사합니다. 잘못된 설정이 배포되는 것을 사전에 방지합니다. 자동 롤백: 배포 후 오류가 감지되면 이전 설정으로 자동 복구합니다.

 

환경별 구성 관리

앱은 보통 개발(Dev), 테스트/스테이징(Staging), 운영(Production) 환경을 별도로 운영합니다. 각 환경마다 다른 설정(데이터베이스 주소, API 키 등)이 필요합니다.

AWS에서 환경별 설정을 관리하는 방법: Parameter Store 경로 기반 계층 구조: /app/dev/db-url, /app/prod/db-url처럼 경로로 구분 Lambda 환경 변수: 함수마다 다른 환경 변수를 설정해 환경별 동작을 다르게 함 SAM 템플릿의 Parameters 또는 Mappings: 서버리스 앱 배포 시 환경별로 다른 값을 주입

 

시험 핵심 정리

"Lambda에 큰 종속성(최대 10GB)" -- 컨테이너 이미지 (ECR)

"Lambda 배포 패키지 50MB 초과" -- S3에 ZIP 업로드

"코드 배포 없이 설정 변경" -- AWS AppConfig

"기능을 코드 없이 켜고 끄기" -- Feature Flag (AppConfig)

"Docker 이미지 보안 취약점 자동 탐지" -- ECR 이미지 스캐닝

"환경별 구성을 계층적으로 관리" -- Parameter Store (경로 기반)

"SAM에서 환경별 값 주입" -- Parameters/Mappings

AppConfig는 코드 배포와 설정 배포를 분리하는 핵심 서비스

블로그 목록으로 돌아가기