15P by ironlung 2023-10-28 | favorite | 댓글과 토론
  • 이제는 AWS 콘솔에서 클릭 몇 번으로 서버 배포, 명령어 한 줄로 다양한 인프라 구축하는 시대
  • IaC
    • 코드로 인프라 관리하고 프로비저닝 하는 것
    • 우리가 원하는 네트워크, 서버 스토리지 등을 모두 코드로 저장, 관리
    • 이로써 코드 공유, 테스트, 재사용해 인프라를 더 생산성있게 관리
  • Terraform
    • Terraform은 IaC 중에서 가장 유명한 도구
    • AWS, GCP, Azure 같은 클라우드뿐만 아니라 사내 솔루션까지 모두 관리함
    • 원하는 최종 결과 정의하는 선언형 방식 사용해 결과 예측 쉬움
    • 코드를 재사용하더라도 같은 결과 보장함
    • terraform plan을 하면 AWS에서 어떻게 생성될지 구체적 계획 세움
    • terraform apply 통해 실제 적용
    • Terraform으로 생성된 리소스 정보를 tfstate라는 JSON 파일로 관리
  • Terraform 사용 방식
    • 여러 키워드로 유저 입력 받아 리소스 생성, 실행 결과를 CLI 상에 출력하는 기능 제공
      • Provider
        • 리소스 유형 구현하는 플러그인
        • AWS, GCP 같이 사용하는 클라우드 플랫폼과 서비스의 provider 찾아 구성에 추가, 해당 리소스 사용해 인프라 프로비저닝
      • Module
        • 관련 리소스 그룹을 단일 리소스인 것처럼 관리하는, 재사용 가능한 작은 Terraform 구성
        • 다른 사람이 만든 모듈도 자유롭게 활용해 적은 코드로 많은 리소스를 효율적으로 관리함
        • 구성을 다르게 해서 같은 모듈을 여러번 호출
      • Resource
        • 가상 네트워크, 컴퓨팅 인스턴스 또는 DNS 레코드와 같은 상위 수준 구성 요소와 같은 하나 이상의 인프라 개체 설명하는 키워드
      • Variable
        • 입력 변수는 모듈의 소스 코드 변경하지 않고 리소스 속성 지정함
        • 프로그래밍 언어의 함수 매개 변수와 비슷함
        • 입력 변수 통해 모듈을 더 유연하게 공유하고 재사용함
      • Output
        • 출력값은 명령줄에서 사용하는 인프라 정보 만들고, 사용할 다른 Terraform 구성 정보 노출할 수 있음
        • 프로그래밍 언어의 반환값과 비슷함