Judaeng

Terraform Up & Running (1) 본문

DevOps/Terraform

Terraform Up & Running (1)

Judaeng 2023. 6. 26. 23:00

Hello World!
terraform-up-running

 

위 제목의 책을 통해 테라폼의 기본 개념, 정의 등을 공부하고 설치에서 운영까지 알아보자.

 

테라폼은 최근 가장 주목받는 도구이며, 오픈소스로 많은 개발자와 엔지니어가 계속해서 기여하고 있다고 한다.

테라폼을 통해서 인프라의 구성을 코드 형태로 관리하고 효율적으로 작성하는 방법을 익혀보자.

클라우드 컴퓨팅의 다양한 서비스들이 이미 추상화되어 있고 많은 기술이 융합되어 있기 때문에 그 위에 부드럽게 코드 형태로 관리하는 것 자체가 간단히 할 수 있는 일은 아니라고 한다.

 

코드형 인프라의 최신 트렌드를 따라가면서 기존 시스템을 개선하고, 새로운 기능을 확장하는 전략으로 테라폼 도입을 추천한다고 한다.

 

테라폼 구성과 동작


몇 년 전까지 서비스를 제공하기 위해서는 데이터 센터에서 서비스 인프라를 직접 구성해야만 했고, 권한이 있는 시스템 관리자가 직접 수동으로 관리해야만 했다.

서비스를 구성하는 모든 서버, 데이터베이스, 네트워크 장비들과 모든 구성 정보들을 환경마다 직접 설정, 관리해야 했다.

혹시나 발생할지 모르는 설정의 실수로 인한 어려움이 있었고, 무겁고 느린 배포의 어려움도 있었다.

시스템 관리자만 서비스 환경에 접근할 수 있었으며, 담당자 없이는 서비스 장애에 대응하기조차 어려웠던 시절이 있었다.

하지만 몇 년 전부터 데브옵스(DevOps)로의 움직임으로 상황은 점차 변화되고 있으며, 특히 테라폼(Terraform)을 통해서 이전보다 유연하고 탄력적인 환경을 구성할 수 있게 되었고, 보다 효율적으로 서비스 환경을 운영할 수 있게 되었다고 한다.

 

테라폼은 하시코프(HashiCorp)에서 만든 오픈 소스 도구이며, 인프라를 코드 형태로 정의하는 간편한 선언형 프로그래밍 언어이다.

다양한 공용 클라우드와 사설 클라우드 및 가상화 환경을 지원하고 있으며, 몇 가지 명령어를 통해서 관리하고 배포할 수 있다.

예를 들면 수동으로 웹페이지를 클릭한다거나 많은 명령어를 묶음으로 만들어서 수행하는 대신, 다음과 같은 간단한 코드를 통해서 아마존 웹 서비스(Amazon Web Service)의 서버를 설정할 수 있다.

provider "aws" {
	region = "us-east-1"
}

resource = "aws_instance" "example" {
	ami = "ami-40d82157"
	instance_type = "t2. micro"
}

또한, 적용을 위해서는 간단히 다음의 명령어를 수행하기만 하면 된다.

> terraform apply

이러한 간단함과 효율성 덕분에 테라폼은 데브옵스 세계에서 급성장한 주요 도구가 되었다고 한다.

또한, 지루하며 관리하기 어렵고 수동으로 해야 하는 시스템 관리자의 구성 작업을 견고한 자동화 기반으로 바꾸어 주었으며, 그 위에 검증 자동화, 지속적인 통합, 지속적인 전달과 같은 데브옵스로의 다양한 시도들이 이루어졌다고한다.

도커(docker), 셰프(Chef), 퍼핏(Puppet) 등의 다양한 데브옵스 도구들을 손쉽게 활용할 수 있게 해 주었다고 한다.

 

이 책의 대상


코드가 작성된 후에 해당 코드에 책임이 있는 모든 이들을 대상으로 한다.

시스템 관리자, 운영 엔지니어, 배포 엔지니어, 신뢰성 엔지니어, 데브옵스 엔지니어, 인프라 개발자, 풀 스택 엔지니어, 엔지니어링 매니저, 기술 담당 총괄을 하는 사람들 모두가 해당된다고 한다.

직책은 중요하지 않으며, 직접 인프라를 구성, 운영(리소스 관리, 데이터 백업, 모니터링 등)하고, 코드를 작성하고, 서비스 애플리케이션의 상태를 감시하며, 새벽에 발생한 알람에도 즉각적인 대응을 해야 하는 역할을 담당한다면 이 책을 추천한다고 써져있다.

 

결과적으로, 이와 같은 모든 일은 일반적으로 '운영'이라고 바꾸어 말할 수 있다고 한다.

 

과거에는 개발자는 코드를 개발하지만, 대신 운영을 이해하지 못했다고 한다.

또한, 시스템 관리자는 운영을 담당하지만 코드를 작성하거나 이해하지 못해 서로 협업하기가 매우 어려웠다고 한다.

