IaC (Infrastructure as Code)
- IaC (Infrastructure as Code)는 인프라를 코드로 관리하는 방법.
- 서버, 네트워크, 데이터베이스 등의 인프라 자원을 코드로 정의하고 관리하는 것.
- 이렇게 하면 인프라 설정을 자동화하고, 버전 관리 시스템을 통해 변경 사항을 추적 가능
- 즉, IaC는 컴퓨터에서 읽을 수 있는 정의 파일을 사용해 인프라나 서비스를 관리하고 프로비저닝하는 프로세
장점
- 속도와 효율성
- 버전 관리
- 협업
- 재사용성
- 기술의 자산화
단점
- 코드 문법 학습
- 파이프라인 통합
- 대상 인프라에 대한 이해 필요
테라폼의 특성
테라폼은 세 가지 중요한 철학이 담겨 있다. 워크플로에 집중, 코드형 인프라(IaC), 실용주의 이다.
- 워크플로(workflow)
- 테라폼은 개발자나 시스템 관리자 등이 일하는 방식과 유사한 '워크플로'를 만들기 위한 도구로 설계
- 워크플로의 대상은 인프라 구성과 배포, 보안 구성이나 계정 추가 작업, 또는 모니터링 도구 설정
- 코드형 인프라(Infrastructure as Code)
- 구현되거나 구성되는 모든 것이 코드로 표현되어야 한다는 의미
- 실용중의(pragmatism)
- 새로운 아이디어 접근 방식, 기술을 다시 평가하고 타협이 아닌 이전의 것이 틀릴 수 있다는 사실을 받아들이는 적응 능력 중요
테라폼으로 인프라를 만들기 위해서는 대상의 제공자(프로바이더)와 각 API 명세를 테라폼 코드로 호출해 동작한다.
테라폼 제공 유형
- On-premise (Open Source)
- 일반적으로 Terraform이라 불리는 형태로, 사용자의 컴퓨팅 환경에 오픈소스 바이너리툴인 테라폼이 구성되며 가장 널리 이용
- Hosted SaaS (Cloud)
- Terraform Cloud로 불리는 서비스형 소프트웨어 (SaaS)로 제공되는 구성 환경으로 하시코프가 관리하는 서버 환경이 제공
- Private Install (Enterprise)
- Terraform Enterprise로 불리는 서버 설치형 구성 환경으로, 기업의 사내 정책에 따라 프로비저닝과 관리가 외부 네트워크와 격리되어 이루어지는 환경
테라폼과 다른 도구의 비교
Terraform | Ansible | CloudFormation | ARM Template | |
유형 | 프로비저닝 | 구성 관리 | 프로비저닝 | 프로비저닝 |
오픈소스 여부 | 공개 | 공개 | 비공개 | 비공개 |
적용 대상 클라우드 | 멀티 | 멀티 | AWS 전용 | Azure 전용 |
정책 설정 | 가능 | 불가능 | 부분적 | 부분적 |
구성 방식 | 이뮤터블 | 뮤터블 | 이뮤터블 | 이뮤터블 |
라이프사이클 관리 | 가능 | 불가능 | 부분적 | 부분적 |
온프레미스 지원 | 부분적 | 부분적 | 불가능 | 불가 |
이뮤터블이란?
인프라스터력처의 상태를 변경할 때, 기존의 인프라스트럭쳐를 수정하거나 업데이트하는 것이 아니라 새로운 인프라스트럭처를 생성하여 이전 상태의 인프라서트럭처를 교체하는 방
출처
https://product.kyobobook.co.kr/detail/S000202478097
'클라우드&인프라 > Terraform' 카테고리의 다른 글
Terraform의 기본 명령어 (작성중) (1) | 2024.08.22 |
---|