2020 회고

올해도 어김없이 반성과 내년에 대한 준비를 위한 이 시간이 돌아왔습니다. 4년째 회고 글을 작성하지만 100% 만족스러운 적은 없었던 것 같네요. 올해도 역시 아쉬운 점들이 많이 있었지만, 반대로 생각하면 더 발전할 수 있는 여지가 남았다고 위로하며 2020년 회고를 시작해봅니다. 매년 포맷이 조금씩 달라지는데, 올해 회고는 몇 가지 소주제별로 나눠서 정리해봤습니다.

COVID-19와 원격 근무

올해 회고라면 역시 COVID-19를 제외하고는 얘기하기 어려울 것 같다. 글을 작성하는 2020년의 끝자락에서도 매일매일 심각하게 확진자가 늘어나고 있고, 해외의 사정도 크게 다르지 않아 더욱 걱정되는 바이다. 화제를 돌려서, 올해 1월 초에 입사했는데 정확한 수치는 모르겠지만 회사에 출근한 날보다 원격 근무를 한 날이 훨씬 더 많았던 것 같다. 마스크 잘 쓰기, 손 잘 씻기와 같은 기본적인 사람들의 생활 양식에 많은 변화를 주었고, 원격 근무가 큰 거부감 없이 가능한 회사는 대부분 원격 근무를 도입하고 있는 것으로 알고 있다. 아래에서 조금 더 얘기하겠지만, 새로운 도메인으로 이직한 나의 경우 팀 합류 초기부터 원격 근무를 하게 되니 알게 모르게 애로사항이 좀 생겼다. 가령, 점심 먹으러 식당에 걸어가는 시간이나 커피를 마시면서 은근슬쩍 궁금한 것에 대해 많이 물어봤었는데 원격 근무를 본격적으로 시작하면서 이런 보너스 시간을 활용하지 못하게 된 부분이 아쉬웠다. 중간중간 팀 내 회고를 했을 때도 초반에는 이런 업무수행 방식 변화를 꽤 힘들어하는 팀원들이 적지 않았는데, 지금은 나도 마찬가지고 다들 변화된 방식에 많이 적응한 것 같다. 개인적으로는 Pomodoro technique 을 내 루틴에 맞게 타이머를 설정하고 의식적으로 쉬는 연습이 많은 도움이 된 것 같고, 그 외에 출퇴근으로 보통 2시간이 소요됐는 데 그 시간을 대신 전화 영어로 활용하면서 영어 공부에 시간을 투자할 수 있었다.

새로운 도메인과 조직 문화

이전 회사에서는 통칭 검색, 조금 더 세련되게 말하면 Information Retrieval 관련 연구와 서비스를 했었다. 서비스에서 생성되는 여러 로그 데이터를 정제하고 모델링하여 사용자에게 최상의 검색 품질을 제공하는 것이 주된 목표였었다. 돌아와서 현재는 여러 가지 유형의 스팸 발송자를 사전에 감지 및 차단하여 결국 최종 목표가 사용자에게 최상의 서비스 경험을 제공하는 측면에서는 비슷한 것 같다. 고객 관점에서 엔지니어가 하는 일은 추상적으로 비슷하지만, 도메인을 옮긴다는 것은 생각보다 쉬운 일이 아니었다. 돌이켜보면 면접 때도 도메인 이동에 대해서 걱정하시는 질문을 받았는데, 그때는 무슨 생각인지 패기롭게 결국 기본기가 있으면 크게 다르지 않을 것 같다고 했었던 민망한 기억이 난다. 이 말은 반은 맞고 반은 틀렸다고 생각하는 데 바뀐 도메인에서도 문제 해결을 위해서는 데이터 정제 및 수리통계 기본기가 매우 중요한 점에서 반은 맞았고, 틀린 점은 생각보다 Anti-spam 도메인에 특화된 여러 가지 비즈니스를 꽤 고려해야 한다는 점이 있었다. 만 1년이 돼가는 시점에서도 아직 자신 있게 도메인에 익숙하다고 얘기하지 못하는 점이 조금은 부끄럽지만 입사 초기보다는 많이 발전했다는 것을 위안 삼으려고 한다. 조직 문화 역시 생각보다 아주 달랐는데, 우선 매니저가 외국인이 아니라는 점이 나에게 생각보다 큰 차이가 있었다. 영어 커뮤니케이션이 나름 익숙했지만 역시 모국어로 상호 피드백을 하는 것과는 천지 차이라는 걸 다시 알 수 있었다. 추가로 여러 조직이 얽혀서 커뮤니케이션 스트레스가 다소 있었던 이전 회사보다는 대부분의 업무 진행이 팀 내부 커뮤니케이션으로 이루어진 부분이 차이가 있었다. 조직 문화는 개인마다 느끼는 점이 다르기 때문에 어디가 좋다 나쁘다고 얘기하기는 힘들 것 같고, 다만 한 번쯤은 다른 조직 문화를 겪어 보는 것이 시야를 넓히는 데 도움을 줄 수 있는 것은 확실하게 얘기할 수 있을 것 같다. 다행히 내 경우 팀원 중 일부는 이미 알고 지낸 사이였고, 다른 팀원들도 내가 온보딩하는 데 많은 도움을 줘서 그렇게 어렵지 않게 적응 할 수 있었다.

