마키나락스를 MLOps 환경으로 테라포밍하다

MLOps 플랫폼팀

Original Medium Link /development-culture/image0.jpeg

전체의 70%가 개발자로 구성되어 있는 마키나락스. 그렇다면 각 팀의 개발문화는 어떨까요? 이번 시리즈에서는 마키나락스의 개발문화를 심층적으로 탐구하기 위해 마키나락스의 개발팀을 찾아가 봅니다 🚀

첫 번째 주인공은 마키나락스라는 배 위에서 드넓은 바다를 항해하듯 프로젝트 여정을 펼치는 엔지니어들의 가이드가 되어주는 MLOps 플랫폼 팀 리더 병찬님을 만나봤습니다.

마키나락스에 MLOps 환경을 불어넣다.

MLOps 플랫폼 팀

/development-culture/image1.jpeg
MLOps 플랫폼팀을 이끄는 오늘의 주인공 병찬님😊

Q. 안녕하세요, 병찬님! 자기소개 간단히 부탁드립니다.

안녕하세요, MLOps 플랫폼 팀을 이끌고 있는 김병찬입니다. 저는 소프트웨어 엔지니어로 4년 정도 일했고, 마키나락스에 데이터 사이언티스트로 합류한 지 3년째입니다.

Q. 병찬님은 지금까지 계속 AI 분야에서 일 하셨나요?

이전에는 윤성호 대표님과 같이 반도체 분야에서 소프트웨어 엔지니어로 일을 했어요. 개인적인 호기심으로 데이터 사이언스 공부를 시작하고 마키나락스에 합류하게 되었습니다.

Q. AI 분야 중에서도 특별히 마키나락스를 선택하신 이유가 있으신가요?

데이터 사이언스를 혼자 공부하다보니 이 분야에서 계속 성장하고 싶다는 생각을 하게 됐어요. 때마침 윤성호 대표님과 이야기를 나누게 되었는데, 제조 공장에서 생겨나는 기계의 오작동 등의 문제를 AI로 해결한다는 이야기를 들으며 데이터 사이언스 분야의 업무를 하며 성장할 수 있겠다는 생각이 들었습니다. 실제로 팀에 합류해서 이런 역량을 한층 더 발전시킬 수 있었습니다!

/development-culture/image2.jpeg

Q. MLOps 플랫폼팀은 어떤 팀인가요?

저희 팀은 MLOps 플랫폼을 개발하는 팀이고, 저는 팀의 리더로 나아가야 할 총체적인 방향성을 제시하고, 점검하고, 팀원들을 독려하는 역할을 맡고 있습니다. 🙂

Q. MLOps가 생소하신 분들을 위해, MLOps란 무엇인지 설명해 주실 수 있나요?

MLOps는 머신러닝(Machine Learning)과 오퍼레이션(Operations)의 합성어인데요. 머신러닝을 운영하는 데 기반이 되는 소프트웨어, 인프라, 배포, 개발 방법론 등의 전반적인 것을 아우르는 플랫폼이에요. 현재는 오픈소스인 MLOps 플랫폼을 사내 서버에서 운용중인데요. 이 플랫폼을 ML 엔지니어들의 니즈에 맞게 사용할 수 있는 플랫폼으로 개발하는 것이 저희 팀의 과제이자 목표라고 할 수 있습니다.

Q. 그렇군요. 오늘의 주제는 팀별 개발 문화인데요, 좋은 개발 문화의 형성을 위해서는 어떤 것이 필요할까요?

음. 곰곰이 생각해보았는데요, 무엇보다도 좋은 개발자 마인드를 갖추는 것이 좋은 개발 문화를 형성하는 것 같아요.

Q. 좋은 개발자 마인드는 어떤 것인가요?

자신이 습득하거나 깨달은 것, 시행착오를 공유하려는 마인드와 꼼꼼하게 코드 리뷰를 하는 것이라고 생각해요. 무엇보다도 자유롭게 공유하는 문화 속에 좋은 개발자 마인드가 만들어 지는 것 같아요.

Q. 많은 개발자분들이 코드 리뷰의 중요성을 강조하시는 것 같아요. 코드 리뷰를 잘 받기 위한 방법이 있나요?

우선 코드 리뷰에는 리뷰를 하는 사람과 리뷰를 받는 사람이 존재하는데, 저는 개인적으로 리뷰를 받는 쪽의 준비가 더 필요하다고 생각해요. 코드는 짧으면 이슈를 제기하기 쉽지만, 코드가 길면 리뷰하는 사람이 꼼꼼하게 읽지 않고 LGTM(Looks Good To Me) 버튼을 누르기 쉽거든요. 즉, 제대로 된 코드 리뷰가 이루어지지 않을 가능성이 높아요. 그래서 코드 리뷰를 잘 받기 위해서는 리뷰를 받는 사람이 최대한 간단하고 이해하기 쉽게 코드를 만드는 작업이 중요하다고 생각합니다.

