Terraform

IaC 코드형 인프라, terraform 소개

Jaden Park 2021. 11. 19. 00:35

코드형 인프라(Infrastructure as Code, IaC) 란?

코드형 인프라의 범주

  • 애드혹 스크립트
  • 구성 관리 도구
  • 서버 템플릿 도구
  • 오케스트레이션 도구
  • 프로비전 도구

 

테라폼이란?

테라폼의 주요 특징

  • 코드형 인프라(Infrastructure as Code)
  • 실행 계획(Exection Plans)
  • 리소스 그래프(Resource Graph)
  • 변경 자동화(Change Automation)

 

 


코드형 인프라(Infrastructure as Code, IaC) 란?

코드를 작성 및 실행하여 인프라를 생성, 배포, 수정, 정리하는 것을 의미

서버를 물리적으로 설치하는 등의 하드웨어 측면을 포함하여 운영의 모든 측면을 소프트웨어적으로 전환

 

코드형 인프라 도구에는 다섯 가지 범주가 있습니다.

 


코드형 인프라의 범주

애드혹 스크립트

  • 자동화하는 가장 간단한 방법 중 한가지 (하지만 규모가 커지면 스파게티 코드가 될 가능성이 높음)
  • 수행할 작업을 단계별로 나눠 bash, Ruby, Python 등의 언어를 사용하여 코드로 정의하고 작성된 스크립트를 서버에 수동으로 실행

구성 관리 도구

  • 대상 서버에 소프트웨어를 설치하고 관리하도록 설계, 멱등성분산형 구조가 주요 특징
  • Chef, Puppet, Ansible, Saltstack 같은 도구가 있음

서버 템플릿 도구

  • 여러 서버를 시작하고 각각 동일한 코드를 실행하여 서버를 구성하는 구성 관리 도구와 다르게, 서버 템플릿 도구는 운영 체제, 소프트웨어, 파일 및 기타 필요한 모든 내용을 포함하고 있는 스냅샷(snapshot)으로 이미지를 생성
  • 가상 머신, 컨테이너 2가지로 이미지 작업을 위한 도구의 범주가 나뉨.
  • Docker, Packer, Vagrant 같은 도구가 있음

오케스트레이션 도구

  • 서버 템플릿 도구로 생성된 VM이나 컨테이너를 어떻게 관리하는가에 대한 도구
  • ex) VM과 컨테이너를 하드웨어에 효율적 배포, 배포 전략, 헬스 체크 등..
  • Kubernetes, Marathon/Mesos, ECS, Docker Swarm, Nomad 와 같은 도구가 있음

프로비전 도구

  • 구성 관리, 서버 템플릿 및 오케스트레이션 도구가 각 서버에서 실행되는 코드를 정의한다면 프로비전 도구는 서버 자체를 생성
  • 서버만 생성하는 것이 아니라 DB, Cache, LB 등 인프라에 관한 거의 모든 부분을 프로비저닝할 수 있음.
  • Terraform, OpenStack Heat, CloudFormation 같은 도구가 있음

 


테라폼이란?

해시코프(HashiCorp)사가 Go언어로 개발한 오픈 소스 도구

IaC 프로비전 도구로 인프라를 안전하고 효율적으로 빌드, 변경, 버전 관리가 가능

인스턴스, 저장소, 네트워크와 같은 low 레벨 구성 요소 뿐만 아니라 DNS, SaaS 등과 같은 hi 레벨 구성 요소도 포함하여 관리 가능

테라폼은 프로바이더와 API 상호작용하며 리소스를 배포 및 관리. (AWS, GCP, Azure, OCI, OpenStack, Alibaba Cloud ...)

 


테라폼의 주요 특징

 

코드형 인프라(Infrastructure as Code)

인프라를 코드로 정의하여 생산성과 투명성을 높일 수 있다.

정의한 코드를 쉽게 공유할 수 있어 효율적 협업이 가능하다.

실행 계획(Execution Plan)

변경 계획과 변경 적용을 분리하여 변경 내용을 적용할 때 발생하는 휴먼에러를 줄일 수 있다.

 

리소스 종속성(Resource Graph)

구성 파일에 정의된 모든 리소스의 종속성을 확인하고 비 종속적인 리소스의 생성을 병렬화 한다.

 

변경 자동화(Change Automation)

여러 장소에 같은 구성의 인프라를 구축/변경 할 수 있도록 자동화가 가능하다.

 

 

 

 

 

'Terraform' 카테고리의 다른 글

[테라폼] 테라폼 설치 & 환경 구성  (1) 2021.11.23