엔지니어로서의 발전

이전 글들을 보면 어느 정도 유추할 수 있겠지만, 기존에 주로 사용한 기술 스택은 Hadoop ecosystem (Spark, Hive)와 Apache Solr 정도로 얘기할 수 있을 것 같다. 새로운 도메인으로 넘어온 만큼 사용하는 기술 스택도 꽤 많이 달라졌는데, 내 경우 기존의 익숙한 것만 하는 것이 아니라 외연을 넓힐 수 있게 되어서 굉장히 만족스러웠다.

Back-end engineering

이전 회사에서는 앞단에서 데이터 가공 후 모델을 만들고, 그것을 검색 엔진에서 활용할 수 있는 방식으로 배포를 하는 것이 주된 업무 플로우였다. 검색 엔진의 결과를 바탕으로 Front-end에 데이터를 내려주는 Back-end 서비스가 따로 있었기 때문에 흔히 얘기하는 Spring과 같은 Back-end 코드를 거의 볼 일이 없었다. 물론 내부에서 사용하는 Admin이나 개인적으로 사용하는 소규모 App 등은 있었지만, 실 서비스 규모의 Back-end 개발은 이번이 처음이라고 볼 수 있을 것 같다. 팀 내에 Back-end 개발을 잘하는 엔지니어가 많아서 내가 직접 코어 한 부분을 건드릴 일은 거의 없지만, 운영 대응과 모델 서빙을 위해서 적지 않은 시간을 Back-end 개발 및 공부에도 투자했던 한 해였다. 여전히 부족해서 많은 공부가 필요하지만, 팀 내에서 사용하는 스택인 Spring (Boot)와 Flask with Celery 개발 및 코드 리뷰로 많이 배울 수 있었다.

Kubernetes (k8s)

역시 최근 대세인 Kubernetes를 더 거스를 수 없게 되었다. 전사적으로 Cloud 환경으로의 이전이라는 목표가 셋업되지 않았다면 이렇게 짧은 시간 내에 서비스들을 전부 옮길 수 있었겠느냐는 생각이 들기는 한다. 옮기면서, 그리고 옮기고 나니 왜 k8s가 이렇게 주목받는지 어느 정도는 느낄 수 있게 되었다. 팀 내의 모든 구성원이 k8s 관련 경험이 없거나 적었기 때문에 Kubernetes in Action으로 스터디를 진행했었고, 그 이후에 본격적으로 서비스 이전을 시작했다. 다만 대부분이 그렇듯이 이론으로 배운 것과 실전에 써먹는 것은 조금의 차이가 존재했고, 그 과정에서 생기는 문제의 트러블슈팅은 생각보다 괴로운 부분들이 좀 있었다. 다른 공부할 것들이 많긴 하지만, 시간을 좀 내서 Best Practice 등을 좀 더 살펴봐야겠다는 생각이 들었다.

