[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라

[Terraform 튜토리얼 1-4] 모듈이 정리가 안 될 땐, 응집도(Cohesion)를 의심하라

인프라를 코드로 관리할 때, 좋은 모듈을 만드는 핵심 개념 중 하나가 바로 응집도(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의 철학이 더 잘 보이기 시작할 거예요.

[Terraform 튜토리얼 1-5] 선언형 vs 명령형: Terraform은 왜 선언형인가?
Terraform을 쓰다 보면 종종 듣게 되는 말이 하나 있어요: Terraform은 ”선언형(Declarative)” 도구다. 그런데 이게 도대체 무슨 뜻일까요? ”명령형(Imperative)”이랑은 뭐가 다르고, 왜 Terraform은 선언형일까요? 🧠 선언형과 명령형, 개념부터 정리 구분 선언형 (Declarative) 명령형 (Imperative) 핵심 개념 무엇이 되어야 하는지만 선언 어떻게 할지를 하나하나 명령 예시 “난 스테이크 먹을래” “고기

Read more

Lumen - AI Agent를 위한 지속 가능한 두뇌

Lumen - AI Agent를 위한 지속 가능한 두뇌

왜 만들었는가 AI 에이전트는 모든 대화를 기억상실증 상태에서 시작합니다. Claude Code, Cursor, Codex, Mastra 하네스, LangChain 파이프라인 — 이 도구들은 세상을 알지만 당신의 세상은 전혀 모릅니다. 당신이 읽은 200편의 논문, 당신이 출시하는 코드베이스, 지난 분기에 내린 아키텍처 결정, 새벽 2시에 그 버그를 잡아냈을 때 마침내 통했던 트래젝토리. 모든 세션이 같은 컨텍스트를

By Sardor Madaminov

200 OK, 텅 빈 body — Starlette Race Condition 장애 분석기

발생일: 2026-04-23 / 해결일: 2026-04-27 영향 범위: report-dev.machine365.ai 전체 API 들어가며 API가 200 OK를 반환하는데 body가 비어있다. 프론트엔드에는 아무것도 안 뜨고, Swagger UI(/docs)도 빈 화면. 그런데 로컬에서 돌리면 멀쩡하다. 배경은 이랬다. 미터링(Metering) 기능을 만들면서 API 호출 로그를 수집할 미들웨어를 작성했다. Spring Boot 백엔드에 먼저 적용하고, Python

By Jeonggil