우아한형제들 | 손가락 몇 번의 터치로 배달 받기까지

우아한형제들 | 손가락 몇 번의 터치로 배달 받기까지

일자

상시
유형
아티클
태그
이 아티클은 <당신이 몰랐던 개발 팀 이야기> 시리즈의 5화입니다. 



* 본 영상은 하이라이트 영상으로, 본편은 [참가신청] 후 'MY 원티드'에서 시청할 수 있습니다.


배민에서 가게 오픈하기 

더 맛있고, 더 다양한 가게 입점을 위해 | 셀러웹프론트개발팀 김정환

동네에 오픈한 새로운 카페. 주문을 하려 앱을 켜보니 아직 등록되지 않았다. 이 새로운 카페가 배달의민족에서 영업을 시작하기 위해선 어떤 과정이 필요할까. 다양한 가게의 입점을 도와 더 맛있는 배달 음식을 받아볼 수 있도록 만드는 셀러웹프론트개발팀 김정환 개발자를 만나본다. 

셀러웹프론트개발팀 김정환 ⓒ 강조은


고객센터에 전화할 필요 없이 원하는 대로
배달의민족에는 배민외식업광장이라는 음식점을 운영하는 사장님을 위한 전용 포털 사이트가 있다. 지금은 다양한 서비스를 제공하고 있지만, 3년 전만 해도 판매가 불가능한 메뉴를 주문할 수 없게 만드는 ‘메뉴 품절’ 기능만 있었다. 그래서 음식 사진 변경이나 가격 변경 등 다른 요청사항이 생길 경우엔 사장님이 직접 고객센터에 전화를 걸어 요청해야만 했다. 

“고객센터는 일이 많습니다. 사장님과 고객의 다양한 요청 사항을 처리하다 보니, 사장님도 번거롭고 고객센터의 일도 늘어났어요. 그래서 요청받은 여러 기능을 넣어 단독 서비스로 만들자는 생각을 했죠. 그게 지금의 배민셀프서비스입니다.”

덕분에 사장님들은 품절 기능뿐 아니라, 메뉴, 영업시간, 휴무일 등을 본인이 원할 때 언제든지 수정할 수 있게 됐다. 광고 상품(울트라콜, 오픈리스트) 역시 온라인으로 신청해 바로 적용할 수 있는 건 덤. 고객센터를 통해 일일이 수정 사항을 요청해야만 했던 불편함은 사라지고, 사장님이 원하는 대로 직접 변경할 수 있는 프로덕트가 생겼다. 김정환 개발자는 이 프로젝트가 가장 기억에 남았다고 말한다. 

“긍정적인 점은 사장님의 자유도가 높아졌다는 겁니다. 휴대폰 앱으로도 손쉽게 여러 가지를 변경할 수 있으니까요. 그러나, 상당수의 사장님은 아직 모바일 기반의 프로덕트에 익숙하지 않은 모습을 보였습니다. 특히 중장년층 이상인 사장님의 경우 핸드폰 UI에 익숙하지 않다 보니 사용에 어려움을 겪으시더라고요. 생각한 만큼의 사용 편의성이 나오진 않았어요.” 


완성은 끝이 아니다! 프로덕트 후속 조치
사용 편의성 문제를 해결하기 위해 후속 프로젝트에 돌입했다. 디자이너와 기획자가 모여 UI 설계부터 다시 진행한 뒤 개발했다. 그러나 사용 빈도를 획기적으로 높이는 것은 쉽지 않았다. 

“어떻게 하면 다양한 연령층이 만족할 만한 UI가 될 수 있을지 고민하고 있어요. 모두의 만족을 얻기는 어렵겠지만, 최대한 많은 분이 편하게 사용할 수 있는 UI를 만들기 위해 디자인 시스템 프로젝트도 진행하고 있습니다. 일관적이고 명확한 UI를 위해 노력하고 있어요.”

ⓒ 강조은


오직 배민 사장님들을 위해
음식점 사장님들의 요청은 1차적으로 고객센터에서 받는다. 요청이 쌓이면 사업부에서 우선순위를 나열해 개발팀에 개선 요청을 한다. 개발팀 소속 기획자가 해당 요청을 어떻게 처리할 것인지 정리한 뒤 개발 요청 사항이 담긴 기획서를 개발자에게 전달하면 개발이 시작된다. 

