It's Time to Retire Terraform
Medium
IaC(Infrastructure as Code) 도구로 유명한 Terraform이 큰 인기가 있지만 지금 시점에서는 문제가 더 많아서 은퇴할 때가 되었다고 얘기하는 글입니다.
이 글에서는 사용패턴이 복잡하고 Drift 관리가 어려우며(여기서 Drift라는 것은 IaC로 관리하지만 다양한 이유로 실제 클라우드 리소스에는 변경이 생겨서 코드와 실제와의 차이가 생긴 것을 의미합니다.) 클라우드 종속적이지 않다고 얘기하지만 실제로는 다 다르게 작성해야 하기 때문에 큰 의미가 없고 Terraform 코드를 협업할 사람이 많아지면 더욱 관리가 어려운 문제가 있다고 얘기하고 있습니다.
물론 이 글에서는 최근 라이센스 변경으로 OpenTofu 포크가 생기는 등의 상황을 지적하며 Kubernetes Operator 패턴이 대안이 될 수 있다고 얘기합니다. 물론 글을 쓴 사람이 Konfig라는 Kubernetes Operator 솔루션을 만드는 회사라는 걸 감안해야 하지만 솔루션을 만든거 자체가 이러한 부분이 대안이 될 수 있을 거라고 생각하고 만들었을테니 거짓을 얘기한다고 하는 것은 아닙니다.
저는 Terraform을 무척 좋아하고 2016년부터 Terraform을 도입해서 다양한 곳에 적용하고 여러 곳에서 Terraform 관련 발표도 하고 HashiConf도 여러차례 참석했습니다. Terraform이 크게 알린 IaC라는 개념도 좋아하고 있습니다.
클라우드가 유행하면서 사용하기가 기존보다 편해졌지만 개인적으로 Programmable해졌다는 점을 가장 크게 생각하고 있습니다. 기존 웹 콘솔에서 리소스를 관리하는 경우 아주 소규모일때는 큰 문제가 없지만 인프라가 성장하면서 금방 관리가 어려워지게 됩니다. IaC는 오랜 기간의 소프트웨어 노하우가 인프라에 적용된 것으로 히스토리 관리와 리뷰도 쉬워지고 적용때 Terraform이 plan후 apply하게 해주어서 영향도가 큰 인프라 작업의 실수를 크게 줄여줄 수 있었다고 생각합니다.
여전히 좋아함에도 이글의 주장을 어느정도 동의합니다. 개인적으로 Terraform을 IaC 도구의 1세대 정도로 생각하는데 이제 나온지 10년이 되어가는 시점에서 그 한계가 어느정도 보여진다고 생각합니다. 최근에는 프로그래밍 언어는 사용하는 Pulumi나 CDK등이 있지만 그 형태가 사용 경험이 저는 Terraform에 비해서 크게 달라지지 않아서 한계도 비슷하다고 보고 있습니다. 그래서 다음 세대라기 보다는 1.5세대 정도로 보고 있습니다.
Konfig라는 도구는 이번에 처음 알게되었지만 몇년전 Terraform의 다음 세대 대안으로 Crossplane을 보고 비슷한 생각을 한적이 있습니다. 이도 마찬가지로 Kubernetes Operator를 이용해서 실제 리소스를 항상 싱크하기 때문에 Drift 문제를 어느정도 해결할 수 있고 아무래도 Kubernetes로 서비스를 운영하면 참조등 써먹을 수 있는 부분이 많겠다고 생각했습니다. 당시 Crossplane을 봤을 때는 너무 초기 프로젝트가 동작 정도만 파악한 정도인데 개념은 좋다고 하더라도 실제 도입할 때는 어떤 문제가 다른 단점이 있을지 모르기 때문에 실제로 Kubernetes Operator가 좋은 대안이 될지는 두고 봐야할 문제기긴 합니다.
https://blog.realkinetic.com/its-time-to-retire-terraform-30545fd5f186
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 5월 11일 오전 5:32