IT산업에 종사하면서 도구의 사용법을 익히는 것도 중요하지만, 그 뒷 배경 또한 중요합니다. 오늘은 IAC의 배경부터 관련 도구는 무엇이 있으며, 어떻게 동작하는 지에 대해 알아보는 시간을 가지겠습니다.
▶ Iac
1. 가상화 기술의 발전
VM ware, Hyper-v와 같은 기술을 통해서 여러대의 서버를 더 많이 쉽게 만들 수 있게 되었습니다. 하지만 기하급수적으로 늘어나는 서버들에 대한 프로비저닝과 운영에 대한 이슈가 발생하였습니다. 인력을 무한정으로 늘릴 수 없었기 때문에 서버 구축과 운영에 대한 자동화가 필요했습니다. 이러한 배경에서 프로그래밍 코드로 인프라를 구축/운영할 수 있는 IAC가 생겨나게 되었습니다.
2. Iac란?
IaC(Infrastructure as Code)는 코드로 인프라스트럭처를 관리한다는 개념으로 테라폼에서는 하시코프 설정 언어 HCL(Hashicorp Configuration Language)을 사용해 클라우드 리소스를 선언합니다.
쉽게 말해, 인프라를 사람이 읽을 수 있는 코드로 만들 수 있습니다. 이를 통해 버전 관리, 공유 및 재사용이 가능합니다.
3. Iac 종류
Iac는 영역별로 크게 두 종류로 나눌 수 있습니다.
Iac 종류
설명
종류
Provisioning Tool (프로비저닝 도구)
♠ 일반적으로 운영팀의 담당자가 컴퓨터나 가상 호스트를 사용해 개발팀에서 필요한 라이브러리나 서비스를 설치 하는 것을 의미합니다. 프로비저닝 영역에서는 개발팀이 사용한 코드 버전과 동일한 버전을 사용해 네트워크, VM, DB 등을 구성합니다.
◆ Terraform ◆ Cloudformation
SCM Tool (구성 관리 도구)
♠ 구성관리는 성능부터 H/W 속성과 라이프사이클 전반에 걸친 요구사항, 설계 및 운영 정보 의 일관성 등을 설정하고 유지하기 위한 시스템 프로세스 입니다. 프로비저닝이 인프라에 대한 배포 위주에 진행된다면, 구성관리는 애플리케이션의 구성 설정을 관리 하는 영역입니다.
♠ 수동으로 서버를 생성하는 게 아닌 코드로 생성하기 때문에 서버 운영 및 관리가 모두 자동화 될 수 있습니다. ♠ 예를 들어, AWS에서 새로운 서버를 생성 하기 위해서 AWS 콘솔에 로그인할 필요없이 Terraform 코드를 실행시키기기만 하면 됩니다.
속도 & 안전
♠ 코드로 실행 되기 때문에 사람이 수동으로 작업하는 것 보다 훨씬 빠르며 또한 사람이 직접 할 때 생길 수 있는 실수들을 방지할 수 있습니다.
문서화
♠ 모든 인프라가 코드로 기록 및 관리 되기 때문에 자동으로 문서화가 됩니다. 가장 큰 장점 중에 하나로, 많은 회사에서 인프라를 직접 구현하고 관리한 담당자를 제외하고는 전체 서버를 전부 파악하고 있는 사람이 없는 경우가 많습니다. 하지만 Terraform의 경우에는 새로 들어온 개발자라도 Terraform code를 보면 전체적인 구성을 이해할 수 있습니다.
형상관리
♠ git을 통해 형상관리가 가능하며, 인프라의 변경 기록을 쉽게 볼 수 있습니다.
리뷰 및 테스트
♠ 수동으로 서버 작업을 할 때는, 실제로 실행하기 전에 리뷰 하는 것이 굉장히 힘들수 밖에 없었습니다. 그래서 문제가 발견 되었을 때는 이미 프로덕션 애플리케이션에 영향을 주고 난 후인 경우가 많았는데, Terraform의 경우 코드 리뷰와 테스트를 통해 문제가 실제로 발생 되는 것을 어느 정도 예방할 수 있습니다.
3. Terraform 테라폼 구성
구성은 간단하게 알아보고 자세한 내용은 다음 글에 올려드리겠습니다.
<Terraform 진행순서>
<기본 구성 개념>
구성
설명
프로비저닝 (Provisioning)
♠ 어떤 프로세스나 서비스슬 실행하기 위한 준비 단계 ♠ 크게 네트워크나 컴퓨팅 자원을 준비하는 작업
프로바이더 (Provider)
♠ 테라폼과 외부 서비스를 연결해주는 기능 ♠ 프로바이더로는 AWS, GCP, Azure와 같은 범용 클라우드 서비스를 비롯해 Github, Datadog와 같은 특정 기능을 제공하는 서비스
리소스
♠ 프로바이더가 제공해주는 조작 가능한 대상의 최소 단위 ♠ 예를 들어 AWS 프로바이더는 aws_instance 리소스 타입을 제공하고, 이 리소스 타입을 사용해 Amazon EC2의 가상 머신 리소스를 선언하고 조작하는 것이 가능
계획 (Plan)
♠ 테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업 terraform plan
적용 (apply)
♠ 테라폼 프로젝트 디렉터리 아래의 모든 .tf파일의 내용대로 리소스를 생성, 수정, 삭제하는 일을 적용 ♠ terraform apply
댓글