brunch

You can make anything
by writing

C.S.Lewis

by Devlift Dec 26. 2022

Infrastructure as Code 의 세계

feat. Terraform

스타트업 전문 DevOps/SRE 컨설팅 및 교육 서비스를 제공하는 Devlift 입니다. 저희는 싱가포르와 한국에서 근무하는 DevOps/SRE 현직자로 이뤄져 있는 팀입니다.


Devlift에서 발신하는 컨텐츠에 관심이 있으신 분들은 링크 통해서 이메일 남겨주시면 주기적으로 다양한 DevOps/SRE 컨텐츠 및 강의 할인 정보 등을 전달해드릴게요.






오늘은 Infrastructure as Code (이하 IaC) 에 대해서 얘기해보려고 합니다.


IaC 를 지금 활용하고 계시거나, 혹은 들어보신적이 있으신가요? IaC 의 말 뜻 그대로 인프라를 코드로 관리한다고만 어렴풋이 알고 계신 분이 많을 것 같아요. 틀린 말은 아니지만 IaC 를 조금 더 깊이있게 공부하거나 직접 써보게 된다면, 더 많은 장점이 있다는 것을 알게 되실 거에요. 그 중에서도 테라폼은 IaC 를 위한 가장 유명하고 편리한 툴이기때문에 한 번 쯤 써보시면 좋을 것 같습니다.


다만 아직 인프라의 규모가 크지 않아서 AWS 콘솔만으로 관리가 가능하거나, 다른 많은 업무로 인해 리소스의 여유가 없기 때문에 IaC 도입에 대해 아직은 고려하지 않으실 수도 있는데요. 하지만 언젠가는 반드시 필요한 기술이라 생각하고, IaC 의 대표적인 장점에 대해서 알아보도록 하겠습니다.



[인프라 히스토리 관리]


AWS 를 사용하다보면 언제, 누가 그리고 왜 생긴지 모르는 인프라들이 수시로 발견됩니다. 여러분들은 이럴때 어떻게 하시나요? 해당 인프라의 히스토리를 알고 있을 법한 고인물(?) 동료 직원에게 물어보시나요? 아니면 '에라 모르겠다' 하면서 그냥 삭제하신 적은 있으신가요? 혹은 '나중의 누군가가 지우겠지' 라며 그냥 덮으신 적도 있으실 거에요. 이렇게 불필요한 인프라는 우리가 인지하지 못하는 사이에 생겨나고 있습니다.


하지만 이런 인프라를 코드로 관리한다면 어떨까요? 다들 개발을 하시면서 어느 정도는 Github 등의 코드 관리 툴을 사용해보셨을 텐데요. 이러한 개발 코드와 마찬가지로 인프라의 코드 또한 Github 을 통해서 누가 언제 Commit & Push 를 했는지 확인할 수 있고, Commit message 를 통해서 어떠한 이유로 생성/수정/삭제 되었는지도 알 수 있습니다. 인프라 코드 또한 개발 코드와 동일한 수준으로 관리되는 것이죠.


뿐만 아니라 Github 의 PR 을 통해서 인프라 관련 요청들을 받기도 편해지는 장점이 있습니다. 누군가가 테스트용 인프라가 필요하다고 막 만들기 보다는, 데브옵스팀 혹은 동료 직원에게 PR 을 통해 확인을 받고 생성을 한다면 히스토리 관리가 더욱 간편해지고 잘못된 설정들도 피드백 받을 수 있습니다.



[동일한 인프라 구성]


개발팀 인원이 일정 수준 이상이 되면, 여러 개의 개발 환경이 필요한 순간이 옵니다. 이런 환경들은 거의 동일한 구성을 가지고 있습니다. 이런 동일한 환경을 '똑같이' 여러 세트 더 구성해야되는 거죠. 당연히 원본 인프라가 있으니 그걸 보고 똑같이 AWS 콘솔에서 생성하면 되겠죠? 하지만 단순히 EC2, RDS 몇 개만 띄운다고 되는 건 아닙니다. 인프라의 갯수가 상당히 많거나 우리가 알지 못하던 숨어있는 인프라가 있을 수도 있죠.


이럴 때 IaC 를 통해 동일한 환경을 구성하면 정확하고 빠르게 처리할 수 있습니다. 코드로 관리되기 때문에 인프라의 갯수가 많더라도 코드 몇 줄이 추가될 뿐이고, 빠트리는 인프라 없이 동일한 환경을 구성할 수 있습니다. AWS 콘솔에서 클릭으로 생성하는 작업은 동일한 작업을 반복하는 작업이기 때문에 피로도가 높고 실수가 발생할 확률이 높습니다. 하지만 코드를 통해 관리하면 보다 훨씬 빠르고 정확하고, 동료들의 피드백도 받을 수 있는 장점이 있습니다.


특히 테라폼의 Module 을 통해서 구성한다면, 중복되는 코드를 최소화해서 관리도 매우 쉬워집니다. 단순히 코드의 복사+붙여넣기를 넘어서서, 잘 짜여진 모듈화된 코드를 활용한다면 몇 분 사이에 하나의 세트가 구성되는 모습을 보실 수 있습니다.



[마치며]


이제 IaC 는 선택이 아니라 필수라고 생각합니다. 처음에는 러닝 커브 등으로 인해서 리소스가 많이 든다고 느껴질 수도 있습니다. 하지만 조금만 적응이 된다면, 예전에 인프라를 AWS 콘솔로 어떻게 관리했을까 싶을 정도로 그 장점이 크다고 느껴집니다.


인프라가 더 커지기전에 하루라도 빨리 IaC 의 세계로 오세요!

작가의 이전글 컨테이너를 통한 서비스의 확장

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari