inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

helloapi, helloworker 만들기 in dev, stage

심볼릭 링크 관련하여 질문 드립니다.

해결된 질문

369

chad

작성한 질문수 7

1

질문은 부담없이 어떤거든 해주세요!

 

주영님이 설정하신 심볼릭 링크 관련하여 코드 재사용 및 중앙 관리를 하기 위함인 것 같다는 생각이 들긴 하지만, 주영님께 직접 답변을 듣고 싶어서 질문드립니다.
service 디렉터리 구조에서 저렇게 심볼릭 링크를 설정하신 이유가 무엇인지 디테일하게 답변해 주실 수 있을까요??

aws Terraform devops

답변 3

2

송주영

옙 맞습니다~ 중앙관리와 중복으로 반복되는 코드를 관리하기 위함입니다.

특히 예를 들자면 과거에는 terraform 0.X 시절에는 상위/하위 호환이 완전히 되지 않았습니다.

그래서 어느 누군가가 0.0.1 버전만 올리고 apply 를 한다면, 모든 사람이 업그레이드를 해야하고,

모든 파일의 해당 버전 부분을 고쳤어야 했습니다~

그런식으로 관리 편의성으로 이런식으로 만들었습니다. 물론, 과거부터 사용한 코드이기 때문에,

지금은 local variable을 비슷한 방식으로 사용한다거나, tag 같이 hard-coded 한 작업을 더 효율화 할 수 있는 여지는 있습니다~

2

윤병찬

제 짧은 식견으로 답변드리자면, chad님의 추론이 맞다고 봅니다.

같은 계정 내의 리소스를 다른 리소스가 활용할 때는 outputs과 remote_state를 활용해서 재사용을 할 수 있지만 다른 계정일 경우에는 ARN을 참조해서 사용해야할 경우가 생깁니다. 매번 ARN을 콘솔 또는 CLI를 통해 확인하는 것은 매우 비효율적이므로 resource 생성한 후 반복적으로 활용할 것으로 예상되는 ARN 또는 특정 값은 global 변수로 중앙 관리하는 것이 효율적입니다.

또한 제 짧은 식견으로 sg, route53, lb, global과 같이 var_*로 분리한 이유를 추론해보자면 다음과 같습니다.

첫 번 째, 하나의 파일로 변수를 관리할 경우 해당 파일의 크기가 너무 커져 가독성이 떨어집니다. 수십개가 아닌 수백, 수천, 수십만개의 리소스를 관리한다고 가정하였을 때를 고려하고 디렉토리 및 파일 구조를 설계하는 것이 바람직하다고 봅니다.

두 번 째, 만약 Atlantis(https://www.runatlantis.io/)와 같은 Pull Request를 통해 Terraform 워크플로우를 자동화할 수 있는 오픈소스 셀프호스팅 도구를 사용할 경우에 불필요한 Plan을 하지 않도록 하기 위함입니다.
가령, var_lb.tf, var_route53 와 같이 분리된 변수 파일이 아닌 variables.tf를 Atlantis가 추적하도록 설정했다고 가정해봅시다. 해당 변수 파일을 모든 resource에서 참조하고 있고, LB와 관련된 변수를 변경하였을 경우에도 route53, sg 등 그외의 resource들에 대해 의도하지 않은 terraform plan 커맨드가 실행됩니다.

처음부터 고려하기엔 힘들 수 있습니다만, 많은 리소스를 구축, 운영/관리한다고 가정하고 설계하는 습관을 들인다면 어떻게 해야 효율적으로 관리포인트를 줄일지 설계할 수 있는 역량을 기를 수 있을 것입니다.



답변이 도움이 되시길 바랍니다!

저도 초/중급자이니 함께 공부해나가요!!! 🙂

 

0

송주영

감사합니다~ 윤병찬님 완전히 동일한 생각입니다~

1

chad

병찬님, 의견 감사합니다. 많은 도움이 되었습니다!
주영님, 답변 감사합니다~ 과거 이야기까지 들을 수 있어서 너무 유익하네요!..

금요일 잘 마무리하시고 두 분 다 즐거운 주말 되세요~

맥북으로 RDP 연결 질문

0

11

1

라우팅 테이블 설정 중 궁금한게 있습니다.

0

26

1

수강 연장 가능하면 요청 드립니다.

0

14

2

user-service jwt

0

26

2

JPA Repository 질문이 있습니다!

1

28

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

30

1

젠킨스버전과 플러그인설치

1

26

2

cpu&memory 재설정하기에 질문이 있습니다.

1

33

2

시험 시작하기 전에 한 가지 질문 있습니다.

1

35

2

yml 작성하다가 에러 발생해서 문의 드립니다.

0

31

2

강의사이트 접속 에러 문의 드립니다.

0

24

2

모듈 관련 질문드립니다!

0

81

0

모듈과 .tf 파일 분할에 대해서 의견이 궁금합니다.

1

271

2

SSM VPC Endpoint 관련 질문 드립니다

0

275

2

세팅 질문입니다.

0

327

1

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

1

289

1

backend로 설정한 s3 bucket의 destroy

0

324

1

.terraform 디렉토리에 관해

1

285

1

질문입니다.

2

226

2

AWS Paramater store 실습도중 Error: creating SSM Parameter (test-key): 에러 발생

1

284

1

안녕하세요. 깃헙 파일 관련 질문 드립니다.

1

269

1

Error: Cannot assume IAM Role 에러

1

313

1

Error: Cannot assume IAM Role 에러 관련 질문 드립니다.

1

551

4

안녕하세요.

1

354

2