IaC

hi2li·2026년 6월 25일

infra

목록 보기
8/9
post-thumbnail

IaC의 등장배경

  • 클라우드 환경에선느 하나의 서비스를 구축하기 위해 다양한 인프라 리소스가 필요하다.
  • 예를 들어 하나의 웹 서비스를 구성할때는 아래와 같은 작업을 진행해야한다.
    VPC 생성
    Subnet 생성
    Internet Gateway 연결
    Route Table 구성
    Security Group 생성
    EC2 생성
    Load Balancer 생성
    IAM Role 생성
    RDS 생성
  • 과거에는 이러한 작업을 AWS콘솔에서 하나씩 클릭하여 생성하였다.
  • 하지만 서비스 규모가 커질 수록 아래와 같은 여러가지 문제가 발생했다.
* 사람마다 설정이 달라질 수 있다.
* 동일한 환경을 다시 구축하기 어렵다.
* 어떤 설정을 변경했는지 추적하기 어렵다.
* 운영 환경과 개발 환경이 서로 달라질 수 있다.
* 사람이 직접 작업하면서 실수가 발생하기 쉽다.

-> 이러한 문제를 해결하기 위해 등장한 개념이 Infrastructure as Code(IaC)이다.






IaC란?

IaC란 인프라를 코드로 정의하고 관리하는 방식이다.

  • 애플리케이션을 코드로 개발하듯이, 인프라도 코드로 작성하여 원하는 상태를 만들어낼 수 있다.




예를 들어 Terraform에서는 다음과 같은 코드로 EC2를 정의할 수 있다.


resource "aws_instance" "web" {
  ami           = "ami-xxxxxxxx"
  instance_type = "t3.micro"
}

그리고 "terraform apply"라는 명령어를 시행하면 테라폼이 aws api를 호출하여 실제 EC2를 생성한다.



이처럼 사람이 직접 콘솔을 클릭하는 대신 코드가 인프라를 생성한다.






IaC는 생성만 하는것이 아니다.

  • Iac는 인프라를 생성만 하는 기술이 아니다.

IaC는 인프라의 원하는 상태를 코드로 정의하고 그 사태에 맞게 유지하는 방식이다.

즉, 생성 뿐만 아니라 변경과 삭제까지 모두 가능하다.
수정사항을 반영하고 terraform apply를 하면 변경사항을 계산해서 필요한 리소스를 수정할 수 있다.






IaC의 장점

  1. 동일한 환경을 언제든지 다시 만들 수 있다. (재현성)
  2. 사람이 실수할 가능성이 줄어든다. (코드이기 때문에 동일설정 실수없이 반복가능)
  3. 변경 이력을 관리할 수 있다. (git으로 관리가능)
  4. 자동화가 가능하다. (CI/CD파이프라인 연동)

IaC는 DevSecOps에서도 중요한 이유

  • IaC는 단순히 자동화를 위한 기술이 아니다.
  • 보안 측면에서도 중요한 역할을 한다.
  • IaC없이 콘솔에서 설정을 하는경우보다 IaC를 사용하여 코드로 작업을 하면 정적 분석 도구를 통해 자동탐지를 할 수 있다.

-> 이를 통해 DevSecOps환경을 구축할 수 있다.






Terraform와 GitOps의 차이

  • 종종 Terraform과 GitOps를 같은 개념으로 오해하는 경우가 있다.

Terraform은 인프라를 코드로 생성, 변경, 삭제하는 IaC도구이다.

GitOps는 Git과 동일한 상태를 일치시키는 운영방ㅅ기이다.

  • Terraform은 일반적으로 사용자가 terraform apply를 실행하거나 CI/CD 파이프라인이 이를 실행할 때 변경을 적용한다.
  • 반면 Git Ops는 Git에 저장된 설정과 실제 클러스터 상태가 다르면 Argo CD가 이를 감지하여 자동으로 다시 동기화한다.






Terraform으로 Kubernetes도 관리할 수 있을까?

  • Terraform에는 Kubernetes Provider가 있기 때문에 Deployment, Service, Namespace 등의 Kubernetes 리소스를 생성할 수도 있다.

  • 하지만 실무에서는 일반적으로 역할을 분리한다.

Terraform은

  • VPC
  • IAM
  • EKS Cluster
  • Load Balancer

와 같은 클러스터 인프라를 생성한다.

반면 Kubernetes 내부에서 실행되는

  • Deployment
  • Pod
  • Service
  • ConfigMap
  • Secret

등은 Kubernetes와 GitOps 도구(예: Argo CD)가 관리하는 경우가 많다.

이는 Kubernetes가 애플리케이션의 배포, 롤링 업데이트, 자동 복구(Self-Healing)와 같은 기능을 지속적으로 수행하기 때문이다.






마무리

IaC는 단순히 인프라를 자동으로 생성하는 기술이 아니다.

인프라를 코드로 정의하고, 원하는 상태를 일관되게 유지하며, 변경 이력을 관리하고, 자동화와 보안까지 연결하는 현대적인 인프라 관리 방식이다.

특히 클라우드 환경에서는 인프라 규모가 커질수록 IaC의 중요성은 더욱 커진다.

profile
Easy come , Easy go

0개의 댓글