![[OSSCA] Terraform 이란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqcbUW%2FbtsIsARDxv2%2FDHx3axOSkn9agKDMAwj8lK%2Fimg.webp)
2024 오픈소스 컨트리뷰션 아카데미 Terraform on Naver Cloud에 참여하게 되었다. 해당 실습을 진행하기 이전, Terraform은 무엇인지 간단하게 정리해보고자 한다.
IaC(Infrastructure as a Code)
Terraform에 대해 본격적으로 알아보기 전, IaC에 대해 우선적으로 알아보고자 한다. 코드형 인프라는 단어 그대로, 인프라를 코드로 정의하고 관리하는 방식을 의미한다. 즉, 이전까지 콘솔을 통해 수동적으로 관리했던 프로세스에서 벗어나 코드를 통해 인프라를 관리하고 프로비저닝 하는 것이 가능하다.
IaC의 장점
기존의 인프라 프로비저닝은 시간과 비용이 많이 소요되는 수동적인 과정이었다. 과거로 가게 되면 데이터 센터의 인프라 프로비저닝을 하는 과정이었지만, 현재는 AWS 콘솔 창에 들어가 인프라 설정을 하면 된다. 하지만, 클라우드 컴퓨팅이 나타나면서 인프라를 구성하는 구성 요소와 수는 늘어나 IaC의 도입으로 인프라 요구사항을 관리함과 동시에 일관성을 높이고 오류를 줄일 수 있게 되었다.
비용 절감
전통적인 인프라 설정은 수동 작업이 많아 인력 비용이 많이 들고, 오류가 발생하더라도 수정하는 추가 비용이 소요된다. 하지만 IaC를 사용하게 된다면 코드로 인프라를 정의하고 자동화된 방식으로 배포가 가능하기에 인력 비용을 줄이는 것이 가능하다. 또한, 자동화된 배포 및 관리 프로세스를 통해 인프라의 효율성을 극대화하고, 자원 낭비를 최소화해 운영 비용을 줄일 수 있다.
배포 속도 향상
전통적인 방식에서는 새로운 서버나 서비스를 설정하기 위해서는 일일히 콘솔에서 찾아가며 조작을 하기에 많은 시간이 소요될 수 있다. 하지만 IaC를 사용하게 되면 코드를 작성하여 자동으로 인프라를 배포할 수 있기에 적은 시간만으로도 새로운 환경을 설정하거나 기존 환경 변경이 가능하다.
오류 감소
수동으로 인프라를 설정하는 과정에서 사람의 실수가 발생할 가능성이 크다. 설정 파일에 오타가 존재하거나, 잘못된 설정, 누락된 설정 등이 존재할 수 있다. 그러나 IaC는 인프라를 코드를 통해 설정하게 되므로 사람의 실수를 줄이고 일관된 설정을 보장할 수 있다. 또한 코드리뷰 및 테스트를 통해서 사전에 오류를 발견하고 수정하는 것 또한 가능하다.
인프라 일관성 향상
IaC는 동일한 코드를 사용해 여러 환경에서 같은 인프라를 배포할 수 있도록 하여 개발 환경, 테스트 환경, 프로덕션 환경 등에서 일관된 설정을 유지할 수 있도록 한다. 이러한 일관된 환경은 버그를 줄이고 환경 간의 차이로 발생하는 문제를 예방하는데 도움을 준다. 또한 IaC는 코드 버전관리를 통해 인프라 설정 변경 이력을 추적할 수 있어 변경 사항을 쉽게 관리하고 복원하는 것이 가능하다.
Terraform 이란?
Terraform은 HashiCorp 사에서 만든 오픈소스 중 하나로, "코드형 인프라" 도구이다. Terraform을 사용하면 프로그래머가 인프라를 안전하고 효율적으로 구축할 수 있을 뿐만 아니라 버전화 하는 것이 가능하다.
GO 언어와 HCL
Terraform은 Go 프로그래밍 언어로 개발이 되었으며 HCL(HashiCorp Configuration Language)을 사용하여 인프라를 선언적으로 정의하는 것이 가능하다. 코드 실행 후에는 테라폼이 작성된 인프라를 프로비저닝하게 된다.
API를 호출해서 명령을 실행하는 절차적인 형태와는 다르게, HCL은 선언적으로 리소스를 정의하여 여러번 테라폼을 실행한다고 해서 여러개의 리소스가 만들어지지는 않는다.
출처
https://learn.microsoft.com/ko-kr/devops/deliver/what-is-infrastructure-as-code
IaC(Infrastructure as Code)란? - Azure DevOps
DevOps 팀이 소스 코드와 동일한 릴리스 파이프라인 및 버전 관리를 사용하여 선언적 모델에서 IaC(Infrastructure as Code)를 관리하는 방법을 알아봅니다.
learn.microsoft.com
https://yozm.wishket.com/magazine/detail/2464/
개발자가 알아두면 좋은 ‘코드형 인프라(IaC)’ 개념 정리 | 요즘IT
소프트웨어 개발 기술의 발전과 함께 코딩을 사용한 ‘인프라스트럭처(Infrastructure)’ 관리 방식 또한 혁신적으로 변화하고 있습니다. 그중에서도 코드로서의 인프라스트럭처라는 개념을 가진
yozm.wishket.com
https://www.redhat.com/ko/topics/automation/what-is-infrastructure-as-code-iac
코드형 인프라(IaC)란? 개념 및 인프라 프로비저닝 자동화 방법
코드형 인프라(Infrastructure as Code, IaC)란 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 뜻합니다. 사용 방법 및 장단점을 살펴 봅니다.
www.redhat.com
'Infra > Terraform' 카테고리의 다른 글
[OSSCA] Terraform Provider 개발(1) - Go API 분석하기 (0) | 2024.07.29 |
---|---|
[OSSCA] Terraform Provider SDK 와 Framework 버전 차이를 알아보자 (1) | 2024.07.24 |
[OSSCA] Terraform Provider 살펴보기 (2) | 2024.07.23 |
[OSSCA] Terraform으로 NCP 사용하기 (6) | 2024.07.23 |
[OSSCA] NCP를 이용하여 인프라 설정하기 (0) | 2024.07.22 |
보안 전공 개발자지만 대학로에서 살고 싶어요
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!