203. 인프라스트럭처 애즈 코드 (IaC) - Infrastructure as Code 테라폼(Terraform) 자동화 멱등성 클라우드 배포 형상 관리 프로비저닝 Ansible
핵심 인사이트: (마우스 클릭질의 멸망과 코딩의 승리) 옛날엔 아마존(AWS) 서버 1대를 만들려면 관리자가 웹사이트에 들어가서 1. [서버 생성] 버튼 누르고, 2. [비밀번호 치고], 3. [방화벽 포트 80번 열고]... 마우스 클릭만 50번을 했다. 100대를 만들어야 하면 밤을 새우며 5,000번을 클릭하다 졸아서 10번 서버 방화벽을 안 열어버려 회사가 털렸다. "야 이 미개한 놈아!! 21세기에 언제까지 인프라(쇳덩어리)를 마우스 딸깍질로 만들고 세팅할래!! 당장 멈춰!! 네가 클릭하던 그 복잡한 50개의 서버 설정 옵션들을 전부
서버=100대, 방화벽=80번오픈이라고 아주 예쁘고 명확한 '영문 텍스트 코드(Code)' 메모장 파일 1장으로 짜 놔!! 그리고 그 메모장(코드)을 테라폼(Terraform) 로봇한테 던져줘! 그럼 로봇이 코드를 쓱 읽더니, 지가 알아서 아마존에 날아가 1분 만에 100대의 서버와 방화벽을 오차 0.001%도 없이 완벽하게 똑같이 찍어내(프로비저닝) 주잖아!!" 거대한 쇳덩어리 인프라를 프로그래머의 키보드(코드) 통제 아래로 무릎 꿇린 클라우드 시대 최고의 흑마법, IaC다.
Ⅰ. 수동(Manual) 인프라 구축의 끔찍한 비극
- 휴먼 에러 (Human Error): 개발계 서버를 마우스 클릭으로 예쁘게 1대 팠습니다. 똑같이 상용(운영) 서버를 1대 더 파는데, 사람이 졸아서 체크 박스 1개를 놓쳤습니다. 운영 서버만 뻗는 원인 불명의 호러쇼가 터집니다.
- 문서화의 부재: 선배 관리자가 퇴사했습니다. "이 24번 서버 도대체 방화벽 어떻게 뚫어놨어?!" 아무도 모릅니다. 서버에 일일이 접속해서
config파일을 다 까봐야 하는 생고생을 합니다.
Ⅱ. IaC (Infrastructure as Code)의 개념 🌟
- Infrastructure(쇳덩어리 인프라) + as (마치 ~처럼) + Code (소스 코드)
- 개념: 시스템 관리자가 AWS 콘솔 화면을 마우스로 클릭하며 수동으로 서버나 네트워크, DB를 생성(프로비저닝)하는 원시적인 짓을 완전히 버리고, 우리가 자바 프로그래밍을 하듯 인프라의 '원하는 최종 상태(Desired State)'를 스크립트 코드(JSON, YAML, HCL 등)로 작성하여 로봇(툴)이 이를 읽고 자동으로 인프라를 무한 똑같이 척척 구축하고 관리하게 만드는 데브옵스(DevOps)의 핵심 관행입니다.
Ⅲ. IaC가 세상을 부숴버린 3대 혁명 (왜 쓰는가?) 🌟 핵심 🌟
1. 극강의 멱등성 (Idempotence) 보장 🌟 기출 단골 🌟
- 멱등성이란 **"내가 이 코드를 1번 실행하든 10,000번 실행하든, 그 최종 결과물 상태는 하늘이 두 쪽 나도 항상 똑같이 유지된다"**는 우주 최강의 성질입니다.
- 마우스로 서버 추가 버튼을 5번 누르면? 에러가 나거나 똑같은 서버 5대가 튀어나와버립니다.
- IaC 코드에
server_count = 3이라고 적어놓고 실행 버튼을 100번 누르면? 툴이 아마존을 쓱 보고 "어? 이미 3대 예쁘게 떠 있네?" 하고는 아무 짓도 안 하고 스킵합니다(항상 3대라는 결과 유지). 이 멱등성 덕분에 인프라의 상태가 꼬일 일이 0%로 차단됩니다.
2. 형상 관리 (버전 관리 Git)의 기적
- 인프라(서버 100대 세팅)가 쇳덩어리가 아니라 고작 **'메모장 텍스트 파일 1개'**로 변했습니다!
- 즉, 프로그래머들이 코드를 저장하는 깃허브(Git)에 이 인프라 텍스트 코드를 올려놓고
버전 1.0,버전 2.0관리가 가능해집니다. - "야, 방화벽 규칙 바꿨더니 해킹당했어!" ➜ 예전엔 수동으로 다 찾아 껐지만, 이젠 Git에서
버전 1.0코드로Revert(되돌리기)1초 딸깍 한 방 쳐주면 수백 대의 아마존 서버 방화벽이 1초 만에 싹 롤백되어 과거로 돌아갑니다.
3. 무한 복제의 완벽한 환경 통일 (Dev/Prod Parity)
- 이 텍스트 코드 1장만 있으면, 한국에 띄웠던 서버 100대 아키텍처를, 미국 아마존(AWS) 리전에 단 1분 만에 100% 토시 하나 안 틀리고 쌍둥이처럼 똑같이 다시 찍어낼 수 있습니다. "내 자리에선 되는데?" 변명이 지구상에서 멸종합니다.
Ⅳ. 천하를 양분한 IaC 2대장 툴 (테라폼 vs 앤서블)
- 테라폼 (Terraform) 🌟: 인프라의 '뼈대 창조' 1타 강사. AWS에 가상 기계(VM)를 파고, 랜선 네트워크를 뚫고 뼈대를 올리는 일(프로비저닝)에 미친 성능을 냅니다.
- 앤서블 (Ansible): 뼈대는 파져있을 때, 그 기계 안으로 쓱 들어가서 **'내부 세팅'**을 조지는 1타 강사. "야, 이 100대 서버 안에 리눅스 업데이트 싹 돌리고, 자바 깔고, 톰캣 띄워!" 라는 내부 소프트웨어 형상 구성(Configuration) 관리에 특화되어 있습니다. 보통 이 둘을 짬뽕해서 완벽한 인프라 자동화를 굴립니다.
📢 섹션 요약 비유: **IaC(Infrastructure as Code)**는 마인크래프트 게임에서 집을 짓는 **'삽질 100만 번과 설계도 복사 마법의 차이'**입니다. 기존 수동 인프라 구축은 유저가 직접 마우스로 클릭해서 마인크래프트 흙 블록을 1개씩 1만 번을 쌓아 성(서버 아키텍처)을 짓는 미련한 짓입니다. 며칠 뒤 성을 1개 더 지어야 하면 또 1만 번을 수동으로 클릭해야 하고, 중간에 블록 1개를 빼먹어 성이 무너집니다(휴먼 에러). IaC 마법은 유저가 곡괭이를 내려놓고 메모장에 **'도면 코드(가로 10칸, 세로 10칸, 재질 콘크리트)'**를 타이핑해서 적습니다. 그리고 이 도면(코드)을 테라폼(Terraform) 로봇에게 쥐여주면, 로봇이 이 코드를 쓱 읽더니 허공에서 블록 1만 개를 소환해 1초 만에 완벽한 성을 '쾅!' 하고 찍어내 버립니다(자동 프로비저닝). 미국 서버에 성이 필요하면 이 도면 파일 복사본 1개만 이메일로 쓱 던져주면 미국에서도 1초 만에 쌍둥이 성이 솟아납니다. 무겁고 끔찍한 쇳덩어리(인프라) 관리를 종이 한 장짜리 텍스트(코드)의 영역으로 끌어들여, 클릭의 실수를 박살 내고 깃허브(Git)로 완벽하게 버전을 관리하는 클라우드 데브옵스 최고의 지휘봉입니다.