Code States/TIL

[0512] Infrastructure as Code - Terraform

ki1111m2 2023. 5. 12. 16:08

학습 목표

  • Infrastructure as Code(이하 IaC)의 의미와 필요성을 이해할 수 있다.
    • 수동으로 인프라를 설정하는 것의 장/단점을 파악할 수 있다.
    • IaC의 장점을 파악할 수 있다.
  • IaC의 종류를 파악할 수 있다.
    • 선언형 IaC와 절차형 IaC의 차이를 이해할 수 있다.
  • 테라폼의 특징 및 장점을 통해 테라폼의 주 사용 목적을 이해할 수 있다.
  • 예상치 못한 인프라 변경을 어떻게 대비하는지 이해할 수 있다.
    • 불변(Immutable)한 인프라를 구성한다는 것의 의미를 이해할 수 있다.
  • 테라폼의 작동 원리를 이해할 수 있다.
    • 테라폼 공식 문서를 통해, HCL 언어로 인프라를 구성할 수 있다.
    • 주요 명령어를 이해할 수 있다.
    • 테라폼 상태 파일의 의미를 이해할 수 있다.
    • 테라폼 상태 파일을 이용한 운영의 모범 사례를 이해할 수 있다.
  • AWS VPC 구성을 더욱 잘 이해할 수 있다.
    • VPC 및 public/private 서브넷에 대한 개념을 보다 더 확실하게 이해할 수 있다.

  • IaC 종류
    • 절차형 IaC
      • 프로그래밍 언어를 이용해서 직접 순차적으로 인프라를 생성하도록 코드를 작성하는 방법
      • 선언형에 비해 더 강력한 일들을 할 수 있으나, 실제 적용된 결과를 가늠하기 어렵고, 코드를 읽기에 직관적이지 않음
      • 종류
        • AWS DCK
        • Pulumi
    • 선언형 IaC
      • 선언형 언어 JSON, YAML 등을 사용함
      • 실제 인프라가 적용된 결과(기대하는 상태)와 적용할 내용(YAML 등)이 직관적으로 매핑됨
      • 종류
        • CloudFormation(AWS에서만 사용 가능)
        • Azure Blueprint(Azure에서만 사용 가능)
        • Cloud Deployment Manager(GCP에서만 사용 가능)
        • Terraform(어떤 클라우드 서비스에서도 적용되는 범용 IaC 도구)
  • HashiCorp의 IaC 도구
  • 사람이 읽을 수 있는 선언적 구성 파일에서 리소스와 인프라를 정의하고, 인프라의 수명 ㅈ ㅜ기를 관리할 수 있음
  • 장점
    • 여러 클라우드 플랫폼에서 인프라를 관리할 수 있음
    • 사람이 읽을 수 있는 구성 언어는 IaC를 빠르게 작성하는 데 도움이 됨
    • Terraform의 상태를 사용하면 배포 전체에서 리소스 변경 사항을 추적할 수 있음
    • 버전 제어에 대한 구성을 커밋하여 인프라에서 안전하게 협업할 수 있음

https://developer.hashicorp.com/terraform/tutorials/aws-get-started


되게 신기하다 .. 

콘솔에서 하나하나 찍던 거를 문서 하나로 뚝딱 만드는 게 넘 신기하고 편리해보이고

휴먼에러의 실수가 줄어든다는 IaC의 장점이 확실하게 와닿는 거 같다