🌳 고급 인프라
IaC가 뭔가요?
쉽게 이해하기
IaC는 집을 설계도로 짓는 것과 같아요. 수동으로 벽돌을 하나씩 쌓는 대신, 설계도를 작성하면 그대로 집이 지어져요. 설계도를 Git에 저장하고, 수정하고, 버전 관리하듯이 서버와 네트워크도 코드로 관리할 수 있어요. 실수로 뭔가 망가뜨려도 코드로 다시 만들면 돼요.
핵심 정리
IaC는 인프라를 코드로 정의하고 관리하는 방식이에요.
자세히 알아보기
예전에는 서버를 만들려면 관리자 콘솔에 직접 로그인해서 클릭 클릭 클릭... 수십 번 클릭해야 했어요. 문제는 이걸 다시 만들어야 할 때 어떻게 했는지 기억이 안 나고, 팀원마다 다르게 설정해서 환경이 제각각이 된다는 거예요. IaC(Infrastructure as Code)는 이런 문제를 해결해요.
IaC는 서버, 데이터베이스, 네트워크, 로드밸런서 같은 인프라를 코드로 정의해요. 가장 유명한 도구는 Terraform과 AWS CloudFormation이에요. 예를 들어 Terraform으로 'AWS에 t3.medium 인스턴스 3개, RDS PostgreSQL 1개, 로드밸런서 1개 만들어줘'라고 코드로 작성하면, 'terraform apply' 한 줄이면 모든 리소스가 자동으로 생성돼요.
실무에서 IaC의 가장 큰 장점은 재현 가능성이에요. 개발 환경과 똑같은 인프라를 프로덕션에도 만들 수 있고, 재해가 발생해도 코드만 있으면 몇 분 안에 전체 인프라를 다시 구축할 수 있어요. 또 코드라서 Git으로 버전 관리하고, PR로 리뷰하고, 문제 생기면 롤백할 수도 있죠.
IaC는 팀 협업에도 좋아요. 누가 언제 어떤 서버를 만들었는지 커밋 히스토리로 추적할 수 있고, 인프라 변경사항을 코드 리뷰처럼 검토할 수 있어요. 클라우드 비용 폭탄도 방지할 수 있는게, 코드에 리소스가 명시되어 있으니 불필요한 서버가 몰래 돌아가는 일이 없어요. 현대 DevOps에서는 IaC가 거의 필수예요.