[Infra]IaC란?

황정준·2023년 5월 4일
0

IaC(Infrastructure as Code)

  • GUI나 Console같은 것이 아닌 코드를 통해 인프라를 관리하는 것
  • 관리하려는 인프라를 코드로 작성해두어 재사용이 쉽고 관리가 편한다.
  • 대표적인 예시로 AWS CloudFormation, Terraform이 있음

CloudFormation

  • AWS의 인프라 리소스를 템플릿을 이용해 생성하는 서비스
  • JSON이나 YAML파일로 만든 템플릿을 실행하면 미리 구성된 인프라 리소스를 쉽게 생성 가능

AWS CDK

CDK(Cloud Development Kit)

  • CloudFormation Template을 개발자가 친숙한 프로그래밍언어로 만들 수 있게 해주는 서비스
  • Template을 손으로 직접 짜려고 하면 어려움이 많았음 (JSON, YAML)
  • CDK를 사용하면 친숙한 프로그래밍 언어로 코딩해서 Template을 만들 수 있음

  • 구성
    • APP
      • 기본 구문으로 CDK CLI를 통해 AWS CloudFormation 템플릿을 렌더링하고 배포하는 단위
    • Stack
      • AWS 람다, AWS ECS와 같이 리소스를 표현하는 구문의 집합
    • Constuct
      • AWS 리소스를 정의한 구문
  • 절차
    • CDK를 이용해 소스코드를 작성하고 빌드해서 CloudFormation 템플릿을 생성
    • S3 버킷에 템플릿을 업로드하고 AWS 콘솔이나 AWS SDK를 이용해 CloudFormation에서 스택 생성

Terraform

  • 특정 클라우드 플랫폼과 무관하게 범용적인 클라우드 인프라를 생성할 수 있는 IaC 서비스
  • 고유 언어(HCL)를 이용해 템플릿을 작성함
  • 아래 코드는 예시
resource "aws_instance" "web" {
  ami = "ami-0a93a08544874b3b7" # amzn2-ami-hvm-2.0.20200207.1-x86_64-gp2
  instance_type = "t2.micro"
  key_name = aws_key_pair.web_admin.key_name
  vpc_security_group_ids = [
    aws_security_group.ssh.id,
    data.aws_security_group.default.id
  ]
}

CDK for Terraform

  • CDK는 AWS의 CloudFormation 템플릿을 작성하기 위해 만들어진 서비스
  • 하지만 Terraform 템플릿 작성을 위한 CDK도 개발되었음 (CDKTF)
  • Terraform 템플릿 작성을 프로그래밍 언어로 하고 싶으면 좋은 선택지가 될 수 있음

내 생각엔 Terraform을 사용하면 다양한 플랫폼의 리소스를 코드로 관리할 수 있기 때문에
멀티 클라우드 환경에선 Terraform을 활용하면 좋을 것 같다.

일단 CDK와 AWS CloudFormation만 다뤄봐서 Terraform은 나중에 한번 다뤄봐야겠다.

profile
호기심 많은 주니어 백엔드 개발자입니다.

0개의 댓글