연초에 론칭한 ‘배민1’ 제품을 예로 들어 보자. 사업부에서 ‘사장님들이 상품을 구매할 수 있도록 ㅇㅇㅇ을 넣어달라’는 요청을 한다. 그러면 개발팀에서 단독으로 일을 진행하는 것이 아니라 프로덕트 조직 같은 유관부서들과 협업한다. 여기서 김정환 개발자가 속한 셀러웹프론트개발팀은 시스템의 앞단에 있는 기능, 이를테면 가게 사장님이 배민에 입점할 때 배민1 제품을 사용하기 위해 상품을 클릭할 수 있는 기능 등을 만든다. 

사업부가 아닌, 프로덕트 조직의 기술 요청도 있다. 배달의민족에는 다양한 서비스가 존재하는데, 각 서비스는 API라는 형태로 데이터를 주고받는다. 예컨대 상품팀 API가 변경됐거나 데이터 구조가 개선돼 버전 1에서 버전 2로 업데이트됐다면, 해당 API 혹은 데이터를 사용하는 셀러웹프론트개발팀 역시 버전 2로 업데이트를 진행하며 변경된 사항에 대응한다. 

ⓒ 강조은


수많은 요청사항, 더 중요해진 우선순위
배달의민족 사업은 실시간으로 유저의 반응을 얻는 서비스인만큼 빠르게 변한다. 각 팀별 과제가 주어지고 기한도 정해져 있기에 지속적으로 코드를 만들며 시스템을 유지해야 한다. 

예를 들어 셀러웹프론트개발팀은 사업부(배민1 서비스)로부터 경쟁사 대응, 매출 증가, 사업적인 목적 등을 달성하기 위해 제품 지원 요청을 받는다. 그러나, 기술 과제를 진행 중일 때 요청 사항을 받게 되면 고민이 생긴다. 사업적인 목적 달성을 위한 제품 지원은 중요하고 반드시 해야 하지만, 그러면 기술 과제가 지연되기 때문이다. 그렇기에 사업부의 요청을 당장 시작할 것인지, 그게 아니라면 기술 과제를 어느 정도 수준까지 마무리 짓고 지원할 것인지 우선순위를 정하는 것이 필요하다. 

“사업 과제에 집중하면 매출 증대에 기여할 수 있기 때문에 뿌듯합니다. 그러나 사업 과제에만 몰두하면 제품의 코드나 기술이 안정적이지 못하게 되는 경우가 생길 수 있어요. 임기응변식 코드같이 작은 문제가 쌓이다 보면 어느새 변경하거나 무언가를 추가할 수 없는 코드가 되어 버리죠. 수시로 확인하며 갈고닦는 과정이 필요합니다.”

ⓒ 강조은


팀 워크: 일을 더 잘 하는 방법
여러 프로젝트를 동시에 수행하다 보면, 개발자가 부족해 프로젝트 별로 한 명씩만 투입되는 경우가 있다. 그럴 경우 팀원이 수행하고 있는 프로젝트에 대해서 잘 알지 못하는 경우가 생긴다. 

“내가 작성한 코드도 시간이 지나 다시 보게 되면 어려워요. 그런데 남이 작성한 코드라면 더 어렵겠죠(웃음). 그래서 저희 팀은 웬만하면 두 명씩 짝을 지어 일하고 있습니다. 이렇게 일해온 지 이제 2년이 다 됐어요.”

때론 두 명씩 짝을 지은 팀원들이 서로의 화면을 공유하며 짝코딩(pair programming)을 하기도 한다. 그렇게까지 안 하더라도 하나의 프로젝트에 두 명이 들어가 일을 분담하고, 각자의 코드를 서로 리뷰한다. 그래야 업무에 대한 컨텍스트가 공유되며 ‘나 혼자서만 이 문제를 해결하는 게 아니야’라는 생각에 심리적 안전감도 생긴다. 

“짝을 지어 일하면 내가 실수하거나 잘 못해도 일이 진행될 수 있다는 생각에 마음이 편해요. 휴가를 간다거나 급하게 자리를 비울 때도 안심할 수 있죠. 특히 새로 들어오신 분이 혼자 프로젝트를 맡게 되면 불안해하시는 경우가 많은데, 이미 그 일을 하고 계시던 분과 짝을 지어 일하면 히스토리 파악도 쉬워져 일을 더 잘 할 수 있어요.”

