회사에서는 아직 IaC 솔루션을 쓰고 있지 않아서, 만약 쓰고 있었다면 그걸 그대로 선택했을 텐데요. 지금은 어떤 도구를 써야 할지 조금 막막한 상황입니다. 환경은 Proxmox를 사용할 예정이고, LXC와 VM을 혼합해서 Ubuntu Server와 SQL Server 인스턴스들을 배포할 계획입니다. 여기에 더해 일부 Azure 리소스도 함께 사용할 생각입니다.
원래는 Terraform을 쓰려고 했는데, 최근에 읽은 글들을 보면 Terraform이 OpenTofu나 Pulumi 쪽으로 점유율을 내주고 있는 것처럼 보여서 고민이 됩니다. 학습 목적과 데이터 엔지니어로서의 커리어/직업 안정성을 기준으로 봤을 때, 제가 선택하기에 명확하게 더 나은 IaC 도구가 있을까요?
상황 설명을 보니, 막막함을 느끼는 게 아주 자연스럽습니다.
IaC를 아직 쓰지 않는 조직에서, 그것도 Proxmox 기반에 LXC/VM 혼합, 여기에 Azure까지 얹으려는 시점이면 “도구를 잘못 고르면 몇 년을 끌고 가야 하는 거 아닌가”라는 부담이 생길 수밖에 없습니다.
결론부터 말씀드리면, 지금 단계에서 ‘명확하게 더 나은 하나의 정답’은 없습니다.
다만 학습 목적과 커리어 안정성이라는 기준으로 보면, 선택지를 꽤 현실적으로 좁힐 수는 있습니다.
먼저 Terraform 이야기를 조금 정리하고 가는 게 좋겠습니다.
요즘 글들을 보면 Terraform이 OpenTofu나 Pulumi에게 점유율을 뺏기는 것처럼 보이기도 하는데, 현업 감각으로 보면 이건 “도태”라기보다는 지형 변화에 가깝습니다.
Terraform은 여전히 IaC의 기준 언어에 가장 가깝습니다.
문서, 예제, 레퍼런스, 기존 코드, 그리고 “IaC 경험이 있다”라고 말할 때 사람들이 머릿속에 떠올리는 모델 자체가 아직은 Terraform 쪽입니다. OpenTofu는 Terraform을 대체한다기보다는, Terraform을 계속 쓰고 싶은 사람들의 현실적인 탈출구에 가깝고, 학습 관점에서는 거의 동일하게 취급해도 무리가 없습니다.
Pulumi는 결이 조금 다릅니다.
개발자 입장에서는 분명 매력적입니다. Python이나 TypeScript로 인프라를 정의할 수 있고, 코드 재사용성도 좋습니다. 다만 이건 장점이자 단점입니다. Pulumi는 “IaC를 잘 아는 개발자”에게는 빠르게 먹히지만, 조직 전체로 확산시키기에는 설명 비용이 더 듭니다. 특히 아직 IaC 문화가 없는 회사라면, 인프라 정의가 일반 코드처럼 보이는 순간 경계가 흐려지기도 합니다.
여기서 환경 이야기를 다시 보면, 중요한 힌트가 하나 있습니다.
Proxmox + LXC/VM + Azure라는 조합입니다.
이 구성은 사실 굉장히 현실적이지만, 동시에 IaC 도구 입장에서는 까다로운 편입니다. AWS/GCP처럼 “Terraform이 거의 표준처럼 먹히는 환경”과는 다릅니다. Proxmox는 공식 Terraform Provider가 있긴 하지만, 모든 기능이 매끄럽게 이어진다고 보기는 어렵고, LXC까지 포함하면 결국 어느 정도는 스크립트나 커스텀 작업이 섞이게 됩니다.
이 점에서 중요한 건,
“어떤 도구가 더 멋지냐”보다
**“도구의 한계가 드러났을 때 내가 이해하고 버틸 수 있느냐”**입니다.
이 기준으로 보면, 처음 선택으로는 Terraform(OpenTofu 포함) 쪽이 여전히 가장 무난합니다.
이유는 단순합니다.
Terraform 계열은 선언형 모델이 명확하고,
“인프라를 상태(State)로 관리한다”는 개념이 가장 교과서적으로 드러납니다.
나중에 다른 도구를 보더라도, 이 사고방식이 기준점이 됩니다.
데이터 엔지니어 커리어 관점에서도 마찬가지입니다.
데이터 플랫폼, MLOps, 분석 인프라 이야기가 나올 때, IaC 경험을 묻는 질문은 대부분 Terraform을 기준으로 나옵니다. Pulumi를 써봤다는 건 플러스가 될 수는 있어도, Terraform을 모른다는 건 여전히 설명이 필요합니다. 반대로 Terraform을 알고 있으면, OpenTofu든 Pulumi든 “아, 그 계열이군요”로 빠르게 이어집니다.
그래서 개인적으로는 이렇게 권하고 싶습니다.
지금은 Terraform(OpenTofu 포함)을 기준 언어처럼 익히는 게 가장 안전한 선택입니다.
실제로는 Terraform을 쓰든 OpenTofu를 쓰든 큰 차이는 없고, 학습 효과도 거의 같습니다. 중요한 건 “상태 관리, 선언형 인프라, 변경 계획(plan)” 같은 개념을 몸에 익히는 겁니다.
그 다음 단계에서,
“코드로 인프라를 더 적극적으로 다루고 싶다”거나
“플랫폼 팀/개발자 중심 조직으로 가고 싶다”는 확신이 생기면
그때 Pulumi를 추가로 보는 게 순서상 자연스럽습니다.
처음부터 Pulumi를 택하는 건,
이미 IaC가 조직에 자리 잡아 있고
개발자 중심으로 인프라를 풀어가겠다는 방향성이 명확할 때 더 잘 맞습니다.
정리하면,
지금의 고민은 도구 선택의 문제가 아니라 기준점을 어디에 둘 것인가의 문제에 가깝습니다.
기준점으로는 여전히 Terraform 계열이 가장 단단합니다.
그 위에 다른 선택지를 얹는 건 언제든 가능합니다.
지금처럼 “아직 아무것도 안 쓰고 있는 상태”에서는,
가장 많은 사람들이 이미 밟아본 길에서 시작하는 게
학습 측면에서도, 커리어 안정성 측면에서도 결국 가장 빠른 길이 되는 경우가 많았습니다.