https://cdn-images-1.medium.com/max/2412/1*bHuTT9StCv6uAl_5mZ-C2w.png병찬님이 설명하신 LGTM(Looks Good To me)를 설명하는 트윗

Q. 그렇군요. 그렇다면 MLOps 플랫폼 팀만의 개발 문화가 있으신가요?

MLOps 플랫폼은 단어 자체도 생겨난 지 얼마 안 된 생소한 분야예요. 그렇기 때문에 저희 팀 역시 계속 학습하고 함께 공유하고 고민해서 개발하는 방식을 지향하고 있습니다. 팀이 형성될 당시에는 온보딩 자료를 만들었고, 이후 팀원들이 모여 공부하는 기회를 마련하고자 쿠버네티스 인증 시험도 함께 준비했었어요. 끊임없이 새로운 기술을 알아가고 배운 것을 체내화하기 위해 올해 상반기에는 Today I learned (TIL)이라는 문화를 통해서 각자가 학습하고, 배운 것을 공유하기 시작했어요.

/development-culture/image3.jpeg

Q. 그러고 보니 성과공유회 때 TIL이라는 팀 문화를 소개해주셨었네요.

네. TIL은 각자가 오늘 배운 내용(What I Learned)을 적으며 생각을 정리하는 회고같은 활동인데요. 글을 쓰는 사람이 배운 것을 정리하는 용도이기 때문에 강제성이 없고, 정형화된 형식을 따르지 않아요. 이 과정을 통해 팀원들이 서로의 글을 읽으며 인사이트도 얻고 피드백도 교환할 수 있는 장을 만들어주는 문화에요.

Q. 건강한 팀 문화를 형성하고 있는 것 같아요. 이런 문화를 만드신 계기가 있나요?

처음 말한 좋은 개발 문화와 좋은 개발자 마인드에 부합하는 문화가 아닌가 싶어요. 공유하는 문화가 활성화되려면 먼저 ‘공유하는 행위’를 받아들일 준비가 되어있어야 한다고 생각하거든요. TIL과 같은 방식이 있으면 이러한 문화에 쉽게 적응할 수 있다는 생각이 들었습니다!

Q. 병찬님이 기술 지식을 공유하고 이러한 문화를 마련했을 때 팀원들의 반응은 어땠나요? 🤓

다행히도 다들 반기는 분위기였고, 무엇보다 쓸데없는 일이라고 생각하시지 않아서 다행이라고 생각했어요. (웃음)

Q. 이번엔 회사 이야기를 조금 해볼까해요. 병찬님은 마키나락스의 초기 멤버이신데요. 이전과 비교해 회사의 문화나 분위기가 바뀐 부분이 있을까요?

맞아요. 저는 Co-founder분들을 제외하고는 두 번째 정식 멤버로 입사했는데요. 여섯 명이 있던 시절은 문화가 있었다고 보기가 어려운 것 같아요. 현재는 인원 수도 많이 늘었고… 예전과 크게 달라진 점을 꼽자면 물리적으로, 구조적으로 대표님과 거리가 생긴 것 같아요. 이건 어쩔 수 없는 일이지만? (웃음) 멤버가 많아지면서 이름을 다 외우지 못하는 경우도 생기고요 😂 변한 부분도 있지만 그래도 자유로운 분위기 속에서 눈치보지 않고 개개인이 역량을 마음껏 발휘할 수 있는 문화만큼은 꾸준히 이어지고 있는 것 같아요.

Q. 이번에는 커리어와 팀에 관련된 질문을 드려볼게요. 커리어 개발을 위해 개인적으로 하는 노력이 있으신가요?

저는 같은 팀의 민환님의 소개로 Self-Hosted이라는 방법을 통해 인프라 지식을 터득하고 있습니다. 시중에는 대부분의 상용 소프트웨어들이 출시되어 있어서 필요에 따라 구매해서 사용하면 되지만, 비슷한 것들이 오픈 소스로 공개된 것도 있어요. 이렇게 오픈 소스로 공개된 것을 설치하고 운영하는 과정에서 습득하는 것들이 의외로 많아요. 언젠가 민환님이 Self-hosted 취미를 “쓸모없음의 쓸모”라고 설명하셨는데, 그 말이 진짜 맞는 것 같아요.

개발자의 백만가지 취미 | 슬기로운 Self-hosted 생활 보러가기

Q. 요즘 많은 곳에서 개발자들을 필요로 하는데, 보통 개발자들이 이직 할 때나 혹은 직장을 선택할 때 가장 고민하는 것은 무엇인가요?

