IaC와 테라폼

2024. 7. 1. 22:40·클라우드&인프라/Terraform

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

 

테라폼으로 시작하는 IaC | 김민수 - 교보문고

테라폼으로 시작하는 IaC | 현업에서 요구하는 진짜 IaC 사용법 테라폼으로 배우는 인프라 운영의 모든 것IaC는 효율적인 데브옵스와 클라우드 자동화 구축을 위해 꼭 필요한 기술로 각광받고 있

product.kyobobook.co.kr

 

'클라우드&인프라 > Terraform' 카테고리의 다른 글

Terraform의 기본 명령어 (작성중)  (1) 2024.08.22
'클라우드&인프라/Terraform' 카테고리의 다른 글
  • Terraform의 기본 명령어 (작성중)
인프라 감자
인프라 감자
  • 인프라 감자
    삶은 인프라
    인프라 감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • 클라우드&인프라 (28)
        • 인프라 공부 (4)
        • AWS 구조와 서비스 (18)
        • 클라우드 공부 (4)
        • Terraform (2)
      • AWS Cloud School (13)
        • project (5)
        • Linux, Network (6)
        • Docker (2)
      • BackEnd (162)
        • JAVA 공부 (15)
        • 알고리즘 공부 (71)
        • MySQL 문제 풀기 (8)
        • 스프링 핵심 원리 - 기본편 (18)
        • 스프링 MVC 1편 (4)
        • 자바 ORM 표준 JPA 프로그래밍 (21)
        • 실전! 스프링 부트와 JPA 활용1 (8)
        • 실전! 스프링 부트와 JPA 활용2 (5)
        • 스프링 데이터 JPA (8)
        • Querydsl (4)
      • 혼자하는 프로젝트 (32)
        • 배달의 민족 클론코딩 (7)
        • 나만의 프로젝트 (10)
        • 스프링 부트로 구현한 웹 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Email
    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    디팬스 게임
    다이나믹 프로그래밍
    linux
    이것이 자바다
    완전탐색
    dp
    조합
    상속
    쿼드 압축
    VPN
    자동 배포
    정렬
    자바
    프로그래머스
    중첩 선언
    네트워크 기본 용어
    querydsl
    백트래킹
    유니온 파인드
    스프링 핵심 원리-기본편
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
인프라 감자
IaC와 테라폼
상단으로

티스토리툴바