수많은 맛집 사이에서 오늘의 식사 찾기  

크리스마스도 문제없는 안정적인 서버 유지 | 배민푸드서비스개발팀 백엔드 개발자 박경태

우리는 수많은 기념일마다 TPO에 어울리는 음식을 나눠 먹으며 행복을 나눈다. 그런데 내가 주문하려는 그 음식을 모두가 주문하고 있다면 어떻게 될까? 모두가 치열하게 주문을 시도하는 그때, 서버의 안정성을 유지하는 사람이 있다. 

배민푸드서비스개발팀 백엔드 개발자 박경태 ⓒ 강조은


배달 앱 서버만의 특징이 있다면
그의 전 직장은 대규모 트래픽을 가진 플랫폼 기업이다. 실시간 트래픽의 안정성이 중요한 서비스들을 비롯해 수많은 피드의 안정성을 담당했다. 헤드라인에 걸릴만한 세간의 이슈가 생기면, 평균 트래픽의 2~3배 이상이 뉴스로 유입되는 경우가 있다고 한다. 그러나 대용량 서버가 구축돼 있기에 큰 문제가 생기긴 힘든 구조다. 반면, 배달의민족은 한 가지 도메인에 집중된 서비스다. 그러다 보니 배달의민족 서비스만의 특이점도 있다. 

“배달의민족은 가게 노출이라는 하나의 도메인으로 서비스를 하기 때문에, 점심시간 삼계탕 주문이 평소 20이라면 복날 같은 특별한 날에는 2천으로 튀는 등 엄청난 증가폭을 보입니다. 그런 점이 포털사이트에 비해 두드러진 특징인 것 같아요.”

변동폭이 큰 배달 앱의 트래픽은 예측을 빗나가는 경우도 있기에 촘촘한 전략을 세워 대비하는 것이 중요하다. 이전 직장에서 일할 때보다 더 촉각을 세워야 하는 상황에 놓여있지만, 치밀하게 준비하는 만큼 일의 재미는 커졌다.

ⓒ 강조은


대규모 트래픽에 대처하는 서버 개발자의 자세
사실 서버를 늘리는 것이 마냥 어려운 일만은 아니다. 다만, 저장소를 늘리는 것은 단기간에는 불가능하다. 크리스마스와 같은 특별한 날을 위해 저장소를 몇 배 늘리게 되면 줄이는 과정도 오래 걸리게 된다. 그래서 실시간 대응이 쉽지 않다. 

그렇기에 트래픽을 얼마만큼 받아들이며(혹은 버리며) 서비스할지 고민하는 게 중요하다. 갑자기 튀는 트래픽을 모두 받아버리면 저장소가 다운돼 서비스가 불가능해지기 때문이다. 수용 가능한 트래픽까지 허용하고 이를 초과할 경우엔 limiter로 서버가 죽지 않도록 보호하는 것이 필요하다. 

“저장소가 100이라는 트래픽까지 감당 가능하다면, 110이 들어올 때 100 이상은 저장소에 들어올 수 없도록 일시적으로 막아야 합니다. 만일 이 부분의 처리가 미흡하거나 가용량 파악이 안돼 모두 받아버리면, 데이터베이스 같은 저장 시스템의 반응이 늦어져 시스템 전체에 영향을 줄 수 있어요.”

서킷 브레이커는 장애율이 증가하면 트래픽 처리 방식을 Plan B로 전환하는 기능이다. 반면 limiter는 100이라는 트래픽까지 허용 가능한 시스템이 있을 때 갑자기 150이 들어오게 되면 100까지는 허용, 101부터 120은 지연처리, 121부터 150은 빠른 실패로 ‘잠시 후 재시도’ 같은 결과를 전달한다. 서버에 부담 가지 않는 한도에서 처리 가능한 최대치를 처리하는 것이다. 일시적인 트래픽은 재시도 상황에서 해결되고, 장기간 높은 트래픽이 들어올 경우 (증설 전까지) 서버는 안정적으로 활동할 수 있는 최대치를 처리하게 된다.

ⓒ 강조은


정답은 없고 오답은 있다
개발자들 사이에는 ‘정답은 없고 오답은 있다’라는 말이 있다. 오답은 개발자가 시스템을 설계하고 만들 때 ‘구동에 문제가 없는지’, ‘특정 기술 도입에 문제는 없는지’와 같이 주의할 점을 알려주는 나침반 역할을 한다. 