우선 연봉이 가장 중요한 고려 요소가 아닐까 싶은데요? 😉 만약 고민중인 기업의 연봉이 크게 차이 나지 않는다면, 개인적으로는 성장 가능성을 기준으로 고민할 것 같습니다.

Q. 그렇다면 팀원을 채용할 때 가장 중요하게 보는 부분이 있으신가요?

우선 서류 단계에서는 Github의 유무를 살피고 있습니다. 개인적으로 개발자는 사이드 프로젝트를 당연히 해야한다고 생각해서, 개인 Github를 명시해주는 지원자분들의 서류를 중심으로 검토합니다. 면접단계에서는 실력도 중요하지만 대화가 가능한지의 여부를 살피는 것 같아요.

오…대화가 가능한 사람이라..! 조금 의외의 답변인데요?

개발자에게는 코드를 짜는 과정 뿐만 아니라 자신이 짠 코드를 팀원이 이해할 수 있도록 설명하는 과정도 중요하거든요. 그래서 지원자가 면접관과 지속적으로 소통하는지를 확인합니다. 그 외에 공식 문서를 읽고 셋업하는 과정을 이행하는 능력도 면밀히 보고요.

Q. 앞으로 오시게 될 팀원 분에게 미리 해주고 싶은 조언이 있다면?

음… 신입이신 분들에게는 꼭 드리고 싶은 조언은 다른 사람들이 짠 코드를 최대한 많이 보면서 이해하고, 개선할 수 있는 점을 생각하는 습관을 들이는 것을 추천합니다! 제가 대학생일 때는 프로젝트를 진행하면서 코드를 혼자 짜야 했.. (멈칫) 아…이러면 너무 “라떼는 말이야…”가 되나요? 😭

아니예요! 진심이 느껴지는 조언인데요? 계속 해주세요!

😭 아무튼 지금 돌이켜보니 혼자 스스로 코드를 짜는 것보다 다른 사람의 코드를 자주 읽어보는 것이 현업에서 더 유용하다는 생각이 들더라고요. 학부를 막 졸업하신 분들의 경우, 자신의 코드에 대해 누군가에게 도전적인 질문과 피드백을 받는 과정이 생소하기 때문에 코드 리뷰를 마치 시험 문제를 풀고 채점을 기다리는 것처럼 받아들이는 경우가 많은데요. 코드 리뷰는 정답이 정해져 있는 것이라기보다 코드를 좀 더 효율적이고 이해하기 쉬운 방법으로 짜기 위한 작업이라고 생각하면 훨씬 부담이 적을 것 같아요. 그리고 오픈소스에 기여해보는 것을 추천드립니다. 자세히 들여다보면 오픈소스에서도 허점을 생각보다 많이 찾을 수 있고 기여할 수 있어요. 실무에서는 처음부터 끝까지 코드를 짜기보다는 오픈 소스처럼 다른 코드를 잘 읽고 필요한 상황에 알맞게 활용할 수 있는 능력이 훨씬 중요하니까요.

Q. 너무 좋은 조언인 것 같아요. 그러면 마지막으로 MLOps 플랫폼팀을 한마디로 정의한다면 뭐라고 할 수 있을까요?

생명이 없던 행성을 생명이 살 수 있도록

테라포밍 (Terraforming)하듯,

마키나락스에 MLOps환경을 불어넣는 팀.

(조심스럽게) 혹시 테라포밍(Terraforming)이라는 단어를 아시나요?

아니요 (😳)

테라포밍 (Terraforming)은 화성과 같은 임의의 행성을 생명이 살 수 있는 지구처럼 바꾸는 작업을 설명하는 우주 사이언스 용어예요. 현재 내부적으로 MLOps 플랫폼을 사용하는 팀들이 생기고 있어 협업할 기회가 많아지고 있는데, 다른 팀원분들이 혼자서도 손쉽게 MLOps 플랫폼을 사용할 수 있도록 초기에 가이드하는 역할을 하고 있어요. 그래서 저희 팀은 마키나락스가 MLOps 를 사용할 수 있는 환경을 형성하는, 일종의 테라포밍하는 작업을 총괄하는 역할을 맡고 있다고 생각합니다.

마키나락스를 MLOps 환경으로 테라포밍하는 역할을 담당하고 있다는 병찬님의 설명으로 MLOps 플랫폼 팀이 어떤 일을 하고 있는지 쉽게 이해할 수 있었고, 공유하는 문화를 원동력 삼아 일하는 MLOps 플랫폼 팀!이라는 사실을 알게 되었습니다. 😊

그럼 다음 번에 소개할 마키나락스의 개발 문화도 많이 기대해 주세요🚀