과거에는 이 격차를 줄이기 위해 수많은 방안을 모색하였다면, 최근에는 클라우드 컴퓨팅이나 데브옵스가 보편화됨에 따라 모든 개발자가 운영 정책과 환경을 이해하기 위해 노력하며, 시스템 관리자가 개발 관련 기술과 언어를 능동적으로 배우는 형태로 변화하고 있다고 한다.

 

1. 왜 코드형 인프라(IaC)를 사용하는가?

2. 구성 관리 도구와 배포 도구, 그리고 서버 템플릿의 차이는 무엇인가?

3. 언제 테라폼, 셰프, 앤서블, 퍼핏, 솔트스택, 클라우드포메이션, 도커, 패커를 사용해야 하는가?

4. 테라폼은 어떻게 동작하고, 인프라를 관리하기 위해 어떻게 사용할 것인가?

5. 자동화된 배포 절차의 일부로써 테라폼을 어떻게 구성할 수 있는가?

6. 자동화된 검증 절차에서는 테라폼을 어떻게 활용할 것인가?

7. 테라폼을 팀에서 활용하기 위한 모범사례는 어느 것이 있는가?

 

테라폼은 대부분의 운영체제를 지원하며, 인터넷 연결만 되어 있다면 문제없이 사용할 수 있다고 한다.

 

왜 이 책을 쓰게 되었는가?


테라폼은 데브옵스를 위한 매우 주요한 도구다.

아마존 웹 서비스, 마이크로 소프트 애저, GCP같이 잘 알려진 클라우드 공급자의 환경을 대부분 지원하며, 간결하고 손쉽게 작성 가능한 언어를 바탕으로 코드 재사용, 검증, 버전 관리를 지원한다.

이것은 오픈 소스이며, 친근하고 활발한 커뮤니티를 가지고 있다.

한 가지 단점이 있다면 최근에 개발된 도구라는 것이다.

 

문제는 책, 블로그, 혹은 도움을 줄 수 있는 경험 많은 전문가가 없다는 것이다.

만약 공식 문서를 통해 테라폼을 배우고자 한다면, 기본 문법과 기능을 설명하는 문서를 접할 수 있을 것이다.

하지만 효과적인 구성 방안, 모범 사례, 검증 방법, 재사용 방안, 혹은 작업 관리 등에 대해서 배울 수 는 없을 것이라고 한다.

 

이러한 이유로 필자는 책을 쓰게 되었다고 한다.😅

 

이 책에서는 무엇을 다루는가?


Chapter 1. 왜 테라폼인가?

어떻게 데브옵스가 소프트웨어 실행 방식을 변화시키고 있는지, 코드형 인프라 도구에 대한 개요, 구성 관리 도구와 배포 도구, 그리고 서버 템플릿, 코드형 인프라의 장점, 테라폼이 셰프, 퍼핏, 앤서블, 솔트스택, 오픈스택 히트, 클라우드포메이션과의 차이점 등을 다룬다.

 

Chapter 2. 테라폼 시작하기

테라폼 설치, 기본적인 문법에 대한 이해, CLI 도구에 대한 이해, 웹 서버 구성 방법, 웹 서버 클러스터 구성 방법, 로드 밸런서 구성 및 배포 방법, 배포된 리소스에 대한 회수 방법 등을 알 수 있다.

 

Chapter 3. 테라폼 상태 관리

테라폼 상태 정보는 무엇이며, 여러 구성원이 접근하는 상태 정보를 효과적으로 관리하는 방법, 교착 상태를 방지하기 위해 상태 정보 파일을 제어하는 방법, 상태 정보 파일을 어떻게 분리하고 오류로부터 영향도를 제한하는 방법, 테라폼 프로젝트의 파일과 폴더 구조의 모범 사례, 읽기 전용 상태 정보를 사용하는 방법 등을 다룬다.

 

Chapter 4. 테라폼 모듈

모듈은 무엇이며, 기본 모듈 만드는 방법, 구성 가능한 모듈을 만드는 방법, 모듈의 이력 관리, 모듈의 팁과 요령, 모듈의 팁과 요령, 모듈을 통한 재사용, 구성 가능한 인프라의 정의 등을 공부한다.

 

Chapter 5. 테라폼의 팁과 요령: 반복문, 조건문, 배포 및 주의사항

고급 테라폼 문법, 반복문, 조건문, 다중 조건문, 무중단 배포, 팁과 주의사항 등을 익힌다.

 

Chapter 6. 테라폼을 팀에서 사용하기

이력 관리, 테라폼 관리의 필수 정책, 개발 가이드라인, 테라폼 스타일, 테라폼의 자동화된 테스트, 문서화, 작업 절차, 테라폼을 통한 자동화 등을 알 수 있다.

 

 

📝 이번 게시물을 만들기 위해 참고한 사이트

1. 책의 실습 예제 코드 페이지(Github)

2. hashicorp/terraform: Terraform 깃허브 저장소

3. 테라폼(Terraform) 공식 홈페이지

Comments