“오답노트라고 말하면 왠지 틀린 답을 적어야 할 것 같잖아요. 그게 아니라, 여러 가지 정답 후보들 속에서 오답이 될만한 요소들을 하나씩 제거해 나가는 거예요. 적절한 선택을 할 수 있도록 선택의 범위를 좁혀 나가는 도구라고 생각해 주시면 좋습니다.”

그는 코드나 문서 작성할 때 초·중급 주니어 개발자는 물론이고 누구나 쉽게 적응할 수 있도록 가독성 등을 최대한 높이는 것이 중요하다고 말한다. 마치 책상을 피자라고 부르게 되면 타인과 소통이 어려워지는 것과 같다. 도메인 용어에 대해 서로 혼선 없이 소통하기 위해서 용어를 정하는 기준은 필수다. 

“구동 가능한 코드라도 운영이나 개발을 어렵게 만든다면 일종의 오답이라고 볼 수 있어요. 요즘은 단순히 ‘이걸 쓰세요’라고 지시하는 상황을 싫어하는 분이 많습니다. 관련 기술에 대한 설명은 물론이고, 과거 장애 사례로 개발 및 운영이 힘들었던 경험을 공유하는 것이 필요합니다. 상대방에게 공감을 이끌어 내는 것이 가장 중요하다고 생각해요.”

설계·기술 도입의 적정성을 만들기 위해 그는 매주 스터디를 열어 팀원들의 관심사를 찾고, 어느 부분이 팀에 잘 적용될 수 있을지 함께 고민한다. 

“최신 기술이나 설계, 유행 등은 팀원 간 진입 장벽을 만들 수도 있습니다. 팀 내에서 합의를 통해 적정선을 만들어 나가는 것이 중요하다고 생각해요.”

로봇으로 배달 받기

더 빠르고 안전한 배달을 위해 | 로보틱스LAB팀 로봇 소프트웨어 개발자 정우진

원하는 음식도 찾았고 주문도 마쳤다면, 남은 건 배달이다. 음식이 예정된 시간에 도착하는 것이 가게와 라이더에겐 중요한 문제일 것이다. 그러나 예상치 못한 악천후는 빠른 배달을 어렵게 만들뿐더러 라이더의 안전도 위협한다. 모두의 안전과 따뜻한 음식 배달이라는 목표를 위해, 배달의민족은 배달 로봇 연구를 시작했다. 

로보틱스LAB팀 로봇 소프트웨어 개발자 정우진 ⓒ 강조은


배달 서비스 기업에서 로봇 연구를 시작한 이유
수많은 산업 분야에서 로봇 개발을 하고 있다. 그런데 그는 왜 하필 배달 서비스 기업에서 로봇 개발을 시작하게 됐을까. 

“제가 만든 로봇이 실험실의 연구로 끝나는 게 아쉬웠습니다. 우아한형제들에는 로봇 배달이라는 명확한 서비스가 존재해요. 로봇을 어디에 사용할지 목표가 뚜렷하다는 거죠. 그래서 우아한형제들에서 로봇 개발을 하고 싶었습니다.”

자신이 만들어 낸 기술이 실생활에 이용되는 걸 보며 유저의 직접적인 반응을 느끼고 싶었다는 그는, 비단 자신만이 이런 계기를 갖고 우아한형제들에 들어온 것은 아니라 말한다. 로보틱스LAB팀에 소속된 모든 엔지니어가 이런 이유로 왔기 때문이다. 아직 갈 길은 멀지만, 명확한 목표를 향해 모두가 전진하고 있다. 

“라이더의 일은 한없이 늘어나는데, 고객은 배달 시간을 더 단축하길 원합니다. 로봇 기술은 라이더의 부담을 덜어주고, 고객이 더 빠르게 배달 받을 수 있도록 도와줄 거라 믿어요.”

ⓒ 강조은


배달 로봇과 데이터
배달 로봇이라 해서 특별한 것은 아니다. 다른 산업의 로봇들과 비슷한 접근 방식을 취한다. 자율주행 차에 쓰이는 센서를 사용해 주변 사물을 인식하여 지도를 만들고, 로봇이 잘 구동될 수 있도록 새로운 데이터를 생성하며 로봇이 가야 할 경로를 구축한다. 경로가 만들어지면 로봇은 어떻게 바퀴를 굴려야 할지 계산하며 실제로 움직인 뒤 자신의 위치를 파악하여 다시 데이터를 만든다. 

