관리 메뉴

밤 늦게까지 여는 카페

terraform 리뷰 - terraform 진짜 쓸만한가...? 본문

DevOps

terraform 리뷰 - terraform 진짜 쓸만한가...?

Jㅐ둥이 2022. 11. 20. 09:03
반응형

안녕하세요. 오늘은 terraform 리뷰를 준비했습니다.

 

1) 간단하게는 terraform으로 토이 프로젝트 스택을 관리해본 경험

2) 회사에서 terraform으로 제품을 관리해본 경험

 

미흡하지만 위의 두 경험을 토대로 terraform을 리뷰해보겠습니다.

 

1. terraform 러닝 커브

혹자는 다음과 같이 실력과 학습 시간을 정리해뒀더라구요.

초보 terraform을 사용할줄만 아는 수준 일주일
중수 terraform code를 리팩토링하고 구조화할 줄 아는 수준 1~3달
고수 terraform의 함수, 모듈과 같은 고급 기능을 자유롭게 쓸 수 있는 수준 3달 이상

참고: https://openupthecloud.com/how-long-to-learn-terraform/

 

 

백엔드 팀에서 terraform을 처음에 도입할 때 일주일 정도 소요되었기 때문에 저도 동의하는 편입니다.

다만, 중수와 고수 부분은 경험해보지 못해서 말씀드리기가 어려운데요.

 

저와 팀의 terraform 숙련도가 초보와 중수 그 사이 어딘가에 있는 가장 큰 이유는

이 정도만 알아도 서비스를 관리하기에 충분했기 때문이라고 생각합니다.

 

2. terraform 장점

우리의 제품은 Dev, QA, Prod 등 3개 이상의 스테이지를 가지고 있습니다.

 

terraform을 사용하기 전에는 Dev 스테이지에서 적용된 변경 사항이

QA, Prod 스테이지에 적용되지 않아서 버그가 발생하는 경우가 종종 있었습니다.

  • vpc, subnet, ec2, rds, elasticache, s3, dynamodb, ssm, ecs 등 다양한 aws 서비스를 사용하다보니 실수가 발생하더라구요 ㅜ

 

terraform을 사용하면서부터는 script에 체계적으로 관리가 되서 운영 상의 실수가 줄었습니다.

  • terraform cloud까지 사용하니 terraform 스크립트의 실행, 보관 문제가 해결!

그리고 서비스 스택을 따로 문서를 남기지 않아도 되서 정말 좋습니다.

물론 script만 본다고 전체 구조가 설명되는 것은 아니지만 개발자가 모든 클라우드 서비스를 외울 필요는 없어졌습니다.

 

3. terraform 단점

개인적으로 terraform script의 가장 큰 단점은 호환성이라고 생각합니다.

 

클라우드 서비스의 최신 기능을 사용하기 위해서는 최신 버전의 terraform을 사용해야 하는데

하위 호환성이 보장되지 않는 경우가 많습니다!

  • 서비스 개발하기도 바쁜데 terraform script 작업은 언제하냐구요! ㅜㅠ

 

심지어 호환성 문제 때문에 기존 RDS가 삭제되고 새롭게 생성되어 데이터가 초기화 되는 경우도 있었습니다.

  • 백업을 안한, terraform plan 결과를 제대로 읽지 않은 문제도 크지만 그렇다고 지워버리다니 ㅜㅠ
  • 다행히 캐시 레이어가 있어서 데이터를 복구시킬 수 있었지만 다시 경험하고 싶지는 않습니다...

 

terraform도 유지보수가 필요한 프로젝트가 된다는 것 기억하셔야 합니다.

 

+ 각 프로바이더 별로 인프라를 관리하는 서비스가 있습니다.

해당 인프라에 완전히 종속될 계획이라면 굳이 terraform을 사용해서 얻는 장점은 없습니다.

 

4. 총평

1) 사용해야 하는 클라우드 서비스가 5 종류 이상이고,

2) 다양한 문제를 해결하기 위해서 새로운 서비스를 활용해야 하는 경우가 많고,

3) 여러 스테이지를 운영해야 하거나 고객 별로 전용 서버를 제공해야 한다면,

 

운영하는 서비스가 위의 3가지 중 2가지 이상에 해당된다면 terraform 사용을 추천드립니다.

그렇지 않다면 terraform 도입을 다시 한번 검토드리는 것을 추천드립니다.

 

분명 IaC는 흥미롭고 매력적인 분야지만 불필요한 일감을 늘리고 싶지 않다면 검토는 필수입니다 :) 

반응형