본문 바로가기
INFRA/Automation

[Terraform] 모듈과 모듈화

by BTC_물콩 2023. 6. 22.

베 하 ~~

콩순이들 BTC_물콩입니다 !!!

 

오늘은 같으면서도 다른 

모듈과 모듈화의 정의와 차이점에 대해 알아보겠습니다 !!!!!!

저는 테라폼을 공부 했을때,

모듈과 모듈화가 같은 것을 정의하는 줄 알았었는데 아니더라구요 ㅎㅎ

❓ 모듈

◾ Terraform에서 모듈은 구성 요소를 재사용 가능한 단위로 분리하는 방법

◾ 모듈은 Terraform 코드의 조각으로, 특정 기능이나 리소스 집합을 정의하는 것

◾ 모듈을 사용하면 코드를 재사용하고, 유지 관리가 용이하며, 추상화 수준을 높일 수 있음

◾ 일반적으로 모듈은 하나 이상의 리소스를 정의하고 설정할 수 있으며, 이를 통해 구성 관리를 효율적으로 수행할 수 있음

 

❓ 모듈화

◾ 모듈화는 코드를 논리적으로 분할하여 재사용 가능하고 관리하기 쉬운 단위로 분리하는 프로세스

◾ Terraform에서 모듈화는 Terraform 코드를 작성하는 방식이나 구성을 구성 요소로 나누는 방식을 가리킴

◾ 모듈화는 코드의 가독성, 재사용성, 유지 보수성을 향상시키고, 큰 인프라를 다룰 때 코드를 더 구성하기 쉽게 만들어줌

◾ 모듈화는 모듈을 작성하고 해당 모듈을 이용하여 인프라를 구성하는 프로세스를 의미

 

 

즉 Terraform에서 모듈은 재사용 가능한 코드 단위로, 특정 기능이나 리소스 집합을 정의하는 것을 의미하며, 모듈화는 코드를 모듈 단위로 분할하고 구성 요소로 재사용할 수 있는 형태로 조직화하는 프로세스를 의미합니다 !!

 

❓ 모듈과 모듈화을 잘 사용한다면 ❓ 

Terraform으로 코드를 구성 할 때 모듈과 모듈화를 잘 활용한다면 다양한 장점이 존재합니다.!

 

1. 재사용성
2. 추상화
3. 유지 보수성
4. 협업과 확장성

 

너무 많이 본 내용들이라 익숙하죠 ?

 

이렇게 잘 사용하면 편리한 점이 많은 모듈, 그리고 모듈화지만

제대로 사용하지 못한다면 오히려 코드가 엉망이 되어 버릴지도 모릅니다 😂😂😂

모듈과 모듈화를 제대로 사용하기 위해선 어떻게 해야 할까요 !

 

❓ 모듈과 모듈화을 제대로 사용하려면 ❓ 

1. 모듈의 단일 책임 원칙

: 모듈은 단일 책임 원칙을 따라야 합니다.

즉, 각 모듈은 특정 기능 또는 리소스 집합에 대한 구현을 책임져야 합니다.

모듈이 여러 가지 기능을 동시에 담당하게 되면 모듈의 역할이 모호해지고, 코드의 유지 보수와 재사용이 어려워질 수 있습니다.

 

2. 모듈 인터페이스의 일관성

: 모듈은 일관된 인터페이스를 제공해야 합니다. 

모듈의 입력 변수와 출력 값은 일관성을 유지해야 하며, 모듈 간의 상호 작용을 일관성 있게 정의해야 합니다. 

이렇게 함으로써 모듈 간의 결합도를 낮출 수 있고, 모듈을 교체하거나 확장하기 쉬워집니다.

 

3. 모듈의 추상화 수준 조절

: 모듈의 추상화 수준은 사용자의 편의성과 이해도를 고려하여 조절해야 합니다. 

너무 낮은 수준의 추상화는 모듈을 사용하는 데 불필요한 세부 사항에 대한 이해가 필요하게 만들 수 있으며, 너무 높은 수준의 추상화는 모듈을 사용할 때 제한적인 유연성을 가져올 수 있습니다. 

적절한 추상화 수준을 유지하여 모듈을 직관적이고 유연하게 사용할 수 있도록 해야 합니다.

 

4. 모듈 테스트와 문서화

: 모듈을 개발할 때 테스트와 문서화를 충분히 고려해야 합니다. 모듈의 기능을 검증하기 위한 테스트 케이스를 작성하고 실행하여 모듈의 정확성을 검증해야 합니다.

또한 모듈의 사용 방법과 의도된 동작을 명확히 문서화하여 모듈을 사용하는 사람들이 쉽게 이해하고 활용할 수 있도록 해야 합니다.

 

5. 버전 관리

: 모듈은 코드의 변경이나 업데이트에 따라 버전 관리되어야 합니다. 

모듈의 버전을 관리하여 사용자가 모듈을 업그레이드하거나 이전 버전을 사용할 수 있도록 하는 것이 중요합니다. 

 

 

오늘 준비한 내용은 여기까지 입니다 ㅎㅎ

다들 모듈, 모듈화를 제대로 알고 사용하여

즐거운 Terraform 하세요 ~~~ 😆

( 전 아직 갈길이 멉니다 흑흑 )

베빠 ~~~

'INFRA > Automation' 카테고리의 다른 글

Terraform Output과 Local  (1) 2024.02.02
[Terraform] Meta-Argument 2 . for_each문  (0) 2023.06.30
[Terraform] Meta-Argument 1 . Count문  (0) 2023.06.13
Terraform Remote State (S3편)  (0) 2023.05.26
[Terraform] Terraform module  (0) 2023.05.21

댓글