래블업의 2021년 여름 인턴십은 많은 성장을 할 수 있게 해준 가장 놀랍고 재미있는 전문적인 경험이었다. 나는 수많은 기술적 도전과 다양한 기술을 배울 수 있는 기회를 갖게 되어 매우 기대되었다.
Backend.ai
나는 2020년 한 뉴스 기사(내 기억에는 “Top 10 tech startups in South Korea”라는 제목이었다)에서 래블업을 처음 접했다. 컨테이너 기반 기술을 통해 개발자들이 개발 환경을 설정하는 데에 너무 많은 시간을 쓰지 않도록 해주는 Backend.AI 제품이 어떻게 “making AI accessible”라는 목표를 달성해나가고 있는지에 대한 소개였다. Python 초보자에게는 가상환경 설정이 매우 혼란스럽기 때문에, 이런 관점에서 내게 매우 흥미로운 주제였다. 대체로 C++이나 JAVA와 같은 프로그래밍 언어에 비해 Python으로 학습하고 코딩하는 것이 상대적으로 쉽다고 받아들여지지만, 패키지 의존성을 관리하고 서로 다른 Python 버전 사이를 전환하는 것은 초보자들이 Python 개발 과정에서 가장 좌절하고 혼란을 겪게 만드는 부분이다.
그래서 나는 Backend.AI를 사용해 보기로 결정했고, 몇 가지 개발 환경 구성 후에 개발에 필요한 모든 패키지(Jupyter Notebook, NumPy, Pandas, TF 등)를 설치한 상태에서 Backend.AI.에서 자체 개발을 할 준비가 되었다.놀라울 정도로 효율적이고 빠르게 개발을 시작했다. 이만한 가상환경이 없다--와우! 확장 가능한 GPU 리소스를 사용할 수도 있다. 직접 사용해보고 싶다면 이 링크를 따라가보라.
Application Process
이 여름 인턴십 전 나는 겨울 인턴십을 신청했었는데 아쉽게도 코로나 19로 인해 정원이 한정되어 있다는 답변을 받고 5월에 여름 인턴십을 다시 신청하게 되었다. 이번에는 인터뷰 일정을 잡자는 이메일을 받았고, 인터뷰 후 일주일 정도 지나서 마침내 래블업에서 합격했다는 이메일을 받았다. 이민국에서 취업 허가와 비자를 발급받는 절차도 래블업에서 많이 도와주었다.
The First Day
나는 오리엔테이션을 위해 사무실에 처음 갔던 날을 생생하게 기억한다. 강남에서의 바쁜 일상을 경험하게 되어 너무 설렜고, 래블업에서 함께 일할 멋진 분들과 2개월 동안 함께 일하게 될 동료 인턴들을 빨리 만나고 싶었다. 사무실에는 다른 5명의 인턴 동료들(인턴 기간 내내 모두 성실하고 똑똑한 사람들이었다)이 더 있었고 래블업의 뛰어난 분들에게 소개를 받았다.
인턴십 기간 동안 모두들 너무나 친절하게 도움을 주셨다.
The First 2 Weeks
첫 2주 동안, 나는 사용하는 기술 스택에 익숙해지기 위해 다양한 작업을 할당받았다. 인턴십 이전에 주로 웹 개발을 했기 때문에 머신러닝 개념을 배우면서 데이터셋에 대한 ML을 수행하고 데이터 증강 기법 적용, 가용GPU 리소스 활용 등 다양한 방법으로 결과를 개선하는 과정을 통해 최적화의 중요성을 이해할 수 있었다. 또한 Backend.AI 이슈 해결의 전제조건으로 Docker를 사용하여 웹 채팅 애플리케이션을 만드는 과제를 받았다.
GitHub Issues
셋째 주부터, 나는 Backend.AI GitHub 저장소에 등록된 이슈들을 스스로 할당하기 시작했다. 먼저 Backend.AI의 frontend 저장소인 backend.ai-webui로 시작했다. Lit 및 저장소에서 사용되는 기타 라이브러리를 배우고 설명서를 읽으면서 forntend에 빠르게 익숙해졌다.
첫 Backend.AI pull request를 통해 나는 소프트웨어 엔지니어링 모범 사례와 프로덕션 수준 코드 작성에 대해 많은 것을 배웠다. 이 이슈는 사용자 정보 대화 상자 안에 사용자의 API 키 및 비밀 키를 표시하고 플랫폼의 메뉴에서 사용자의 역할을 표시하는 것이었다. 나는 필요한 사용자 정보 API를 사용하여 모든 작업을 수행하고 UI와 해당 기능을 TypeScript 및 CSS로 코딩했다. 특히 내 pull request에 대한 시니어 개발자의 코드 리뷰를 통해 clean code 작성이 중요하다는 점을 이해할 수 있었다.
래블업에서는 다른 인턴들 또한 자신의 GitHub 이슈를 만들도록 장려하였고, 나는 다른 인턴 중 한 명이 만든 이슈를 골라 pull request를 작성했다. 다음은 내가 작업한 몇 가지 이슈들이다.
Culture at Lablup
래블업 분들은 인턴들을 매우 따뜻하게 맞아주었다. 한국어를 모르는 사람들도 단지 필요한 의사소통을 하는 정도가 아니라 환영받는 느낌을 받을 수 있게 항상 서로에게 영어로 말하려고 노력했다. 매일 오전 10시에 15분씩 All-hands 미팅이 있고, 한국어로 회의를 진행해야 할 때 직원 중 한 명이 항상 영어로 번역하고 요약해서 채팅에 올리곤 했다. 영어 사용자들을 돕기 위한 감탄할 만한 노력이었다. 래블업은 여유로운 근무 환경을 조성하는 것이 직원들의 성과를 향상시킨다는 것을 알고 있기 때문에 사무실에서 직원들이 항상 일만 하는 것으로 생각하지 않는다. 피아노를 연주할 수 있고 심지어 XBox를 즐길 수 있으며 휴식을 취하기 위해 밖에서 산책할 수도 있다. 회사는 최선을 다해 최고의 성과를 낼 수 있도록 지원한다.
매주 금요일 인턴들은 멘토들과 OKR(Objectives and Key results) 회의를 갖고 한 주 동안 무엇을 성취했는지, 다음 주에 무엇을 할 것인지에 대해 논의했다. 고민했던 부분을 공유하고 성과에 대한 자세한 피드백을 받을 수 있다. 매주 수요일에는 우리가 사용하는 기술 중 새롭게 업데이트된 내용과 머신러닝에 대한 최근 연구에 대해 토론하는 ‘pebble seminar’가 있었다.
또한 새로운 직원과 인턴은 Backend.AI 코드베이스를 연구하고 코드베이스의 특정 부분을 동료들이 이해할 수 있도록 발표해야 했다. 나에게는 코드를 잘 이해하고 있는지 확인할 수 있는 기회였다. 인턴십 4주차와 8주차에는 한 달 동안 무엇을 했는지, 무엇을 배웠는지 대한 중간 및 마무리 발표를 했다.
우리는 다른 직원들과 수시로 온라인 커피챗을 하며 일상적인 이야기를 나누었는데, 서로를 알고 친분을 쌓는데 큰 도움이 되었다. 어떤 재미있는 사실이 누구의 것인지 추측하고 가장 높은 점수를 받은 사람이 특별상을 받는 것과 같은 게임을 하는 ‘Cultural day’도 있었다. 재미있게도,: 나는 가장 많은 상을 받은 수상자 중 한 명이 되었다.
Conclusion
래블업에서2개월 동안 많은 기술을 연구하고 코딩과 소프트웨어 엔지니어링에 대해 많은 것을 배웠으며 Backend.AI에 기여한 것은 놀라운 경험이었다. 내 코드를 통해 Backend.AI 사용자에게 긍정적인 영향을 미치게 되어 기쁘다.
래블업 팀과 여름 인턴십 인턴들의 앞날에 행운이 가득하길 바란다.
또한 인턴들을 지속적으로 지원하고 최대한 배려해 주시고 인턴십을 통해 많은 것을 배울 수 있도록 해주신 래블업의 모든 직원분들, 특히 frontend 개발자인 강지현님, 나의 frontend 코드를 검토해 주시고 인턴이 끝난 후에도 나와 다른 인턴들에게 직접 점심식사를 대접해 주셨다. 이 자리를 빌어 모두 감사드린다.
Lunch with the interns and Front-end Engineer Kang Jihyun
Contributions After the Internship
인턴십은 끝났지만 나는 Backend.AI에 계속 기여하고 싶어서 이 글을 쓰며 다음과 같은 2개의 pull request를 더 보냈다.