[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

[Terraform 튜토리얼 1-6] 중복 없애다 망한 썰 – DRY 원칙, 정말 항상 맞을까?

[Terraform 튜토리얼 1-6] 중복 없애다 망한 썰 – DRY 원칙, 정말 항상 맞을까?

개발자라면 한 번쯤 들어봤을 말, "Don't Repeat Yourself", 줄여서 DRY 원칙. 이건 소프트웨어 개발에서 아주 중요한 원칙이에요. 중복을 줄이면 버그도 줄고, 유지 보수도 쉬워지고, 코드도 깔끔해지죠. 그런데… Terraform 같은 IaC 세계에서도 DRY가 무조건 좋을까요? 🤔 DRY가 뭔데? DRY 원칙의 핵심은 딱 하나: "같은 걸 반복해서 쓰지 마." * 상수 값, 로직, 설정

By Chansong
[Terraform 튜토리얼 1-5] 선언형 vs 명령형: Terraform은 왜 선언형인가?

[Terraform 튜토리얼 1-5] 선언형 vs 명령형: Terraform은 왜 선언형인가?

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

By Chansong
[Terraform 튜토리얼 1-3] 내부는 감추고, 필요한 것만 보여줘 – 캡슐화란?

[Terraform 튜토리얼 1-3] 내부는 감추고, 필요한 것만 보여줘 – 캡슐화란?

Encapsulation, 캡슐화라고 하면 뭔가 개발자스럽고 어려워 보이죠? 객체지향 프로그래밍 할 때나 듣던 단어 같고요. 그런데 이 개념은, Terraform 같은 Infrastructure as Code(IaC)에서도 아주 중요합니다. 이번 글에서는 "캡슐화가 무엇이고", "왜 필요한지", 그리고 "Terraform에서는 어떻게 쓰이는지"를 쉽게 풀어보겠습니다. ✅ 캡슐화, 한 마디로 뭐야? “필요한 것만 보이게 하고, 나머지는 숨기는 것”

By Chansong
[Terraform 튜토리얼 1-2] 누가 내 설정 바꿨지? 그래서 필요한 불변 인프라

[Terraform 튜토리얼 1-2] 누가 내 설정 바꿨지? 그래서 필요한 불변 인프라

Immutable Infrastructure(불변 인프라) — 최근 클라우드와 DevOps, IaC(코드형 인프라)에서 자주 등장하는 멋진 용어지만, 실제로 어떤 의미일까요? 그리고 Terraform과 같은 도구에서는 어떻게 활용될까요? 이번 글에서는 Immutability(불변성)이라는 개념이 인프라에서 왜 중요한지, 실무에서는 어떻게 적용되는지에 대해 다뤄보겠습니다. ✅ Immutability vs. Mutability Immutability(불변성)이란, 한 번 생성된 대상은 변경하지 않고,

By Chansong