Hadoop Ecosystem (Spark, HBase, Zeppelin)

가장 자신 있는 기술 스택 중의 하나인 Hadoop Ecosystem은 이직 후에도 계속 활용하였다. 처음 팀에 참여하면서 도메인에 익숙해질 때까지는 Back-end engineering이나 모델링보다는 이런 데이터 파이프라인 쪽을 먼저 본 것이 팀에 녹아드는 데 많은 도움이 된 것 같다. 대부분 파이프라인이 Spark Batch App으로 작성되어 있고, 일부는 Streaming으로 구성된 형태라 크게 낯선 부분은 없었다. 오히려 기존에 AWS의 EMR처럼 Managed로 제공되는 형태가 아니라, 사내에서 직접 구축한 프레임워크를 제공해주는 환경 이어서 트러블슈팅 시 일부 애먹은 부분이 또 큰 경험의 자산이 되었다. HBase 데이터 적재 연동과 Zeppelin 구축을 예를 들면, 비교적 자료가 많은 EMR이 아니라 사내 자체 프레임워크를 사용하다 보니 오픈 소스를 우리 상황에 맞게 수정해야 하는 부분이 많이 있었다. 이런 트러블 슈팅 경험을 잘 정리해서 블로그 포스트로 작성했어야 하는데 미완성 상태로 Backlog에 있는 점은 반성해야 할 부분

Data Modelling

대외비에 가까우므로 자세한 내용은 작성하기 어렵지만, NLP나 Information Retrieval 관련 연구를 주로 따라갔던 작년에 비해 Time Series Analysis나 Social Graph 등 새로운 영역의 연구도 많이 배웠던 한 해였다. Graph 관련 데이터 모델링은 리드 엔지니어를 통해 어깨너머로 많이 배우게 됐고, 굉장히 파워풀한 모델임을 실제 서비스에 적용하면서 몸소 느낄 수 있었다. 또한, 항상 강조되는 부분이지만 모든 영역에서 Deep learning 만능이 아니라 실제 서비스 상황에 맞게 간단한 선형 모델이나 통계 기법 등을 적용해볼 수 있었다. 만으로 거의 1년을 채운 이 시점에서 도메인에도 어느 정도 익숙해졌고, 내년에는 좀 더 적극적으로 데이터 모델링에 기여를 해보려고 한다.

2021년은?

유감스럽게도 날이 따뜻해져서 바이러스의 영향력이 조금 줄어드는 내년 여름까지는 COVID-19가 바꾸어놓은 생활양식에서 크게 벗어나기 어려울 것으로 보인다. 즉, 개개인이 원격 근무에 더 익숙해져야 하고 최선의 방식으로 의사소통을 하면서 좋은 퍼포먼스를 내는 것이 여전히 중요한 문제가 될 것이다. 나 역시 팀의 한 구성원으로서 더 적극적으로 의견을 개진하고 상호 피드백을 통해 문화를 개선하는 데 도움이 되고 싶다. 2020년은 얇고 넓게 기술 스택을 확장했다면, 2021년에는 다시 특정 기술 스택에 대해서 깊게 발전할 수 있게 노력해보려고 한다. 매년 회고를 하면서 내년에는 어떤 것을 하겠다는 목표를 회고 마지막에 작성했던 것 같은데 올해는 그렇게 하는 게 아니라 평소 하던 루틴을 지키자로 갈무리하려고 한다. 대신 다른 사람에게 설명할 수 있을 정도로 공부하고, 또 그것을 공유할 수 있게 블로그 포스트를 다시 열심히 작성하는 것으로 목표 설정을 해본다.

막간으로 홍보를 잠깐 하자면, 저희 팀에서 다양한 기술 스택(Back-end Engineer, Data Engineer, Data Scientist)의 엔지니어를 채용하고 있습니다. 데이터 정제 및 모델링부터 서비스까지 많은 부분을 커버하고 있어서 엔지니어 많이 필요합니다. 관심 있으신 분들은 편하게 연락주시거나 채용 사이트 로 적극 지원해주세요 : )