본문으로 건너뛰기

2022 여름 래블업 인턴십 후기

· 약 13분
강시온

서론

내가 처음 이 회사를 알게 된 건 2019년 여름이다. GDG Seoul 모두의 Toy Story 라는 행사에서 지인이 발표한다고 하여 들으러 갔다가 한 발표가 굉장히 흥미로웠다. 한창 머신러닝에 관심을 가지던 시기였는데 머신러닝에 활용하는 GPU 가상화 관리 도구에 관한 내용이었다. 굉장히 기술적으로 깊이 있고 이런 걸 하는 회사도 있구나 하고 처음으로 래블업에 대해 알게 되었다.

그 후, 다시 한번 이 회사와 연이 닿게 되었는데 42 Seoul에서 진행한 오픈소스 해커톤이었다. 특정 오픈소스를 활용한 제품을 단기간에 만드는 대회였는데, 이때 나는 Backend.AI 팀에 참여하게 되었다. 발표를 듣고 3년이 지난 시점이었지만 그때의 발표가 굉장히 인상 깊어서 바로 떠오르는 이름이었다. 대회 진행 동안 정규 님의 멘토링으로 아주 많은 도움을 받았고 덕분에 대회에서 2위를 수상하는 쾌거를 이루었다.

올해 5월쯤에 나는 쎄트렉아이라는 회사에서 학교 연계로 인턴십을 진행하고 있었는데, 이 활동이 끝나고 무엇을 할지 알아보던 중 페이스북에서 래블업의 여름 인턴십 공고를 보게 되었다. 대회를 진행할 때 정규님에게 멘토링을 받으며 굉장히 좋은 추억이 있었고, 개발자 커뮤니티와 오픈소스에 관심이 있던 나는 매우 좋은 기회라고 생각했고 나의 다음 목적지를 래블업으로 정했다. 나는 그 무렵쯤 42 world 라는 프로젝트로 팀원들에게 아주 많은 것들을 배우고 성장했고 가장 많이 성장한 시기라고 생각하고 있었다. 그런데 래블업에서 면접을 진행하면서 해당 프로젝트를 자세히 물어봐 주시고 제가 담당한 부분에 대해서 자세히 설명해 드릴 수 있어 굉장히 좋은 면접 경험이 되었다. 특히 42world 프로젝트에 모노레포를 적용하면서 어려움을 많이 겪고 있던 일이 있었는데 Backend.AI에서도 최근에 모노레포를 적용하면서 많은 어려움을 겪었다고 하셔서 개발자끼리의 공감도 서로 주고받을 수 있었다.

그렇게 다른 총 4분의 인턴분들과 인턴십 생활을 시작하게 되었다. 나는 기존의 인턴십을 마무리하고 이사할 기간을 가지기 위해 다른 분들보다 일주일 정도 늦게 인턴십을 시작하게 되었다. 일주일 동안은 Backend.AI를 파악하고 회사에 적응하는 Orientation 주간을 가졌다. 온보딩 문서화가 굉장히 잘 되어있어 신규 입사자가 쉽게 회사에 적응하기 좋은 환경이 갖추어져 있는 회사라는 생각이 들었다. Orientation 기간 대부분은 Backend.AI를 설치하고 세팅하는데 대부분의 시간을 보낸 것 같다. 나는 다른 인턴분들보다 일주일 정도 늦게 입사한 덕분에 다른 인턴분들에 도움을 많이 받아 그래도 훨씬 덜 어려움을 겪고 Orientation 기간을 마무리할 수 있었다.

업무 시작

2주 차부터 이제 본격적인 task 들을 할당받아 일하기 시작했다. DevOps, Frontend, Research 팀 중에 본인이 하고 싶은 일을 선택하여 각 챕터 담당자분에게 good-first-issue를 할당받아 시작하였는데, 나는 DevOps 팀을 선택하여 업무를 시작했다. 처음으로 할당받은 이슈는 세션을 실행하고 원하는 코드를 실행하기까지 하는 run 커맨드를 세션을 실행하는 start와 코드를 실행하는 exec 명령어를 조합하여 구현하도록 하여 코드의 중복 구현을 줄이도록 refactoring 하는 작업이었다.

첫 이슈를 진행하는 것은 이슈의 구현난이도와는 상관없이 Backend.AI의 레포 구조를 이해하는 것과 해당 이슈를 이해하는 것 자체에 많은 어려움이 있었다. 이슈를 파악하기 전에 먼저 해야 하는 일은 해당 프로젝트에 대해 파악하는 것이다. Backend.AI 라는 프로젝트가 무엇을 목표로 하는 프로젝트인지를 알고 있어야 이슈를 이해하는데도 이 이슈가 어떤 목적을 달성하기 위해 생긴 이슈인지를 이해할 수 있게 된다는 것을 알게 되었다.