“말씀드린 데이터들 외에도 중요한 데이터가 있습니다. 예를 들면, 로봇이 어디서부터 어디로 갔는지에 대한 데이터예요. 이 데이터를 기반으로 어떤 지역의 주문량이 많았고, 그중 로봇을 사용하는 유저는 어디에 많았는지 파악할 수 있겠죠. 전략적 접근을 가능하게 만드는 데이터를 생성하는 것은 상당히 중요합니다.”


어려운 기술, 그럼에도 느끼는 재미
로봇이 지도에서 자신의 위치를 인식하면 바퀴를 정확히 굴릴 수 있게 되는데, 굴러간 자리에서 또다시 데이터를 이용해 자신의 위치를 인식하고 움직인다. 이 반복되는 과정 속에서 문제가 하나만 생겨도 로봇은 자기 위치를 잃어버린다. 그래서 어렵다. 

그럼에도 정우진 개발자는 자신이 구현한 소프트웨어가 작동하는 걸 보는 게 ‘재미있다’고 말한다. 그가 만든 코드가 현실에서 움직이는 로봇의 모터를 돌아가게 하기 때문이다. 그렇다면 배달의민족 자율주행 로봇을 만들 때는 어떤 것들을 특히 신경 써야 할까. 


배달 서비스 로봇에게 중요한 것들
자율주행 차는 차도라는 제한적인 환경에서 움직인다. 그러나 배달 로봇은 차도는 물론 사람이 다니는 보도 역시 자율주행으로 누비기 때문에, 어려움이 두 배로 커진다. 도로를 향해 쏜살같이 내려오는 비둘기, 주변을 서성이는 고양이, 산책 나온 강아지, 때로는 걸음이 느린 어르신까지 다양한 특성의 개체를 만난다. 특히 교통 신호에 따라 길도 건너야 하기에 좌우를 살피며 신호 인식도 해야 한다. 이처럼 배달 로봇은 매우 불규칙적이고 예측하기 어려운 길을 다녀야 한다. 차도 외 환경에서는 수많은 상황이 존재하므로 배달 로봇이 인식해야 할 범위는 다양하다. 

ⓒ 강조은


배달의민족이 꿈꾸는 미래의 배달 환경
로봇이 일자리를 대체하는 것에 대한 염려는 항상 존재해 왔다. 그렇기에 배달 로봇에 대한 주변의 시선 역시 곱지만은 않다. 

“로봇으로 배달을 한다면 위기의식을 느낄 분들도 계실 것 같아요. 혹여나 일자리를 로봇에게 빼앗기는 것은 아닌지 걱정하실 수도 있고요. 하지만, 개발자들이 사람을 대체하려는 목적으로 로봇을 만드는 게 절대 아니거든요. 저희의 목적은 더 많은 사람을 돕는 것에 있지, 라이더 분들의 일자리를 빼앗기 위해 혹은 비용을 혁신적으로 줄이기 위해 연구하는 것은 아니에요.”

아파트 단지 내부나 골목길이 많은 동네의 경우 라이더가 길을 찾기 어렵다고 한다. 때론 엘리베이터를 기다리는데 많은 시간이 소요될 때도 있다. 만약 고객이 음식을 받는 마지막 단계인 '라스트 마일(Last mile)'을 로봇이 해결해 준다면, 더 효율적인 배달이 가능해질 수 있다. 

“인프라스트럭처가 좋지 않아 배달 서비스가 어려운 지역도 있어요. 그런 배달 건이 생기면 로봇이 대신 수행하도록 해서 사람과 로봇이 상생할 수 있는 환경을 만들고 싶어요.”

ⓒ 강조은


그의 말처럼 로봇의 목적은 인류를 위협하는 것이 아닌 상생에 있다. 배달의민족이 만들어 갈 새로운 배달 문화가 벌써부터 궁금해진다.



▶ <당신이 몰랐던 개발 팀 이야기> 시리즈 보러 가기 



CREDIT


김한나ㅣ원티드 콘텐츠 에디터

강조은ㅣ원티드 영상 제작 PD



발행일 2022.11.04