본문 바로가기
DevOps

[T1014-이론] 1장 IaC와 테라폼

by 서어켜엉 2024. 6. 13.
해당 내용은 cloudNet@ 팀의 가시다 님이 진행하는 테라폼 스터디 T101 4기에서 다룬 내용과 "테라폼으로 시작하는 IaC" (한빛미디어) 저서 내용을 정리한 것입니다.

1. 인프라 자동화의 성숙도 변화

인프라 운영 장점 단점
1단계 매뉴얼 물리적인 특성으로
즉시 확인 및 즉시 전달 가능
변경사항 반영이 힘들고,실행을 위한
별도 구성 요소들을 따로 관리해야 한다.
2단계 스크립트 반복 작업을 줄이고
사용이 간단하다.
순차적으로 실행되고 시간이 지나면서
최종상태가 일치하지 않음.
3단계 가상 머신(VM) 미리 구성된 템플릿을 사용하여 관리와 확장이 용이하다. 가상화 범위 외적인 요소는 자동화가 불가능하고 하이퍼바이저에 의존적이다.
4단계 클라우드 API를 통해 더 많은 인프라를 가상화하고 자동화 도구 제공 클라우드 제공자마다 서로 상이한  API가 제공되어 각각을 위한 개별적 작업 필요
5단계 컨테이너 상호 호환되는 컨테이너 런타임을 통해 서비스 배포 자동화 및 높은 이동성 앱 배포 자동화를 위한 추가 플랫폼 레이어의 관리 추가

 

2. IaC (Infrastructure as Code) 의 이해

  • 사용자 인터페이스(UI)나 커맨드를 이용한 수동 조작이 아닌 코드로 인프라를 관리하는 도구
  • 코드로 인프라를 관리한다는 것은 자유롭게 변경하고, 환경을 이해하고, 반복적으로 동일한 상태를 만들 수 있다는 것이다.

IaC 도입의 장점

  • 속도와 효율성
    수동작업보다 빠르고, 불필요한 인프라 구성을 방지하여 생산성을 높인다.
  • 버전 관리
    코드 형태로 관리하기 때문에 버전 관리 툴과 연계할 수 있다. 변경 내용을 추적하고 이전 버전으로 되돌리기 편하다.
  • 협업
    파일 형태로 쉽게 공유가 가능하고, 공동 작업을 위한 환경을 구성할 수 있다.
  • 재사용성
    코드의 주요 반복 또는 표준화된 구성을 패키징하면 새로 코드를 구성하지 않고 기존 모듈로 배포가 가능하다.
  • 기술의 자산화
    관리 노하우와 작업 방식이 코드에 녹아 있고, 파이프라인에 통합해 워크플로 형태로 자산화되어 기술 부채를 제거한다.

IaC 도입의 한계점

  • 코드 문법학습
    새로운 도구의 학습에 대한 러닝커브가 존재한다.
  • 파이프라인 통합
    기존 워크플로에 자동화를 위한 수고가 추가로 필요하다.
  • 대상 인프라에 대한 이해 필요
    관리 대상이 되는 인프라에 관한 지식이 어느 정도 필요하다. 

 

3. 테라폼이란?

하시코프사(HashiCorp)에서 공개한 Go 언어로 개발된 IaC 도구. 

 

하시코프의 철학 3가지를 담아서 설계되었다.

  • 워크플로우에 집중
  • 코드형 인프라 (IaC)
  • 실용주의

테라폼 제공 유형

  • Terraform
  • Terraform Cloud
  • Terraform Enterprise
Terraform Core (기본 기능) Terraform Cloud / Enterprise
Infrastructure as Code(HCL)
워크스페이스
입력 변수
Runs(Plan & Apply)
State
리소스 종속성 관리
프로바이더 사용
공개된 모듈 레지스트리 사용

[협업을 위한 기능]
Remote State
VCS 연동
워크스페이스 관리
민감 변수 저장소
API
팀 관리
프라이빗 모듈 저장소
SAML, SSO
[거버넌스와 정책]
코드기반 정책(PaC)
비용 추정
Run Task
Audit





[셀프 서비스 인프라 기능]
구성 디자이너
No-code
인프라 편차 추적
Service Now 연동