IaC (Infrastructure as Code)로 시작하자!

maketheworldwise·2022년 4월 26일
0


이 글의 목적?

내가 가장 신경을 쓰지 않았던 영역이 바로 인프라 영역이다. 취업 준비를 하던 시절에는 간단하게 프리티어로 EC2 정도로만 띄워놓고 개발을 진행하다 보니 크게 신경을 쓰지 않았지만, 현재 회사에서 서버와 관련된 모든 업무를 혼자서 맡아보니 꽤 골때리는(?) 영역이라는 것을 경험했다.

인프라를 어떻게 효율적으로 구성하고 운영할 수 있을까?

IaC

내 의문을 해결할 수 있는 녀석이 바로 IaC (Infrastructure as Code)였다. 말 그대로 인프라를 코드로 다룬다는 의미다. IaC가 가지는 장점으로는 비용 절감, 배포 속도 향상, 오류 감소, 인프라 일관성 향상, 구성 변동 제거 등이 있다. DevOps에게는 중요한 부분을 차지한다고 하니 더 알아야한다고 생각이 들었다. 😤

IaC를 대표하는 툴은 다음과 같다.

  • Chef
  • Puppet
  • Ansible
  • Saltstack
  • Terraform
  • AWS CloudFormation

이 중에서도 내가 가장 많이 사용할 것 같은 툴은 Ansible, Terraform 정도가 될 것 같다.

💡 Ansible vs Terraform?

Terraform은 Orchestration Tool이고 Ansible은 Configuration Management Tool이다. 이 두 개의 툴은 비슷하면서도 다른 목적으로 만들어졌다고 한다. 개인적으로 느낀바로는 - Terraform은 변하지 않는 인프라 구조를 "구축"할 때 사용하고 Ansible은 인프라를 "관리"할 때 사용한다고 느꼈다. 해당 내용에 대한 부분은 내가 좀 더 툴들에 익숙해지고 나서 다시 정리해보자.

내가 생각하는 장점?

첫 번째는 - 아직 경험해보지 않았지만, Stage 환경에서의 인프라 구성에 굉장히 편리할 것 같다는 생각이 들었다. Stage 환경이라고 한다면 실제 운영하고 있는 서버 인프라들과 동일한 구성으로 구축이 되어야 하는데, 간단하게 코드만으로 내렸다 올렸다 할 수 있다는 점에서 업무의 효율을 향상 시킬 수 있겠다고 생각했다.

두 번째로는 내가 구성한 인프라에 대한 기록을 남길 수 있다는 점이다. 이전에 AWS 콘솔만으로 인프라를 구축했을 때는 내가 어떤 설정을 했는지 매번 기억을 하거나 확인하는 점에서 힘들었다. 하지만 코드로 인프라를 구성했을 때는 이러한 불편함들이 모두 해소가 된다. 적절한 문장이라고는 생각하지 않지만 - 인프라 가독성(?)이 향상되었다고 표현할 수 있을 것 같다. 그리고 이러한 가독성 향상은 인수인계의 편리함으로도 이어진다고 생각한다.


앞으로 인프라와 관련된 글들은 IaC 툴들을 적극적으로 활용해보자. 🔥

이 글의 레퍼런스

profile
세상을 현명하게 이끌어갈 나의 성장 일기 📓

0개의 댓글