Delivery Hero HQ
안녕하세요, 저는 Delivery Hero Korea에서 6년째 근무하고 있는 백엔드 개발자입니다. 현재는 MSA TF팀을 리딩하고 있습니다.
지난 9월, Developer Exchange Program의 일환으로 딜리버리 히어로(Delivery Hero) 독일 팀과 MSA에 대한 기술교류 기회를 가질 수 있었습니다.
독일 방문에 앞서, 한국의 상황을 요약하면 다음과 같습니다.
두 개의 배달음식 주문 플랫폼 (요기요 & 배달통) — Lieferheld, pizza.de (또는 foodpanda, foodora)와 유사
한 달에 한 두개씩 늘어나는 새로운 기능에 의해 점점 커져가는 Monolith System
지속적으로 증가하고 있는 주문수와 임직원 수
고속 성장하는 회사라면 모두 가지고 있을 기술적 부채
MSA TF팀은 위와 같은 문제들을 해결하고자 Monolith system에서 기능을 떼어내어 개선하고, 분할된 시스템은 한국의 모든 플랫폼이 사용 가능하도록 작업하고 있습니다.
현재까지는 새로이 만드는 것들 중심으로 MSA를 실행하고 있고, 복잡하게 얽혀 있는 서비스들을 분할하기에 앞서, 우리보다 먼저 비슷한 고민을 했고 성공적으로 수행한 딜리버리히어로의 두 팀에게 그들의 경험과 노하우를 직접 들어볼 수 있는 기회를 얻게 되었습니다. 함께 일하고 있는 백엔드 개발자 이정민님과 독일 팀을 만났습니다.
아래는 만났던 팀들에 대한 소개와 느낀 점입니다.
DHG (Delivery Hero Germany)
제일 먼저는 우리의 Host인 Delivery Hero Germany 팀을 만났습니다. 우리와 같은 고민을 했던 팀 중 하나이며, Dowant라는 우리와 같은 코드베이스를 사용하고 있는 팀이기도 합니다. (현재 한국의 Dowant는 2012년에 Lieferheld로 부터 복사된 것입니다.)
2년 전에 Lieferheld의 Dowant로 Pizza.de라는 서비스 플랫폼을 마이그레이션 했고, 뒤이어 주요 기능을 분할한 팀으로 이전 모습이 우리의 현재 상황과 굉장히 유사한 팀입니다. 유지보수와 성능에 우선 순위를 두고 현재 상황에서 꼭 필요한 일들부터 분할을 진행한 것으로 보였습니다.
클라이언트 팀들과 만날 기회가 있었는데 앱과 웹 주문 수 비중이 50 vs 50 이 라는 것에 조금 놀랐습니다. (한국은 95 vs 5)
개인적으로 흥미로웠던 것은 Pull request가 올라 왔을 때, 다른 개발자가 직접 폰으로 기능 테스트를 한다는 것과 앱 릴리즈 전에 Stakeholder를 포함한 미팅에서 같이 테스트하는 시간을 가진다는 것이었습니다.
Data Fridge
작년에 9cookies integration을 위해 한국에 방문했던 Vicente가 팀을 옮겨 맞아 주었습니다. 여러 플랫폼의 데이터를 한곳으로 모아서 분석하고, 필요에 따라서는 Global service들을 쉽게 integration할 수 있게 해주는 플랫폼으로, 딜리버리히어로 네트워크(약 40개국, 20여개의 서비스)의 모든 데이터가 한 곳으로 모이고 또 필요한 곳으로 전달 된다면 새로운 서비스를 만들고 가져다 쓰는 일이 무척 편해질 것으로 기대 됩니다. 개인적으로는 앞으로 SNS, SQS를 어떤 방향으로 이용해야 할지 피부에 와 닿는 좋은 시간이었습니다.
MJAM
Austria향 서비스 플랫폼으로 2년전 한국을 방문해서 안면이 있는 Rawad가 맞아 주었습니다. 이곳 또한 Dowant를 사용하고 있는 서비스 플랫폼이라는 점에 놀랐고, 라이브는 아니지만 스테이징 환경이 모두 AWS에 올라가 있다고 들었습니다. 만약 우리 시스템이 AWS에 모두 올라가게 된다면, 많은 도움이 될 것으로 보입니다.
Pandora
서두에 말씀드렸던 2개의 서비스 플랫폼(foodpanda, foodora)을 하나로 통합한 팀중 하나입니다. 통합 방식이 신기했었는데, 각 챕터(Functional team)에게 플랫폼을 선택하게 하고, 스쿼드(Cross functional team)는 두 플랫폼의 사람들을 Mixin 해서 조직했다고 합니다.
또한 백엔드의 경우 선택된 플랫폼을 기준으로 스쿼드 갯수만큼의 복사본을 가지고 시작하여, 각 스쿼드가 자신들의 업무 영역안에 있는 소스 및 데이터베이스 변경만을 하고 있다고 합니다. 이를 가능하게 하기 위해, 맨 처음 한 일이 맨 앞단에 Nginx를 세우고 해당 Nginx가 들어오는 Request를 적절한 스쿼드의 서버로 전달해주는 역할을 하게 했다고 합니다.
데이터베이스는 아직 대부분의 스쿼드가 마스터 데이터베이스에 의존하고 있지만 점차 각각의 스쿼드로 이관할 계획을 가지고 있었습니다. Pandora CTO 말로는 통합에 있어서 두 플랫폼의 사람들을 섞는 것이 가장 중요하다고 강조하였으며, 또 “모두에게 모든 것을 맡기면, 아무도 Ownership을 가질 수 없다.” 라는 말을 했었는데, 이 말에 깊이 공감하였습니다. Pandora는 명확하게 이 두 기치 아래 세워진 팀이 아닌가 생각해 봅니다.
RPS (Restaurant Partner Solutions)
매장 관리를 하고 주문 전달 수단을 제공하는 팀으로, 사실 이 팀과는 현재 Pilot test중인 9Cookies 얘기를 나누느라 플랫폼에 관한 많은 얘기를 듣지는 못했습니다. 조금 놀랐던 것은 올해 초 요기요의 사장님앱에 블루투스 프린터 적용을 위해 간단하게 테스트해 본 적이 있는데, 이 팀에서 이미 2년 전에 라이브에 런칭 했다고 합니다. 필요하다면 9Cookies를 통해서든 요기요의 사장님 앱을 통해서든 쉽게 블루투스 프린터를 붙일 수 있게 될 것 같아 기쁩니다.
Discovery (검색과 추천)
이미 foodora의 메인에서 추천을 위해 쓰이고 있는 플랫폼으로, 글로벌 서비스를 위해 만들어진 팀입니다. Datafridge와 완벽히 Integration되면 쉽게 해당 플랫폼의 기능들을 쓸 수 있을 것으로 기대됩니다.
Logistics
물류를 책임지고 있는 팀으로, Kubernetes, Terraform을 가장 활발히 사용중인 팀으로 보입니다. AWS lambda 에러 트래킹에 Sentry를 사용중이었는데 lambda 코드내에서는 Newrelic의 좋은 대안으로 보였습니다.
앞으로도 해당 툴과 AWS 관련해서 많은 도움을 받을 수 있을 것으로 기대 됩니다. 또 배달하는 분들을 자신들의 고객으로 인지하고, 그들의 편의를 위해 노력하는 모습이 인상적이었습니다.
Conclusions
이번 방문에서 두 팀의 통합과 분할에서 많은 부분을 배웠고, 생각해 볼 수 있는 좋은 시간을 가졌습니다. 한국팀의 통합과 분할에 있어서도 많은 도움이 될 것으로 기대 됩니다.
박오영, MSA TF @Delivery Hero Korea