Infrastructure as Code(IaC)는 인프라를 코드로 관리하는 방식으로, 서버, 네트워크, 데이터베이스, 스토리지 등의 IT 인프라를 코드로 정의하고 자동화할 수 있도록 해줍니다. 기존의 수동 인프라 설정(콘솔 클릭 방식)과 달리, IaC를 활용하면 코드 기반으로 일관된 인프라 배포 및 관리가 가능합니다. (예시 : Config형태의 파일 한번의 실행으로 여러 인프라들 설치 및 설정을 자동화하게 해줌)
콘솔에서 EC2 인스턴스를 생성하려면 인스턴스 유형, VPC, 보안 그룹 등을 수동으로 선택해야 하지만,
IaC를 사용하면 이를 코드로 정의해 한 번에 실행하거나 필요할 때마다 재사용할 수 있습니다.
IaC는 크게 선언적(Declarative) 방식과 명령형(Imperative) 방식으로 나뉩니다.
- 선언적(Declarative): 최종 상태를 정의하면, IaC 도구가 자동으로 그 상태에 도달하도록 함 (예: Terraform, CloudFormation)
- 명령형(Imperative): 특정 명령어를 순차적으로 실행하여 원하는 인프라를 구축함 (예: Ansible, AWS CLI)
2. 콘솔 기반 IaC 관리란?
일반적으로 IaC는 코드로 인프라를 배포하지만, 콘솔 기반 IaC 관리란 클라우드 서비스 제공업체의 콘솔을 통해 IaC 템플릿을 적용하고 실행하는 방식을 의미합니다.
즉, 개발자가 직접 코드를 작성하지 않고 콘솔에서 IaC 관련 기능을 활용하여 인프라를 자동화하는 것입니다.
3. 주요 클라우드 제공업체별 콘솔 기반 IaC 기능
다양한 클라우드 플랫폼에서 콘솔을 통해 IaC를 관리할 수 있도록 도와주는 기능을 제공합니다.
1) AWS (Amazon Web Services)
✅ AWS CloudFormation
- AWS 콘솔에서 CloudFormation 템플릿(JSON/YAML)을 업로드하여 인프라를 생성 및 관리
- 템플릿을 기반으로 **Stack(스택)**을 생성하여 여러 리소스를 한 번에 배포
- AWS CloudFormation Designer를 통해 GUI 기반의 템플릿 편집 기능 제공
✅ AWS CDK (Cloud Development Kit)
- AWS 콘솔에서 AWS CDK 스택을 배포 및 관리
- Python, TypeScript 등의 프로그래밍 언어를 사용하여 IaC 템플릿을 생성 가능
✅ AWS Service Catalog
- 사전 정의된 인프라 템플릿을 AWS 콘솔에서 손쉽게 배포할 수 있도록 지원
✅ AWS Systems Manager (SSM) – State Manager
- EC2 및 기타 AWS 리소스를 자동으로 구성 및 유지하는 기능 제공
2) Microsoft Azure
✅ Azure Resource Manager (ARM)
- Azure 콘솔에서 ARM 템플릿(JSON 기반) 관리 가능
- 특정 리소스 그룹을 지정하여 일괄 배포 가능
- Azure Policy와 연계하여 보안 및 규정 준수 정책을 적용 가능
✅ Azure Bicep
- ARM 템플릿보다 더 간결한 문법을 제공하는 IaC 도구
- Azure 포털에서 직접 Bicep 파일을 실행하여 리소스 배포 가능
✅ Azure Blueprints
- 조직 전체에서 표준화된 인프라를 정의하고, Azure 콘솔에서 간편하게 배포 가능
✅ Azure DevOps Pipelines + Terraform
- Azure DevOps 콘솔에서 Terraform 스크립트를 실행하여 IaC 배포 가능
3) Google Cloud Platform (GCP)
✅ Google Cloud Deployment Manager
- Google Cloud 콘솔에서 YAML 또는 Jinja2 템플릿을 사용하여 GCP 리소스 배포 가능
- 콘솔에서 직접 Deployment Manager 템플릿을 실행하여 프로젝트에 적용 가능
✅ Terraform (GCP 지원)
- GCP 콘솔에서 Terraform을 실행하는 기능을 제공
- Cloud Build와 연계하여 IaC 실행 자동화 가능
✅ Google Cloud Config Connector
- Kubernetes에서 Google Cloud 리소스를 관리하는 IaC 솔루션
- GCP 콘솔에서 Config Connector를 활성화하면, YAML을 통해 GCP 리소스 관리 가능
4. 콘솔 기반 IaC 관리의 장점
✅ 1) 초보자 친화적
- 코드 작성 없이 GUI를 통해 IaC 기능 활용 가능
✅ 2) 간편한 초기 설정
- 기존 개발팀이 빠르게 IaC를 적용할 수 있음
✅ 3) 조직 내 IaC 도입 촉진
- 개발팀이 기존 콘솔 환경에서 IaC 개념을 익힐 수 있음
✅ 4) 기존 워크플로우와의 호환성
- 기존 클라우드 콘솔에서 정책 및 권한 설정과 함께 사용 가능
✅ 5) 직관적인 오류 수정
- 콘솔에서 배포 상태 및 로그를 쉽게 확인 가능하여 디버깅이 용이함
5. 콘솔 기반 IaC 관리의 한계점
⚠️ 1) 코드 재사용 및 형상 관리 어려움
- 콘솔에서 클릭하여 배포하는 경우 코드 형태로 관리하기 어렵고, 버전 관리를 하기 어려움
⚠️ 2) 자동화 부족
- CI/CD와 연계하기 어렵고, 대규모 인프라에서는 효율성이 떨어질 수 있음
⚠️ 3) 대규모 인프라 관리 한계
- 여러 환경(dev, staging, prod)에 동일한 설정을 적용하는 것이 번거로울 수 있음
⚠️ 4) 협업 어려움
- 콘솔 기반 설정은 코드 리뷰가 어렵고, 협업 시 변경 사항 추적이 어려움
⚠️ 5) 클라우드 종속성 증가
- 특정 클라우드 콘솔에서 제공하는 IaC 기능을 활용하면, 멀티 클라우드 환경에서의 확장성이 떨어질 수 있음
6. 콘솔 기반 IaC vs 코드 기반 IaC 비교
비교 항목 | 콘솔 기반 IaC | 코드 기반 IaC (Terraform, CloudFormation 등) |
---|---|---|
사용 편의성 | 쉬움 (GUI) | 학습 필요 (코드 작성) |
자동화 | 제한적 | CI/CD 연계 가능 |
확장성 | 제한적 | 대규모 인프라 배포 가능 |
협업 | 어려움 | 코드 리뷰 및 형상 관리 가능 |
클라우드 종속성 | 높음 | 멀티 클라우드 가능 |
7. 콘솔 기반 IaC 활용 방법 (실제 사례)
(1) AWS CloudFormation을 이용한 콘솔 기반 IaC 적용
1️⃣ AWS 콘솔 → CloudFormation 서비스 이동
2️⃣ “스택 생성(Create Stack)” 클릭
3️⃣ “새 템플릿 업로드” 또는 “샘플 템플릿 사용”
4️⃣ 구성 및 설정 후 “스택 생성” 실행
5️⃣ 배포된 리소스를 CloudFormation 콘솔에서 관리
(2) Azure Resource Manager (ARM)
1️⃣ Azure 포털 → “리소스 그룹” 이동
2️⃣ “새로운 배포” 클릭 후 ARM 템플릿 선택
3️⃣ JSON 기반으로 원하는 리소스를 정의 후 배포
4️⃣ Azure Policy 적용하여 규정 준수 유지
(3) GCP Deployment Manager
1️⃣ GCP 콘솔 → “Deployment Manager” 이동
2️⃣ 새 배포 생성 후 YAML 템플릿 업로드
3️⃣ “배포 실행”을 클릭하여 리소스 생성
4️⃣ 로그 및 변경 사항 모니터링
8. 결론: 콘솔 기반 IaC는 언제 사용해야 할까?
- 소규모 프로젝트 또는 초기 IaC 학습 목적이라면 콘솔 기반 IaC가 적합
- 대규모 인프라 관리, CI/CD 통합, 멀티 클라우드 운영이 필요한 경우 코드 기반 IaC(Terraform, Pulumi, CloudFormation 등)로 전환하는 것이 바람직함
✅ 최적의 방법: 콘솔 기반 IaC로 시작 → 코드 기반 IaC로 확장 🚀