불변 인프라
불변 인프라 는 서버나 시스템을 한 번 생성하면 절대로 수정하지 않고, 변경이 필요할 경우 새로운 인스턴스를 생성해 교체하는 방식의 인프라 운영 모델이다.
이 방식은 전통적인 “상태 유지형(Mutable)” 인프라와 달리, 배포 후 서버에 직접 로그인하거나 설정을 바꾸지 않음으로써, 일관성과 예측 가능성, 자동화 수준을 높인다.
주로 클라우드 환경, CI/CD 파이프라인, DevOps 문화와 함께 적용되며, Docker 이미지, AMI(Amazon Machine Image) 등으로 구현된다.
주요 특징
- 수정 금지 원칙: 한 번 배포된 서버나 시스템은 변경하지 않음.
- 새 인스턴스 교체 배포: 변경이 필요할 경우 새로운 버전 전체를 생성 후 교체.
- 자동화 필수: 이미지 빌드, 배포, 교체 과정을 자동화하는 것이 전제.
- 버전 추적 용이: 모든 배포 단위가 새로 생성되므로 버전 관리와 이력 추적이 명확함.
- 일관된 환경 제공: 개발, 테스트, 운영 환경 간 차이를 줄여 배포 오류 감소.
장점
- 예측 가능한 배포: 수정 없이 전체를 교체하므로 배포 실패율 감소.
- 디버깅 단순화: 상태가 고정되어 있어 문제 원인을 파악하기 쉬움.
- 보안성 향상: 서버 접속 없이 운영되므로 보안 위협 감소.
- 롤백 용이: 이전 버전 이미지를 다시 배포하는 방식으로 손쉬운 복구 가능.
- CI/CD와 연계 최적화: 자동화된 파이프라인에 적합한 구조.
관련 용어
- Mutable Infrastructure: 서버를 수시로 수정하거나 설정을 바꾸는 전통적 운영 방식.
- Docker Image: 컨테이너의 불변 실행 환경을 담은 이미지 파일.
- AMI (Amazon Machine Image): AWS EC2 인스턴스의 불변 이미지.
- CI/CD: 지속적 통합/배포를 통해 자동으로 새 인프라를 생성하고 배포.
- IaC (Infrastructure as Code): 인프라를 코드화하여 불변 구조를 자동화.
- 배포 전략: 블루-그린, 카나리 등 무중단 배포 방식과 궁합이 좋음.
주요 솔루션 및 사용 사례
- 주요 솔루션
- Packer: 불변 인프라 이미지를 자동으로 생성하는 도구.
- Terraform: 코드 기반으로 클라우드 자원을 생성·배포.
- Docker / Kubernetes: 컨테이너 기반으로 불변 환경 유지.
- AWS EC2 + AMI: 새로운 인스턴스 이미지로 교체하는 방식.
- Ansible (Immutable 방식): 사전 빌드된 이미지를 관리할 때 사용 가능.
- 사용 사례
- CI/CD 파이프라인에서의 배포 자동화: 코드 변경 시 새 이미지 빌드 후 전체 인프라 교체.
- 보안 강화 서버 운영: SSH 접속을 차단하고 이미지로만 변경 반영.
- MSA 운영 환경: 마이크로서비스 단위로 새로운 컨테이너를 생성·배포.
- 테스트 및 QA 환경의 일관성 확보: 코드마다 정확히 동일한 환경 구성.
- 장애 복구 자동화: 이전 이미지로 자동 롤백하여 빠른 복구 구현.