Do not index
Do not index
안녕하세요, 닥터차 서비스를 제공하고 있는 오토피디아에서 인턴으로 일하고 있는 김동주입니다.
2022년 1월 3일부터 2월 24일을 마지막으로 2개월 정도의 인턴 생활을 마치게 되었습니다. 2개월은 어찌보면 정말 짧은 시간이었지만 그 시간 안에 회사에 많은 것을 기여할 수 있었고 그만큼 저도 같이 성장할 수 있었습니다. 또한 전 구성원이 회사의 비전과 가치를 공유하며 일하는 모습을 보고 배울 점이 많은 회사라고 생각했습니다. 이 인턴을 마무리하면서 제가 어떻게 인턴을 하게 되었는지부터 무슨 일을 했고 그 과정에서 느낀 점을 정리해보려고 합니다.
배경
저는 2019년에 딥러닝 스터디를 하고 그 인연으로 음성인식 인공지능을 개발하는 회사에서 인턴을 하며 머신러닝 분야를 경험했고, 2020년부터 21년 여름까지 군대 복무 후 복학하여 웹/앱개발 스터디를 했습니다. 이 과정에서 실제로 사용자가 사용할 수 있는 프로덕트를 만들고 싶다는 생각이 들어 인턴 지원 준비를 하고 있었습니다. 그 때 알고 지냈던 케빈이 인턴십 지원 프로그램인 CUop을 통해 오토피디아에 지원해 볼 것을 제안해주셨습니다.
입사 과정
오토피디아 리서치팀에서 처음 제안주신 포지션은 데이터 분석가였습니다. 인공지능은 아주 살짝 해보았고, 프론트엔드와 백엔드 모두 공부를 시작한 지 얼마 되지 않았기 때문에 다양한 분야를 경험해 보는 것도 좋을 것이라고 생각하여 지원하게 되었습니다.
지원서를 작성하면서 내세울 만한 활동이 별로 없다고 느꼈는데요, 그때만 하더라도 데이터 분석가는 인공지능 개발자의 다른 이름이라고 생각해서 지원서에는 머신러닝 관련 경험 위주로 적었습니다. 하지만 위에서 말씀드렸다시피 아주 살짝 해보았을 뿐 별다른 큰 프로젝트를 혼자 힘으로 해본 적이 없어서 경험이 부족했기 때문에 지원서에 적을 만한 것들이 많이 없었습니다. 그래서 지원서에는 기술적인 저의 실력을 강조하기보다 제가 주체적으로 성장하고 싶고, 열정이 있다는 것을 강조하였습니다. 지금와서 생각해보면 무슨 자신감인가 싶은데요, 다행히 회사에서는 이런 모습을 긍정적으로 봐주신 것 같습니다.
인터뷰는 화상으로 진행되었고, 제가 지원서에 작성한 인공지능 경험에 대해 구체적으로 물어보셨습니다. 인터뷰를 진행하면서 회사에서 제가 겪은 경험들에 대해서 좋은 인상을 가지고 있다는 것을 느낄 수 있었습니다. 그러다 리서치팀의 팀장을 맡고 계신 보성님께서 솔직하게 어떤 분야에 관심이 있는지 여쭤보셨고, 저는 사실은 인공지능보단 웹/앱 개발 등 현실적인 프로덕트를 만드는 것에 관심이 있다고 답변드렸습니다. 그러더니 잠시 회의를 하시고 나서, 마케팅 효율 증대를 위한 콘텐츠 포스팅 자동화 툴의 개발 포지션을 제안해주셨습니다. 저는 업무 자동화하는 일이 재미있을 것 같다는 생각이 들어 좋을 것 같다고 답변을 드렸습니다. 그러자 얼마 지난 후, 최종 합격 통보를 받게 되었습니다!
업무 내용
2개월 동안 제가 맡은 업무는 인터뷰에서 제안해주셨던 콘텐츠 포스팅 자동화 툴의 개발이었습니다. 여러 가지 업무가 복합적으로 있었지만 크게 보자면 결국 전부 마케팅 효율 증대를 위한 업무 자동화였습니다. 마케팅 업무가 생각보다 굉장히 반복적인 작업이 많았고, 일을 하면서 잠깐 헷갈리면 첫 단계부터 다시 시작해야 하는 어려움이 있다는 것을 알았습니다. 이를 시스템화하여 자동화하자는 의견이 사내 백로그에 지속적으로 쌓여왔고, 제가 인터뷰에서 말씀드린 관심 분야와 회사에서 필요한 분야가 잘 맞는다고 생각해서 이런 업무를 제안해주셨다고 말씀해주셨습니다.
인턴쉽 프로그램 시작 직후에는 마케팅 팀과 미팅을 통해 현재 업무 프로세스와 어떤 부분에서 자동화가 필요한지 파악했습니다. 실제 업무 프로세스를 지켜보면서 어떤 과정을 통해 자동화해야할지 구조를 그려보았습니다. 자동화하는 데에는 Selenium을 주로 활용했는데요, 한번도 사용해본 적이 없기도 하고 자동화 업무 중 네트워크 설정을 바꿔주는 작업이 포함되어 있어서 로컬 환경에서 개발을 시작하였습니다. 처음부터 Docker 이미지로 만들 것을 가정하고 작업하지 않았기 때문에 나중에 로컬 환경에서 서버 환경으로 옮길 때 굉장히 많은 고생을 했습니다. 그래서 다음부터는 프로젝트를 시작할 때 Docker 이미지에서부터 시작해야겠다는 생각을 하게 되었습니다.
자동화하는 모듈을 만드는 것은 그렇게 어렵지도 않았고 오래 걸리지도 않았지만, 네트워크 설정을 하는 것이 문제였습니다. Docker 안에서 네트워크를 설정해야 하다보니 레이어가 하나 더 쌓여있는 느낌인데, 어떻게 해야 할 지 감이 잘 안 잡혔습니다. 그러던 와중 Google Cloud Platform의 VM 인스턴스를 활용해 보는 것이 어떻겠냐는 제안을 들었고, API 요청을 통해서 간단히 네트워크 인터페이스 설정을 바꿀 수 있어서 VM 인스턴스를 사용하기로 결정하였습니다. 이 과정에서 네트워크 관련 지식이 많이 부족하다고 느꼈습니다. 여전히 Docker에서 네트워킹이 어떻게 이루어지는지 완벽하게 이해하지 못했으니까요. 가능하다면 나중에 네트워크 관련 공부를 더 해보고 싶다는 생각이 들었습니다.
이렇게 만들어진 모델을 API로 배포하였는데요, VM 인스턴스 안에 Docker 이미지를 통해 컨테이너를 실행하고, 컨테이너 안에서 Flask 서버를 실행해서 API 요청을 받고 수행하는 형식이었습니다. 이 과정에 사용하는 VM 인스턴스와 Flask 등에 대한 경험이 부족해서 로컬 환경에서 테스트한 것처럼 작동시키는 데에 오랜 시간이 걸렸습니다.
여기에 API 요청을 보내는 외부 컨트롤러는 리서치팀 내에서 운영 중인 Airflow 상에서 K8SPodOperator를 사용하여 배포되어 주기적으로 실행됩니다. 해당 Operator는 마케팅팀이 작성한 콘텐츠가 저장된 노션 테이블로부터 신규 콘텐츠를 가져와 업로드하도록 구현하였습니다.
일반적으로는 위와 같이 내부 인원이 작성한 콘텐츠들을 관리하기 위해서는 자체적인 CMS(Content Management System) 사이트를 개발하는 경우가 많지만 노션의 데이터베이스 블록을 일종의 프론트엔드 시스템으로 사용해서 개발 공수를 많이 아낄 수 있었습니다. 더하여 노션에서 제공하는 API를 바로 활용하는 경우에는 코드가 상당히 지저분해질 수 있는데요. 다행히 리서치 팀에서 일하셨던 테드가 만든 pynodb 패키지(노션 데이터베이스 API의 Python Wrapper)를 통해 노션 데이터베이스 블록을 간편하게 다룰 수 있었습니다. 이때 패키지의 개선 사항이 필요하여 Pull Request도 날리고 테드로부터 PR Review도 받아 오픈소스에 기여하는 과정을 체험할 수 있었습니다. 이전에는 패키지는 그냥 받아서 사용하는 것이고 완전무결한 것이라고 생각했다면, 지금은 패키지는 언제든지 개선할 수 있고 보완할 점이 존재해서 내가 기여할 수 있는 것이라고 생각하게 되었달까요. 오픈소스에 기여하고자 하는 그 심리가 무엇인지도 알게 되었습니다.
프로젝트 후기
이렇게 하나의 프로젝트를 끝마치고 마케팅 팀원분들께 개발된 자동화 툴의 사용자 교육을 진행하였습니다. 이전에 요구사항으로 말씀하셨던 여러가지 사항들이 반영되어 동작하는 것을 보시고 신기하고 너무 좋다고 말씀주셨습니다. 또, 팀원분들이 직접 업무에서 활용하시는 것을 눈으로 보니 제가 회사에 도움이 되었다는 사실에 뿌듯함을 느낄 수 있었습니다. README와 docstring까지 작성하며 하나의 프로젝트를 완벽하게 끝낸 경험이 얼마나 값지고 소중한지 알 수 있었습니다. 이전에는 프로젝트를 시작하면 용두사미가 되어 제대로 끝내지 못하기 일쑤였는데, 완성된 프로젝트를 보고 있자니 한 계단 위로 성장해 나간 기분이었습니다. 이렇게 하나씩 하나씩 새로운 프로젝트를 완성하는 개발자 인생의 포문을 열었다는 생각이 들었습니다.
회사 생활
회사에서 복지에 대해 사소하지만 많은 것들을 신경쓰고 있다고 느꼈는데요, 자율출근제를 도입해서 8시에서 11시 사이에만 출근하면 되다보니 각자 패턴에 맞게 다양한 시간에 출퇴근하는 것을 볼 수 있었습니다. 그래서 몇 시까지 도착해야한다는 부담없이 그냥 일어난 시간에 맞추어 여유롭게 출근할 수 있었습니다. 9시보다 좀 늦어도, 일러도 상관 없었던 것이 정말 큰 장점인 것 같습니다. 또 주 40시간 근무를 유연하게 조절할 수 있어서 월요일부터 목요일까지 열심히 일하고 금요일날 조금 일찍 퇴근할 수 있고, 휴게 시간을 자유롭게 조절할 수 있는 것도 엄청난 장점이었습니다. 저는 고양시에서 출퇴근을 해서 왕복 3시간 정도 걸렸는데, 학교에서 기숙사 생활만 하다보니 이 출퇴근 시간이 처음에는 적응되지 않았지만 지금은 잠깐 눈을 붙이기도 하고 전자책을 읽기도 하는 등 출퇴근도 알차게 보내고 있습니다.
회사 위치가 성수역과 뚝섬역의 중간에 있는데, 카페 거리와 가깝고 여러 맛집이 많아서 점심 시간마다 어떤 메뉴를 먹을지 행복한 고민에 빠졌습니다.
또한 회사의 분위기가 수평적이고 좋은 분들이 많아서 적응하는 것도 오래 걸리지 않았습니다. 특히 리서치팀 보성님과 케빈이 많이 도와주시고 조언을 아끼지 않아주셔서 더 빨리 적응할 수 있었고 더 나은 코드를 작성할 수 있었습니다. 또 개발적인 지식뿐만 아니라 여러가지 사회 생활이나 일상 생활에 필요한 팁들을 전수해주셔서 감사하다는 말씀을 전하고 싶습니다.
앞으로의 미래
오토피디아에서 근무하면서 제가 실제로 이익을 창출해낼 수 있는 사람이라는 것을 알았습니다. 이전까지 마땅한 프로젝트 하나 제대로 해 본적이 없었는데, 이 인턴 경험을 통해서 구조적인 프로젝트를 만들 수 있었습니다. 이런 경험을 통해서 앞으로도 회사에서 개발자로 일하겠다는 생각이 공고해졌고, 동시에 제가 프로젝트를 통해서 네트워크 등 저수준 인터페이스에 대한 이론과 지식이 많이 부족하다고 느꼈습니다. 이전에는 컴퓨터과학 이론에 대한 지식보다 실무적인 지식이 많이 필요하다고 느꼈다면, 확실히 기초 이론이 탄탄해야 새로운 것을 받아들일 때 더 유리할 것이라는 생각이 들었습니다. 다시 말해 스페셜리스트가 되기 전에 먼저 제너럴리스트가 되어야 한다는 생각이 들었습니다. 그리하여 저는 이번에 인턴을 마치고 학교로 돌아가 부족한 부분에 대해 좀 더 공부해 보는 시간을 가져보려고 합니다.
제가 앞으로 어떤 방향으로 나아가야 할지 갈피를 잡을 수 있었던 시간이었습니다. 저 혼자 했다면 하지 못했을 일이며, 이렇게 성장할 수 있도록 도와주신 오토피디아 회사 구성원 분들께 무한한 감사를 보냅니다.
글쓴이