다섯 살도 알 수 있게 · SRE
코드형 인프라가 뭐예요?
코드형 인프라(IaC)를 설계도 한 장으로 공원을 통째로 짓는 이야기로 풀어봤어요.
새 공원을 지을 때마다, 사람이 기억에 의존해 하나씩 지어요.도시마다 조금씩 다르게 지어져요.
손으로 지으면 사람마다 다르고, 기록도 안 남아요.도시 A 공원과 도시 B 공원이 미묘하게 달라져요.
설계도 한 장만 있으면, 어디서든 똑같은 공원을 지을 수 있어요.사람이 아니라 설계도가 정답이에요.
설계도를 글로 적어요코드로 남겨요
누구나 같은 공원을 지어요설계도만 있으면요
수정 기록이 남아요언제 뭐가 바뀌었는지요
설계도만 보고도 알아요잘못 지었는지도요
같은 설계도를 읽으면, 다른 사람이 지어도 똑같이 나와요.바뀐 점은 설계도 수정 기록으로 남아요.
몰래 손으로 고치면 설계도와 실제가 달라져요(드리프트).그러면 설계도를 적어 둔 의미가 없어져요.
한 줄로
코드형 인프라 = 공원 설계도를 종이(코드) 한 장에 적어 두고, 그 설계도만 있으면 누가, 어디서 짓든 똑같은 공원이 나오게 하는 일.
Infrastructure as Code(IaC). 서버·네트워크 같은 인프라를 선언적 설계도(코드)로 적어 버전 관리하는 방식이에요. 손으로 몰래 바꾸면 설계도와 실제가 어긋나는 드리프트가 생기고, 같은 설계도는 몇 번을 다시 실행해도 같은 결과가 나와야 해요(멱등성). GitOps는 이 설계도 보관함을 유일한 정답으로 삼는 다음 단계예요.
어른들은 이렇게 불러요
- 코드형 인프라
Infrastructure as Code - 설계도를 종이 한 장(코드)에 적어 두는 일. 그 설계도만 있으면 누구나 같은 공원을 지어요.
- 선언적 설계도
Declarative blueprint - "기구 1개, 창구 1개" 같은 설계도. 방법이 아니라 원하는 결과만 적어요.
- 드리프트
Drift - 설계도와 실제가 어긋나는 것. 몰래 손으로 고치면 생겨요.
- 버전 관리
Version control - 설계도가 언제 어떻게 바뀌었는지 남기는 일. 누가 뭘 고쳤는지 나중에도 알 수 있어요.
- 재현성
Reproducibility - 똑같은 설계도면 똑같은 공원이 나오는 것. 도시 A든 도시 B든 결과가 같아요.
- 멱등성
Idempotency - 설계도를 몇 번 다시 실행해도 결과가 같은 것. 두 번 지어도 공원이 두 개가 되진 않아요.
- GitOps
GitOps - 설계도 보관함이 바뀌면 자동으로 공사가 따라오는 방식. 설계도를 넣는 것과 짓는 것을 자동으로 이어 붙여요. → 설계도가 바뀌면 자동으로 공사
- 불변 인프라
Immutable infrastructure - 고치지 않고 새로 짓고 헌 걸 버리는 방식. 손으로 고칠 일 자체를 없애서 드리프트를 막아요.
다음 이야기
설계도가 바뀌면 자동으로 공사 →