Imagoworks (3) Survive as Noob

아무튼 받아라!

October 6, 2023 - 3 minute read -
Imagoworks IaC message queue deploy

TL;DR

Terraform CDK (CDKTF)를 이용해 데이터 파이프라인 및 메시지 큐 아키텍쳐 관련 인프라를 정의했다. HCL에 도입된 편의 기능은 아직 CDKTF에선 사용할 수 없어서 아쉬웠으나, 확실히 다른 팀원이 느끼는 진입장벽은 낮아 보였다. 릴리즈가 끝난다면, 테스트 코드 작성과 더불어 속도를 붙여 진행해볼만 할 것 같다.

0

지난주에 언급했던 CDKTF를 기반으로 한 프로토타입 구현을 마무리했다. 확실히 테스트 작성 및 가독성에는 강점이 있었고, 기존 폴더구조로 나눠 관리하던 것에 비해 훨씬 간결한 폴더구조 및 코드를 가져갈 수 있었다. 예를 들어, Production 환경과 Staging 환경이 있을 때, 기존 접근 방식은 아래와 같았다 (적어도 내가 아는 방법은 그렇다 😓).

├── Modules
│   └── CommonResource
│       ├── main.tf
│       └── resourceA.tf
└── PepperoniFinder
    ├── Production
    │   ├── main.tf
    │   └── ec2.tf
    └── Staging
        ├── main.tf
        └── ec2.tf

혹은 Workspace를 이용해 변수 조절을 하고, 이를 이용해 관리하는 방법도 있었으나, 역시 관리 측면에서 애로사항이 존재했다. 이에 반해 CDKTF를 이용해 코드로 작성한다면, Stack 이라는 개념을 이용해 단일 파일로 여러 환경을 편하게 다룰 수 있께 되고, 그 결과 다음과같이 간단한 폴더구조로 관리할 수 있게 된다.

├── Modules
│   └── CommonResource
│       ├── main.ts
│       └── resourceA.ts
└── PepperoniFinder
    ├── main.ts
    └── ec2.ts

다만 좋은 점만 있던 건 아닌데, 리소스 Import 파트가 가장 큰 단점으로 다가왔다. Terraform 1.5 이후부터는 import 블럭을 통해 리소스 import 과정을 굉장히 수월하게 처리할 수 있게 됐는데, 아직 CDKTF는 이런 기능을 지원하지 않는다. 곧, 일일이 CLI를 통해 리소스 import를 해줘야 한다는 것이다. 물론 스크립트 등으로 자동화할 수는 있겠으나, 개발자가 제일 하기 싫어하는 단순 반복 노동을 해야 한다는 환경은 굉장히 피곤하게 느껴졌다. 이번 작업은 새로 추가되는 프로젝트를 대상으로 작업했기에 그 양이 적었으나, IaC 도입을 위해 수천개 의 리소스를 Import하고 재구조화해야 하는 미래가 남아있기에 살아남으려면 어떻게든 자동화를 해내야만 한다.

1

설계한 아키텍쳐를 위해 Azure의 Service bus를 추상화하는 클래스를 작성했다. 그간 코드 분석, 리뷰만 진행하다 처음으로 PR을 만들어 올린 것인데, 입사 후 처음으로 리뷰를 받아보는 입장에서 조금은 기대되는 순간이었다. 그간 테스트 코드를 비롯해 가독성이 좋은 코드를 울부짖으며 다녔기 때문에 최대한 그 기준에 맞게 작성하려 노력했는데, 어떻게 받아들여졌을지 궁금하기도 하다 (별 탈 없이 Approve 이후 Merge 되었다). 작성 과정에서 환경변수, DB, Key Management Service (KMS) 등 새삼 여러 환경에서 데이터를 관리하는 걸 체감했는데, 그렇게 유쾌하지는 않은 경험이었다. 지금보다 더 잘 관리할 수 있다면 확실히 DX가 더 개선될 수 있겠다는 생각이 들었으니, 차주 테크미팅에 관련 글을 공유해 보고 작업해 보려 한다.

2

배포 공지글을 작성하게 됐다. 아직 배포에 포함되는 코드를 작성한 바는 없지만, 어쩌다 보니 급류에 휘말려 공지글 작성 담당자로 선정됐다. 겸사겸사 여러 레벨에서 병렬적으로 디버깅을 하는 팀원들을 지켜볼 수 있었고, 전우애가 다져지기 충분한 시간 후 원인 파악 - 해결 - 환호로 이어지는 도파민 파티도 같이 진행했다. 배포 공지가 지금은 수작업으로 이뤄지고 있으나, Jira나 PR 메시지를 잘 활용해서 자동으로 뽑아낼 수 있지 않을까 생각이 들었던 자정 이후 퇴근이었다. 앞으론 일 끝나면 열심히 집 가야겠다.

+INF

사내 동아리 중 하나인 Imago Workout에서 진행하는 단체 러닝에 처음 참석했는데, 낭만 넘치게 비가 조금 내려줘서 우중 러닝을 할 수 있었다. 대충 젖은 채로 회식에서 고기도 포식했는데, 와중에 병뚜껑 꼭지 날리기를 잘한다는 재능도 발견할 수 있던 시간이었다. 다음 주도 뛴다고 하는데, 빠질 수 없다.