1. Terraform Associate — IaC
1a. IaC란 무엇인가 (What is Infrastructure as Code)
핵심 정의
- IaC = 인프라를 수동(manual) 으로 구성하는 대신, 머신이 읽을 수 있는 정의 파일(코드) 로 관리·프로비저닝하는 방식
- 콘솔에서 클릭으로 만드는 게 아니라, 코드로 인프라를 기술(codify) 해서 만든다
| 개념 | 영어 표현 |
|---|
| 인프라를 코드로 관리 | manage / provision infrastructure through code |
| 머신이 읽는 정의 파일 | machine-readable definition files / configuration files |
| 수동 프로세스 대신 | rather than manual processes / interactive configuration tools |
| 인프라를 코드화하다 | codify infrastructure |
선언형 vs 명령형
- Terraform은 선언형(declarative) 방식
- "어떻게 만들지(how)"가 아니라 "최종 상태가 어때야 하는지(desired end-state)" 를 기술
- Terraform이 현재 상태 → 원하는 상태로 가는 방법을 스스로 계산
| 개념 | 영어 표현 |
|---|
| 선언형 | declarative |
| 명령형 | imperative |
| 원하는 최종 상태 | desired state / desired end-state |
| HashiCorp 설정 언어 | HCL (HashiCorp Configuration Language) |
1b. IaC 패턴의 장점 (Advantages of IaC Patterns)
| 장점 (한글) | 영어 표현 | 설명 |
|---|
| 자동화 | automation | 반복 작업을 코드로 자동화 |
| 버전 관리 | version control / versioning | Git으로 인프라 변경 이력 추적 |
| 재사용성 | reusability | 모듈(module)로 코드 재사용 |
| 일관성 | consistency | 어디서 실행하든 같은 결과 |
| 반복 가능성 | repeatability | 동일 구성 반복 배포 가능 |
| 사람 실수 감소 | reduce (human) error | 수동 실수 제거 |
| 멱등성 | idempotence / idempotent | 여러 번 실행해도 결과 동일 |
| 협업 | collaboration | 팀이 코드로 같이 작업 |
| 자체 문서화 | self-documenting / documentation as code | 코드 자체가 인프라 문서 |
| 속도·효율 | speed and efficiency | 배포 빠름 |
| 테스트 가능 | testability | 배포 전 검증 가능 |
| 폐기 가능한 인프라 | disposable / ephemeral infrastructure | 쉽게 만들고 지움 |
같이 알아두면 좋은 개념
- immutable infrastructure (불변 인프라): 서버를 수정하지 않고, 새로 만들어서 교체
- plan / preview:
terraform plan으로 적용 전 변경 사항 미리 확인 → 실수 방지
1c. 멀티/하이브리드 클라우드 & 서비스 불가지론 워크플로우
(Multi-cloud, Hybrid cloud, Provider-agnostic)
Provider (프로바이더)
- Terraform은 provider(플러그인) 를 통해 클라우드/서비스 API와 통신
- AWS, Azure, GCP, Kubernetes 등 다수의 provider가 Terraform Registry에 공개
| 개념 | 영어 표현 |
|---|
| 프로바이더(플러그인) | provider (plugin) |
| 프로바이더 저장소 | Terraform Registry |
멀티 클라우드 (Multi-cloud)
- 하나의 워크플로우로 여러 클라우드에 동시 배포 (AWS + Azure + GCP)
- 한 벤더 장애 시에도 견딜 수 있음 → 내결함성/복원력 향상
| 개념 | 영어 표현 |
|---|
| 멀티 클라우드 배포 | deploy across multiple cloud providers |
| 내결함성 증가 | increased fault tolerance |
| 복원력 | resiliency |
프로바이더 불가지론 (Provider-agnostic)
- Terraform은 어떤 provider든 동일한 워크플로우로 다룸
- 핵심 워크플로우: Write → Plan → Apply
- 클라우드마다 다른 도구를 안 배워도 됨 → 하나의 언어(HCL), 하나의 도구
- 벤더 종속(vendor lock-in) 회피
| 개념 | 영어 표현 |
|---|
| 프로바이더 불가지론적 | provider-agnostic |
| 단일 워크플로우 | single / consistent workflow |
| 핵심 워크플로우 | Write, Plan, Apply |
| 벤더 종속 | vendor lock-in |
하이브리드 클라우드 (Hybrid cloud)
- 온프레미스(on-premises) + 퍼블릭 클라우드 를 함께 관리
- 사내 데이터센터와 클라우드를 하나의 코드베이스로 프로비저닝
| 개념 | 영어 표현 |
|---|
| 온프레미스 | on-premises (on-prem) |
| 하이브리드 클라우드 | hybrid cloud |
요약
| 주제 | 내용 |
|---|
| IaC | 인프라를 **코드(machine-readable files)**로 관리 |
| Terraform 방식 | Declarative (desired end-state 기술) |
| 언어 | HCL |
| 핵심 장점 | automation, consistency, versioning, reusability, reduced error |
| 멀티클라우드 | 하나의 workflow로 여러 provider 배포 → fault tolerance ↑ |
| 성격 | provider-agnostic, vendor lock-in 회피 |
| 워크플로우 | Write → Plan → Apply |