뤼이드 ML엔지니어 인턴의 웹개발, DevOps, AI 학습 경험
기획 인터뷰 Learning How to Learn 은 다양한 직무를 가진 실무자들과의 인터뷰를 통해 실무자들이 실제 사용하고 있는 효과적인 학습 방법을 알아봅니다.
이번 인터뷰는 산타토익으로 익히 알려진 에듀테크 스타트업 뤼이드의 MLOps 팀 ML 엔지니어 인턴 김성익님입니다. 성익님은 2020년 초부터 약 1년 반 동안 웹개발, DevOps, AI 분야를 폭넓고 빠르게 학습하고 뤼이드에서 ML 엔지니어로 첫 커리어를 시작했습니다. 어떻게 성익님이 짧은 시간 안에 다양한 분야를 학습해 AI 기술을 핵심으로 사업을 만들어가고 있는 뤼이드에서 커리어를 시작할 수 있었는지 알아봤습니다.
필자가 Learning How to Learn 인터뷰를 하게된 큰 이유 중 하나는, 학습은 본인이 해당 직무의 지식을 얼마나 많이 알고있느냐와 별개로 각각의 지식/역량 수준을 갖춘 분들이 저마다의 위치까지 도달하기 위해 필요한 가치있는 인사이트를 공유해줄 수 있다고 생각했기 때문입니다. 마치 마케팅 직무를 막 시작한 사람의 업무 고민을 때때로 그 분야의 대가보다 같은 직무를 조금 더 해본 동료나 사수가 해결해줄 수 있는 것처럼, 학습도 최근까지 나와 비슷한 고민을 하고 이에 대한 시도를 해본 사람에게서 내게 당장 필요한 답을 얻을 수 있다고 봅니다.
성익님과의 인터뷰는 이런 필자의 생각을 다시금 상기시켜주는 시간이었습니다. 성익님의 지난 2년 간의 학습 경험을 들으며, 필자도 만약 어떤 분야에 새롭게 입문한다면 성익님과 같은 방식을 취해야겠다고 생각하게 되는 지점이 많았습니다. 직접 경험한 것을 잘 정리하고 객관화해서 더 나은 방향을 고민해 말씀해주신 성익님의 인터뷰는 특히 웹 프로그래밍, DevOps 분야로의 입문을 고민하시는 분들에게 큰 도움이 될 것 같습니다.
인터뷰에서 필자가 육성으로 ‘와’ 하면서 들었던 것을 추려보자면 아래와 같습니다.
“실무에서의 프로그래밍 작업은 완전히 새로운 것을 만드는 것 만큼이나 기존에 만들어져 있는 것을 고치고 개선하는 일도 많고 중요하다고 느낀다. 처음 만들 때에는 최선의 선택이었던 코드나 아키텍처를 상황이 바뀌면 새롭게 고쳐야하는데, 공부를 하며 이런 작업에 대한 경험과 고민을 더 해봤으면 좋았을 것 같다.”
“DevOps 공부를 다시 한다면 일단 간단한 서비스라도 사람들이 많이 몰릴 수 있는 서비스를 만들어놓고 관리하는 것부터 시작했을 것 같다. 실무를 하면서 느끼는건, 결국 DevOps는 실제 서비스에 들어오는 트래픽에 맞춰 Scalability도 고민하고 서버 터지는 것도 걱정해보는 경험을 하는게 정말 중요한 것 같다. 이론만 파서는 이런 경험을 하기 어렵더라.”
뤼이드 MLOps 팀에서 하는 업무가 궁금하다.
사수와 함께 뤼이드 튜터 서비스의 머신러닝 서버 유지보수를 주로 하고있다. 데이터레이크에 저장된 도메인별 컨텐츠를 모델이 사용할 수 있도록 정기적으로 서버에서 갱신하거나, 서비스 장애가 발생할 경우 대응하는 등의 업무다. 최근에는 A/B테스트 환경 구축을 위한 PoC 작업을 하기도 했다.
지금 회사가 첫 회사라고 알고있다. ML 엔지니어 인턴으로 입사하기 위해 필요한 지식은 대학에서 배운건가?
대학을 다닐 때에는 정보시스템학을 전공했다. 이 때 컴퓨터 사이언스의 기초와 기본적인 프로그래밍 언어 등을 배웠는데, 이때까지는 내가 개발을 직업으로 삼기는 어렵다고 생각했다. 동기들, 선배들과 협업할 기회가 몇 번 있었는데 나는 컴공에 소질이 없다는 생각을 했다. IT업계에서 일하고 싶었지만 개발자보다는 개발을 어느정도 이해하는 다른 직무로 일해야겠다 싶었다. 지금의 직무로 입사하기 위한 지식은 사실상 2020년 초부터 쌓았다.
2020년부터 공부했다면 지금까지 만 2년이 되지 않는 시간인데 놀랍다. 어떤 것들을 공부했나?
공부한 기간에 비해 여러 분야를 공부한 것 같다. 첫 6개월은 웹개발, 특히 서버 쪽을 공부했다. 이후 6개월간 DevOps쪽을 공부했고, 올해 초부터 6개월 간 AI를 배웠다. ML 엔지니어, 혹은 MLOps가 DevOps와 ML분야를 알아야하고, 동시에 지금 팀에서 다루는 영역은 백엔드에 가깝다보니 그동안 공부했던게 다 도움이 되었다.
차례대로 이야기해보면 좋을 것 같다. 맨 처음 웹개발 공부는 어떻게 했나?
피로그래밍이라는 동아리에 들어갔다. 개발에 대한 기초가 없는 학생들이 모여서 두 달 동안 서비스 개발에 필요한 기초 지식을 공부하고 실제로 만들어보는 동아리다. 한 기수가 총 8주간 풀타임으로 진행된다. 첫 5주 동안은 이전 기수 선배들이 서비스 개발에 필요한 기초 지식을 가르쳐주고, 나머지 3주 동안 우리들끼리 팀을 짜서 실제 서비스를 만든다.
첫 5주 동안은 HTML, CSS와 같은 마크업 랭귀지나 장고 프레임워크 같이 웹개발에 필요한 기초를 배우는데, 주제 하나하나가 인프런이나 유데미에서 보통 4주 이상의 커리큘럼으로 다루는 주제를 일주일 안에 끝낸다.
이후 3주 과정을 시작할 때, 참여한 모두가 자기가 만들고싶은 서비스를 각자 발표한다. 선배들과 동기들의 피드백을 받아가면서 아이디어를 다듬고, 이 중에 5–6개의 서비스 아이디어를 최종 선별한다. 이 아이디어를 중심으로 팀을 짜고 남은 3주간 팀이 모여서 아이디어를 구현한다. 우리 팀은 3주간 매 주 6일 만나서 하루에 8–10시간씩 함께 공부하면서 서비스를 만들었다. 이렇게 서비스 구현 사이클을 한바퀴 다 돌아 실제 서비스를 출시해보니 내가 뭔가 만들 수 있겠다는 자신감이 생겼다.
본인을 포함해서 팀원들 모두 기초지식부터 배웠다고 했는데, 이런 멤버가 모여서 8주 만에 서비스를 출시하는게 가능한가?
그래서 피로그래밍에서는 애초에 기수를 선발할 때 ‘내가 뭐라도 꼭 만들어보겠다’는 분들을 뽑는다. 컴퓨터 사이언스 자체를 깊이 배우는 것보다도 서비스를 만들려는 의지가 강한 사람을 뽑는거다. 그리고 이렇게 모인 멤버들끼리 프로젝트를 진행하면서 많이 고민하고 삽질도 많이 한 게 도움이 되었다. 학생들이다보니 삽질할 시간을 많이 낼 수 있었다.
동시에 피로그래밍은 애초에 이론을 자세히 배우는 것보다는 구현에 중점을 둔다. 첫 5주 이론을 배우는 과정에서도 구현에 필요한 지식 위주로 가르친다. 이후에는 우리끼리 정말 많은 시간을 고민하고 동시에 공부하면서 서비스를 구현한다. 어쩌면 당연하게도 서비스의 퀄리티가 그렇게 높지는 않고, 지금 그때 짜둔 코드나 아키텍처를 보면 부끄럽기도 하다. 하지만 이렇게 고민해서 뭔가를 만들어내는게 그 다음으로 이어갈 수 있는 동기부여를 해줬다.
첫 기수 이후에 한 기수 동안 동아리를 운영하는 회장을 맡으면서 깨달은 것도 있다. 우리는 되도록 한 기수를 비슷한 지식 수준과 성향(서비스를 만든다)을 가진 사람들로 채우려고 한다. 이렇게 하니 가르치는 사람의 지식 수준은 서로 다르더라도 배우는 사람들에게서는 비슷한 퀄리티가 나오더라. 그리고 비슷한 지식 수준을 가진 사람들을 모으더라도 사전에 남들보다 조금 더 아는 상태로 들어온 사람들이 있다. 팀을 구성할 때 일부러 이런 사람들을 팀마다 한두명씩(전체 팀은 5명 정도) 섞는다. 프로젝트를 진행하다보면 다같이 막히는 경우가 있는데, 이렇게 반보정도 앞선 팀원이 있으면 막힌걸 뚫는데 도움이 된다.
만약 피로그래밍 활동을 시작할 때로 돌아갈 수 있다면 어떤걸 다르게 해볼 것 같은가?
활동 자체에서 크게 바꿔보고 싶은 것은 없다. 다만, 활동이 끝난 뒤에 만들어둔 서비스를 계속 개선하고 다듬는 걸 더 해봤으면 하는 아쉬움이 있다. 그 당시에는 몰랐는데, 최근에는 실무에서의 프로그래밍이 새로운 것을 만드는 작업보다 기존에 만들어져 있는 것을 고치고 개선하는 작업이 더 많다고 느낀다. 처음 만들 때에는 최선의 선택이었던 코드나 아키텍처를 상황이 바뀌면 새롭게 고쳐야하는데, 이런 작업을 할 때 필요한 고민을 더 해봤으면 좋았을 것 같다.
*성익님이 피로그래밍 활동을 하며 직접 기록한 블로그입니다(LINK). 프로젝트 진행에 대한 자세한 내용을 볼 수 있습니다.
그럼 다음으로 DevOps를 공부했을 때의 이야기를 해달라. 일단 왜 공부하게 된건가?
이것도 피로그래밍과 관련이 있다. 3주간 서비스를 만들고 발표하기 전날 배포를 하게 되었다. 피로그래밍에서 배포 관련 세션을 듣긴 했는데, 처음 하다보니 정말 많이 헤맸다. 배포가 입문자가 특히 고생을 많이 하는 영역인 것 같다. 참고할 수 있는 레퍼런스도 많이 없었다. 12시간 가까이 작업을 해서 결국 배포에 성공했다. 서비스를 만들고 그냥 로컬에서 돌려서 남들에게 보여주는게 아니라 누구나 접근할 수 있는 웹에 올린게 너무 기뻤다. 너무 짜릿하더라. 이때 ‘배포’라는 키워드에 꽂혀서 구글링 하다보니 DevOps로 이어지더라.
DevOps가 핫키워드가 된지 얼마 안 된 것으로 알고있다. 그만큼 학습할 수 있는 자료가 많지 않았을 것이고, 동시에 알아야 할 영역도 넓다고 들었는데 입문자의 입장에서 어떻게 공부를 시작했나?
우선 구글링을 해서 DevOps에 관한 커리어 로드맵부터 이런저런 자료를 찾아봤다. 그리고 피로그래밍 동아리 선배이면서 같은 학과 선배가 DevOps 개발자로 일하고 있다는 것을 알게되었다. 모르는 분이었지만 콜드메일을 보내서 만나달라고 했다. 이 선배에게 학습을 해야할 키워드와 공부 방향, 그 뒤에 인턴 지원 등에 도움을 받았다. 이후 6개월 동안은 유데미 등에서 강의를 찾아서 혼자 공부했다.
DevOps를 처음 공부했던 때로 돌아간다면 다르게 해보고싶은게 있는가?
일단 간단한 서비스라도 사람들이 많이 몰릴 수 있는 서비스를 만들어 관리하는 것부터 시작했을 것 같다. 실무를 하면서 느끼는건, 결국 DevOps는 실제 서비스에 들어오는 트래픽에 맞춰 Scalability도 고민하고 서버 터지는 것도 걱정해보는 경험을 하는게 정말 중요한 것 같다. 이론만 파서는 이런 경험을 하기 어렵더라.
한 동아리 선배가 예전에 본인의 대학교 학생들을 타겟으로 크롬익스텐션 앱을 만들었다(외대 종강시계). 기능적으로 엄청 복잡한건 아닌데, 사용자가 천 단위로 나온다고 한다. 이보다 간단한 서비스라도 우선 트래픽이 꽂히는 서비스를 하나 만들어놓고 공부하면서 적용해봤을 것 같다.
정말 좋은 포인트인 것 같다. 다만, 아무리 간단한 서비스라고 해도 DAU가 학습에 필요한 만큼 나오는 서비스를 만들고 꾸준히 운영하는 것도 쉽지는 않을 것 같다. 동시에 혼자서 한다면 더더욱.
동의한다. 그래서 개발자와 기획자, 디자이너를 엮어서 서비스를 만들어주는 동아리나 서비스를 이용해보는 것도 방법이겠다는 생각을 했다.
마지막으로 AI를 학습했던 과정을 들어보고싶다. 네이버에서 운영하는 부스트캠프 AITech에 들어갔다고 들었다. 어떤 곳이었나?
풀타임으로 집중 학습을 하는 5개월 부트캠프 과정이다. AITech 첫 기수로 들어갔다. 첫 2–3개월은 교수님들로부터 이론을 비롯한 기초를 빡세게 배운다. 그리고 남은 2–3개월 동안 Kaggle과 비슷하게 모델을 만들고 스코어를 겨루는 내부 컴페티션을 진행했다. 내부 컴페티션은 총 네 차례, 단독 프로젝트로 두 번, 팀 프로젝트로 두 번이었다.
컴페티션 과정이 궁금하다. 시중에 AI 부트캠프에서도 Kaggle로 실습을 많이 하는 것 같다. 그런데 Kaggle을 통한 학습이 현실의 업무와는 괴리가 있다는 생각도 든다. 왜 ‘현실은 문제를 정의하는 단계부터 시작하는데 Kaggle은 이미 명확한 문제정의가 된 상태에서 문제해결을 생각한다’든가, ‘Kaggle은 현실의 지난한 트레인셋 수집 과정을 스킵한다’든가 하는 한계를 느끼지는 않나(관련 아티클).
동의한다. 비슷한 한계는 있었던 것 같다. 그래서 부스트캠프 과정에서도 사이드 프로젝트를 병행하기를 많이 장려했다. 하지만 5개월 내에 배워야 할 양이 너무 많아서 실천해보지는 못했다.
나의 경우, 처음 부스트캠프에 참여하는 것을 고민할 때, 개발 분야에서 일하는 선배들의 의견을 물어봤다. 여러가지 이야기를 하다가 지금까지 공부한 것에 AI 지식을 더해서 MLOps로 커리어를 쌓는 것이 좋겠다는 결론을 내리고 참여했다.
들어갈 때부터 MLOps 분야 지식을 학습하겠다는 목표가 있다보니, 모델을 잘 만들어서 스코어를 올리는 것 보다는 어떻게 모델을 어플리케이션에 올리고 운영할지 고민하며 학습했다. 배운 것을 발표하는 마지막 발표 때는 코스에서 가르치지 않았던, 모델을 서빙하는 아키텍처를 짜고 직접 구현한 과정을 중점적으로 발표했다.
이렇게 내가 목표하는 바를 명확하게 하고 교육과정에 참여하니까 얻는게 훨씬 많았던 것 같다. 부스트캠프도 물론 훌륭한 과정이기는 했지만, 어떤 교육과정이든 교육과정 자체가 줄 수 있는 한계가 있다. 그래서 학습하는 사람이 교육과정을 어떻게 써먹을지 고민하는게 더 중요하다. 일을 하면서 새로운 것들을 배울수록 남들이 만들어놓은 과정 중 내게 딱 맞는 것을 찾기가 어려워지고, 내가 직접 내게 필요한 학습 루트를 만들어서 배워야겠다는 생각이 든다.
이번 인터뷰에서는 성익님이 학습을 하며 적용하신 방식이나 경험하신 것들에 대해 좀 더 구체적으로 그 때의 상황을 물어보려고 노력했습니다. 인터뷰의 양이 좀 늘어나긴 했지만 확실히 성익님이 매 순간순간 어떤 경험을 했고, 어떻게 학습했는지 이해할 수 있었습니다.
이번 인터뷰부터 의도적으로 집어넣은 ‘그걸 하기 전으로 돌아간다면 무엇을 다르게 했을 것 같은가?’라는 질문에서도 많은 인사이트를 얻을 수 있었습니다. 필자가 인터뷰를 하면서 ‘와우’ 했던 내용의 대부분이 이 질문을 통해 나왔습니다.
다음 인터뷰는,
- 전 마이리얼트립 사업개발/HR, 현 로컬스티치 CEO Staff
- 요즘 가장 핫한 중고거래 스타트업 프로덕트 디자이너
- 토스 프론트앤드 옵스 개발자
- and more
가 본인의 실제 학습 방법을 공유합니다.