We are Architect

테라폼: 테라폼과 다른 코드형 인프라 도구 비교 (2) 본문

Terraform

테라폼: 테라폼과 다른 코드형 인프라 도구 비교 (2)

the best infra 2025. 1. 5. 19:58

 

* 구성관리 vs 프로비저닝

  • 셰프, 퍼핏, 앤서블, 솔트스택은 구성 관리 도구이다.
  • 클라우드 포메이션, 테라폼, 오픈스택 히트는 프로비저닝 도구이다.
  • 물론 구성 관리 도구가 프로비저닝 도구의 기능을 수행할 수도 있고 그 반대의 역할도 부분 가능하다.
  • 그렇기 때문에 목적에 맞게 사용해야 한다.
  • 혹은 도구를 섞어서 사용해야 하는 상황도 고려해야 한다.

 

 

* 가변 인프라 vs 불변 인프라

  • 셰프, 퍼핏, 앤서블, 솔트스택과 같은 경우 관리 도구들은 가변 인프라를 구성하는 데 사용된다.
  • 즉 계속해서 서버에 SW를 업그레이드를 자동으로 시키고 변경 기록을 작성시킨다.
  • 지속적인 업그레이드는 버그가 발생 할 수도 있는 우려가 있다. 
  • 테라폼과 같은 프로비전 도구들은 불변 인프라를 구성하는 데 사용된다.
  • 즉, 완전히 새롭게 모든 서버 및 SW를 설치한다. 
  • 그러면 완전히 모든것이 새롭게 설치되고 중간에 변경될 일이 없기 때문에 버그가 생길 우려가 덜하다.

 

 

* 절차적 언어 vs 선언적 언어

  • 앤서블은 절차적 언어이다. 
  • 예를 들어 기존에는 10대가 존재하고 앤서블로 구성하였을 경우는 다음과 같다.
- ec2:
	count: 10
	image: ami-1234567
	instance_type: t2.micro

 

  • 여기서 5대를 추가적으로 구성해야한다. 그러면 이전에 사용되었던 코드는 유용하지 않기에 추가적으로 5대를 더 구현해 줘 여한다. 즉 수정이 불가하다는 소리다. 만약 10에서 15로 수정하였다면 서버는 총 15대가 추가 서버로 15대를 더 구성할 것이다. 
# 앤서블
- ec2:
	count: 10
	image: ami-1234567
	instance_type: t2.micro

- ec2:
	count: 5
	image: ami-1234567
	instance_type: t2.micro

 

  • 테라폼은 선언적 언어이다. 즉 과거에 있었던 상태를 인지하고 서버를 추가 하거나 제거하는 방법을 파악한다.
  • 즉 기존에 몆개가 있었던 총 15대를 만들고 싶으면 코드를 수정하면 된다.
  • 대신 다른 이미지에 애플리케이션을 배포하려면 코드를 추가적으로 작성시켜줘야 한다. 
# 테라폼
resource "aws_instance" "example" {
	count         = 15
	ami   	      = "ami-123456"
	instance_type = "t2.micro" 
}

 

 

* 마스터 서버 유무

  • 셰프, 퍼핏, 솔트스택 도구들은 인프라 상태를 저장하고 업데이트를 배포하기 위해 마스터 서버를 실행.
  • 업데이트를 하려면 CLI클라이언트를 설치하고 서버에 새 명령을 실행해야 한다.
  • 이런 도구들은 엔터프라이즈 콘솔과 같은 웹 인터페이스를 제공하고 상황을 쉽게 확인할 수 있다. 
  • 마스터 서버의 장점은 인프라 상태 관리를 할 수 있는 유일한 중앙 저장소 역할을 한다.
  • 또 하나의 장점은 마스터 서버는 백그라운드에서 지속적으로 실행되어, 구성의 일관성을 유지할 수 있다.
    • 무슨 소리냐면 누군가 서버를 수동으로 변경해도 마스터 서버에서 복원이 가능하다.
  • 마스터 서버의 단점은 클러스터링 된 서버가 필요하다. 그리고 서버이기 때문에 유지관리도 필요하고 다른 서버와 통신할 방법과 마스터 서버에 접속할 수 있는 권한 및 보안을 신경 써야 한다. 
  • 셰프, 퍼핏, 솔트스택 도구들도 마스터 서버가 없는 환경에서도 실행할 수 있는 다양한 옵션을 제공한다. 
  • 반면 앤서블, 클라우드 포메이션, 오픈스택 히드, 테라폼은 마스터 서버가 없어도 사용 가능한 도구다.
  • 물론 일부 서버는 마스터 서버에 의존할 수 있지만 이미 사용 중인 인프라의 일부이며 관리해야 할 추가적인 요소는 아니다. 

 

 

* 에이전트의 유무

  • 셰프, 퍼핏, 솔트스택 도구들은 서버에 소프트웨어를 설치해야 한다. 에이전트는 일반적으로 각 서버의 백그라운드에서 실행되며 구성 관리 업데이트의 설치를 담당한다.
  • 그러나  앤서블, 클라우드 포메이션, 오픈스택 히드, 테라폼은 에이전트를 설치할 필요가 없다. 정확히 이야기 하면 일부는 사용하지만 일부는 인프라의 일부로 설치되어 있다. 

 

 

* 커뮤니티의 활성정도

  •  커뮤니티 활성화가 잘 되어 있으면 버그 수정 및 다양한 정보들을 얻을 수 있기 때문에 사용자가 증가한다. 
  • 그럼 해당 툴을 사용하는데 있어서 편리하기도 하고 다양하게 응용이 가능하다.
  • 대표적으로 IaC 툴중에 Terraform, 앤서블, 그리고 최근 부상하는 플루미( Pulumi ) 등이 잘 커뮤니터가 활성화되어 있다. 

 

* 성숙한 기술 vs 최첨단 기술

  • 테라폼은 비교적 다른 IaC 툴들에 비해 최근나온 툴이다. 
  • 물론 기술이 그만큼 유용하고 또 응용이 가능하나 안정되지 않은 부분도 존재할 것이다. 
  • 반면 옛날 IaC툴들은 안정적인 면이 많을것이고 또한 숙련이 있어서 가이드라인 또한 잘되어 있을 수도 있다.
  • 다만 옛날 기술이라 효율적이지 못한면도 존재한다.

 

 

'Terraform' 카테고리의 다른 글

테라폼 기본 사용법(3)  (0) 2025.01.10
테라폼: 코드형 인프라 ? (1)  (0) 2025.01.05