티스토리 뷰

본 파트에서는 데브옵스(DevOps)에서 주로 사용하는 도구인 Terraform 자동화 도구에 대해 알아보겠다. 우선 IaC (Infrastructure as a Code), 형상관리 (Configuration Management), 그리고 이미지 빌드 (Image Build) 에 대한 내용을 알아본 뒤, 다음 글에서 실제로 Terraform 을 설치 후 환경 설정을 해 보겠다.

 

HashiCorp Terraform

Terraform 은 IaC 의 대표적인 도구이다. 여기서 IaC 는 Infrastructure as a Code 의 약자이다. 말그대로 인프라 자원을 코드로 관리하는 것을 의미한다. 이러한 IaC 도구로는 Hashicorp 의 Terraform, AWS 의 CloudFormation, Pulumi, 그리고 Azure 의 ARM Template 등이 있는데, 나는 여기에서 Hashicorp 의 Terraform 을 주로 다루어볼 예정이다.

 

 

코드로 관리한다는 것의 의미

IaC, 형상관리, 이미지 빌드는 모두 코드로 관리하는 개념이라고 볼 수 있는데, 코드로 관리한다는 개념이 왜 중요할까?

우선 코드로 관리한다는 것은 사람이 직접 처리하는 것이 아니다. 예를 들어, 머신 100대에 동일한 작업은 각 100번씩 수행한다고 가정해 보자. 이 경우 사람이 직접 작업할 경우 중간에 실수를 할 확률이 매우 크다. 이런 상황에서 코드로 인프라를 관리하게 되면 재사용성이 좋아진다. 머신 (가상 환경 등) 1대에 대한 코드를 작성하게 되면 해당 코드를 통해 나머지 99대에 대한 처리를 자동으로 진행할 수 있다.

또한, 코드는 일관적인 상태를 나타내기 때문에 해당 코드로 작업한 100대의 모든 머신에 대해 일관성을 유지할 수 있다.

 

 

IaC의 버전 관리

코드는 결국 소프트웨어 개발에서 사용하는 것이라는 것은 모두 알 것이다. 이 점에서, IaC 또한 버전 관리 시스템 (VCS) 을 사용할 수 있다. 당연히 코드의 버전을 관리할 수 있고, 변경 내용 추적 (Auditing) 을 할 수 있다. AWS 자원을 수동으로 관리한다고 하면, 기존에는 CloudTrail 을 통해 Audit Log 로 모든 사항을 관리해야 하지만, 코드로 관리하게 되면 해당 코드의 변경 내용을 추적하여 Auditing 을 수행할 수 있다.

 

GitHub 와 같은 시스템을 사용한다고 하면 다른 사람과 함께 협업 (Collaboration) 을 하고 있고, Pull Request 와 같은 작업을 통해 Apply 를 통해 팀 내에서 인프라 환경을 체계적으로 관리할 수도 있다.

'인프라 > Terraform' 카테고리의 다른 글

Terraform 다루어보기 (AWS Provider)  (0) 2022.08.19
Intellij HCL 설정하기  (0) 2022.08.16
Terraform 다루어보기 (local_file)  (0) 2022.08.15
Terraform 소개  (0) 2022.08.12
Terraform 설치 및 기본 설정  (0) 2022.08.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함