인프런 커뮤니티 질문&답변

이우신님의 프로필 이미지

작성한 질문수

중급, 활용편 #1 DevOps : Infrastructure as Code with AWS and 테라폼

강의 자료 중 vpc를 module이 아닌 디렉토리의 복사 붙여넣기로 사용한 이유

해결된 질문

24.05.12 16:45 작성

·

140

1

안녕하세요.

중급강의 영상을 시청하면서 실습을 진행하던 도중 궁금한 것이 생겨 질문을 드리려 합니다.

vpc 구성 강의 중 artd_apnortheast2 디렉토리 복사 후 몇몇 내용만 바꿔서 vpc를 구성하는 부분이 있는데

보면서 vpc는 모듈로 만들어놓고 사용해도 괜찮지 않을까라는 생각이 들었습니다.

혹시 vpc를 모듈로 구성하지 않은 이유가 궁금합니다.

답변 부탁드립니다. 감사합니다.

답변 1

1

송주영님의 프로필 이미지
송주영
지식공유자

2024. 05. 12. 17:28

안녕하세요.

송주영입니다.

 

좋은 질문해주셔서 감사합니다.

VPC를 module로 만든 사례들도 많습니다.

 

하지만 제가 VPC에서는 모듈을 사용하지 않는 것은,

 

  1. VPC는 한번 만들어지면 변화가 크지 않다, module내 코드 1개의 변경으로 전체 VPC가 변화해야할 것이 크게 없다.

  2. VPC는 잘 안바뀌는 자원이다.

  3. VPC는 각 형상, 서브넷 갯수, RouteTable 룰이 달라지는 경우 값이 달라지기 보다는 전체 자원 갯수가 달라지거나 하기 때문에 module 코드에 if 형태의 문이 많이 들어갈 수 있다.

  4. Peering을 하면 한 곳은 request, accept 를 해야하는데, 이 문제가 복잡해질 수 있다. ( 3번의 예 )

     

위에 이러한 문제로 인해서 module로 VPC를 사용하지 않습니다.

물론 사용 방법은 회사마다 자유이지만, 저는 테라폼 코드가 복잡해지는 걸 원하지 않습니다. 코드처럼 사용하는걸 지양하는 편에 속합니다. yaml, json 같은 형식의 코드처럼 생각하는 경우에 가깝습니다.

 

물론 제 코드 밑에 vpc.tf 안에만 있는 자원이 아닌 다른 것들은 일부 모듈화 하거나 그럴 수 있는 있을 수 있을 것 같습니다. 이 문제는 우리의 서비스가 몇개인지, VPC가 몇개인지, region은 몇개인지, account는 몇개인지에 따라서 고도화를 해나가야 할 수 있다면, 그 방향으로 지향해야합니다.

즉 시간을 줄이고, readability를 향상 시킬 수 있는 어느 방법이 있다면, 그걸 사용해야 한다고 생각합니다.

 

예제 코드는 제 머릿속에서 나온 아직까지의 한계라고 생각해주시면 되겠습니다.ㅎ

 

 

이우신님의 프로필 이미지
이우신
질문자

2024. 05. 12. 21:50

제가 미처 생각하지 못했던 내용이 있었네요.

선생님께서 강의에서 계속 말씀하셨는데 자신도 모르게 테라폼을 코딩처럼 생각한 부분이 있었던 것 같습니다.

답변 감사드립니다.