첫 번째 이슈를 힘들게 진행하고 나서 vfolder clone이라는 개발 중인 기능을 테스트하게 되는 업무를 맡게 되었다. 해당 업무를 하면서 DevOps 업무만을 담당하다가 Frontend 챕터의 프로젝트인 Backend.ai-webui를 처음으로 사용해봤는데 vfolder clone 테스트뿐만 아니라 직접 실행하면서 개선할 수 있는 사항이나 버그들을 찾아서 이슈로 등록했는데, 뭔가 다른 팀에 계속 task를 만드는 느낌이라 좀 죄송한 마음도 들었지만, 프론트엔드 챕터에서는 굉장히 좋은 기여라고 독려해 주셨다. 오픈소스에 관한 기여는 코드로 기여하는 것뿐만 아니라 다른 방면으로도 많이 기여를 할 수 있음을 다시 한번 깨닫게 되었다.

CI/CD 개선

평소 CI/CD에 관심이 많았던 나는 Backend.AI에서 활용되고 있는 actions 들에 흥미가 갔고 관심 있게 보던 중에 skip:ci 태그를 이용하여 CI를 skip 할 수 있는 기능이 있었는데, skip:ci나 skip:changlog 태그를 PR 생성 당시가 아닌 추후에 라벨을 다는 경우 적용되지 않는다는 것을 알게 되었다. 이를 위해 의미 없는 commit을 추가해야 했고 Backend.AI가 레포에 권한을 가진 사람만이 작업하는 것이 아닌 오픈소스인 만큼 외부 기여자는 label에 관한 권한이 없으므로 해당 이슈는 오픈소스를 하면 중요하게 해결되어야 할 문제라고 생각했다. 그래서 GitHub Actions와 관련된 내용을 조사했고 action trigger에 labeled와 관련된 trigger가 있다는 것을 알게 되어 해당 문제를 해결할 수 있었다. 할당받은 이슈가 아닌 직접 개선할 수 있는 사항을 찾고 개선한 것이라 해당 작업을 회사에서도 매우 좋게 봐주셨다. 해당 문제를 해결하면서 actions에 더 흥미가 생겨 몇 가지 개선사항을 좀 더 제시해보았다. 누락된 assign 들이 꽤 보여 이를 자동화하여 해결하면 실수도 방지하고 assign 하는 귀찮음도 줄일 수 있다고 생각해 기존에 사용해 본 적이 있는 auto-auth-assign action 도입을 제안했다. 그다음으로는 labeling도 자동화를 하면 좋을 것 같았다. 해당 문제도 labeler라는 action이 존재하여 사용해 본 적은 없지만, test repository에서 여러 번 테스트를 거쳐 Backend.AI에 적용했고 모노레포로 합쳐진 여러 시스템을 구분하는 labeling 작업을 자동화할 수 있었다. 이 작업을 하면서 느낀 것은 PR에 연결된 issue에 할당되어있는 label을 그대로 붙여주면 좋을 것 같다는 생각이 들었는데 해당 기능을 하는 action을 찾을 수가 없었다. 그래서 직접 한번 제작해보기로 생각했고 GitHub API와 action을 학습하여 auto-label-in-issue라는 actions를 직접 제작하여 배포했다.

인턴쉽을 마치며

인턴쉽을 수행하면서 많은 것을 느끼고 많은 것을 배워간다. 이번 인턴쉽이 두 번째 인턴쉽이긴 하지만 이전 회사는 IT 회사가 아니었던 만큼 처음으로 IT 회사에서의 인턴쉽 경험이었다. 특히 오픈소스로 관리되고 커뮤니티에 관한 기여를 꾸준히 한다는 점이 굉장히 매력적으로 다가왔고 회사가 정말 이렇게까지 수평적일 수 있나? 라는 생각이 들 정도로 편안한 분위기에서 자유롭게 의견을 제시할 수 있었던 것 같다. 그리고 강제로 일을 하는 것이 아닌 주도적으로 하고 싶은 일을 할 수 있는 것이 래블업의 가장 큰 장점이라고 생각한다.

뭔가 이제야 좀 프로젝트에 대해 조금씩 파악한 듯한 느낌인데 떠나게 되어 굉장히 아쉬웠는데 인턴쉽을 더 연장해보지 않겠냐는 제안을 주셔서 지금도 actions 이슈들을 맡아 개발하고 있다. 최근에 계속 actions를 다루고 있고 actions를 다루는 개발자가 많이 없기 때문에 이를 주제로 GDG Daejeon에서 발표도 하게 되고 주변에서 액션가면이라는 별명으로 불리고 있다.

인턴쉽을 하면서 얻은 경험을 오픈소스 컨트리뷰션 아카데미에서 공유하기도 하고 이를 바탕으로 오픈소스 컨트리뷰션 아카데미에서도 좋은 성적을 거둘 수 있었다고 생각한다.