[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라
![[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라](/content/images/size/w1200/2025/05/ChatGPT-Image-2025----5----5---------05_57_29.png)
인프라를 코드로 관리할 때, 좋은 모듈을 만드는 핵심 개념 중 하나가 바로 응집도(Cohesion)입니다.
이 단어가 좀 낯설게 느껴질 수 있지만, 사실 우리는 매일 응집도가 높은 시스템 속에서 살고 있어요.
✅ 응집도란?
하나의 모듈이 하나의 책임 또는 기능에만 집중하는 정도
응집도가 높은 모듈은 말 그대로 한 가지 일에만 집중합니다.
그래서 이해하기 쉽고, 유지보수하기 편하고, 재사용하기도 좋아요.
🍳 주방에서 보는 응집도
예를 들어 아침 밥을 먹으려고 주방에 갔다고 해봅시다.
당신의 주방이 이렇게 구성되어 있다면 어떤가요?
- 숟가락, 젓가락, 포크 → 한 서랍에
- 그릇, 접시 → 같은 찬장에
- 양념류 → 한 곳에 모여 있고
- 우유 → 냉장고 안에
필요한 걸 어디서 꺼내야 할지 명확하고 빠르게 알 수 있죠.
이게 바로 응집도가 높은 구조입니다.
🧯 반대로, 응집도가 낮은 주방은?
- 숟가락은 서랍에, 젓가락은 찬장 위, 포크는 다른 방에…
- 그릇은 식탁 위, 접시는 거실…
- 냉장고는 창고에 있고, 양념은 세탁기 옆…
이런 주방에서 요리하려면 불필요한 움직임과 시간 낭비가 엄청나겠죠?
🧱 Terraform에서 응집도가 중요한 이유
Terraform에서도 마찬가지입니다.
예를 들어 다음과 같은 모듈을 만들었다고 해봅시다:
vpc
모듈 → VPC, Subnet, Route Table 등을 포함rds
모듈 → RDS 인스턴스 + 보안그룹s3
모듈 → 버킷 + 버전관리 설정
이렇게 각 모듈이 하나의 기능에 집중하고 있다면,
사용자(혹은 팀원)는 그 모듈이 무슨 역할을 하는지 쉽게 이해할 수 있고,
문제가 생겨도 그 모듈만 보면 되니까 디버깅도 빠릅니다.
💡 모듈 분리 기준 예시
모듈 이름 | 응집된 기능 |
---|---|
network |
VPC, Subnet, IGW 등 네트워크 설정 |
security |
Security Group, IAM Role 등 권한 관련 리소스 |
compute |
EC2, Lambda 등 컴퓨팅 리소스 |
storage |
S3, EFS 등 스토리지 관련 리소스 |
이런 식으로 모듈을 나누면 나중에 필요한 기능만 조립하듯 가져다 쓰기 좋아요.
📌 정리하자면
응집도가 높은 모듈은 말 그대로 “하나의 책임만 갖는 깔끔한 모듈”입니다.
이렇게 만들면 재사용, 유지보수, 협업 모든 측면에서 이점이 많습니다.
주방에서 숟가락 찾듯,
Terraform 모듈에서도 필요한 기능을 정확히 찾을 수 있게 만드는 것,
그게 바로 좋은 모듈의 시작입니다.
🔜 다음 글 예고
다음 포스트에서는 "선언형 vs. 명령형"이라는 또 하나의 핵심 개념을 다뤄보겠습니다.
Terraform이 왜 선언형 도구인지, 그게 왜 중요한지를 이해하면 IaC의 철학이 더 잘 보이기 시작할 거예요.
