배달의민족 Flutter 도입과 아키텍처 설계 교훈

배달의민족은 주문접수 채널에서 Flutter를 도입하여 멀티 플랫폼 대응력을 높이고, Clean Architecture를 통해 효율적인 코드 관리를 실현했습니다. 이 글에서는 Flutter 도입과 아키텍처 설계의 과정에서 얻은 교훈을 바탕으로, 변화하는 비즈니스 요구에 맞추기 위한 혁신적인 접근을 소개합니다. 또한, 이러한 경험이 다른 기업이나 개발자에게도 유용한 전략이 될 수 있도록 공유하고자 합니다. Flutter 도입으로 인한 혁신적인 변화 배달의민족은 Flutter 도입을 통해 플랫폼 전환과 유지보수 측면에서 큰 혁신을 이루었습니다. 기존의 Windows, Android, iOS 플랫폼에 추가하여 macOS와 다양한 Android 디바이스로까지 확장할 필요성을 느꼈습니다. Flutter의 도움으로 단일 코드베이스에 의해 멀티 플랫폼을 동시에 지원할 수 있게 되었고, 이를 통해 개발자 수를 줄이고 생산성을 향상시킬 수 있었습니다. 개발자들은 각 플랫폼에 대해 반복적으로 구현할 필요가 없어졌고, 버그 수정이나 기능 변경 시에도 이전에 비해 적은 시간에 모든 플랫폼에 적용할 수 있게 되었습니다. Flutter의 도입은 크로스 플랫폼 반응형 UI 구현을 가능하게 하여, 사용자 경험의 일관성을 높였습니다. 이제 파트너들은 다양한 OS 환경에서 동일한 경험을 하게 되므로, 학습 비용도 줄어들고, 혼란이 줄어드는 장점을 경험하고 있습니다. 이러한 변화는 단순히 기술적인 접근방식이 아닌, 사업의 방향성을 전환하는 계기로 작용했습니다. 파트너사들이 원하는 효율적인 주문 관리 시스템을 제공하기 위해, 기존의 네이티브 아키텍처에서 벗어나 새로운 기술 스택으로 과감히 옮겨갔습니다. Firebase와 같은 클라우드 서비스를 활용하여 실시간 데이터 업데이트와 동기화가 가능하게 되었고, Flutter의 강점을 극대화하여 사용자 친화적인 UI/UX도 구현됐습니다. 이로 인해 즉각적인 피드백을 수렴할 수 있는 구조가 마련됐습니다. 결국 Flutter의 도입은 배달의...

장바구니 추천 모델 개선 사례 공유

배달의민족은 음식 배달 서비스뿐만 아니라 장보기도 신속하게 제공하는 기능을 갖추고 있습니다. 특히 고객들이 장바구니에 담은 상품들을 기반으로 연관 상품 추천 시스템을 도입하여, 실제 구매 맥락을 이해하고 알맞은 보완 상품을 제안하는 전략을 추진하고 있습니다. 이번 글에서는 이러한 장바구니 추천 모델 개선 사례를 공유하며, 고객 경험을 어떻게 향상시켰는지에 대해 살펴보겠습니다.

장바구니 추천 시스템의 필요성

장바구니 추천 시스템은 고객의 구매 행동을 이해하고, 실질적인 쇼핑 경험을 개선하는 데 있어 매우 중요한 역할을 합니다. 초기에는 Item2Vec 방식으로 구현된 이 시스템은 상품 간 임베딩 유사도를 기반으로 추천을 진행했습니다. 그러나 이로 인해 대체재 편향과 시퀀스 맥락 부재 문제 풀이 나타났습니다. 고객이 장바구니에 담은 상품들의 구체적인 맥락을 고려하지 않았기 때문에, 추천의 적합성이 낮아지는 결과를 가져왔습니다. 이러한 문제를 해결하기 위해, 배달의민족은 2-stage 파이프라인 방식으로 장바구니 추천 모델을 개선했습니다. 첫 번째 단계에서는 그래프 기반의 상품 및 카테고리 임베딩을 생성하여 상품 간의 구조적 관계를 명확하게 이해하도록 하였습니다. 두 번째 단계에서는 Transformer 모델을 활용하여 고객이 장바구니에 담은 상품들의 맥락을 분석하고, 다음으로 담을 상품을 예측하도록 설계되었습니다. 이러한 개편은 장바구니 추천 시스템의 성능을 획기적으로 향상시켜, 고객에게 보다 효과적인 추천을 제공할 수 있는 기반이 되었습니다.

구매 맥락의 중요성

구매 맥락은 장바구니 추천 모델의 핵심 요소입니다. 고객이 장바구니에 담는 상품의 순서는 단순히 제품의 나열이 아니라, 고객의 구매 의도를 내포하고 있습니다. 이를 반영하지 못한 기존 모델은 고객의 구매 패턴을 충족하지 못하고 효율적인 추천을 제공하기 어려웠습니다. 배달의민족의 개선된 모델에서는 상품 간의 관계뿐만 아니라 고객이 상품을 담는 순서를 함께 고려합니다. 예를 들어, 고객이 먼저 '라면'을 담고 그 후에 '삼겹살'과 '상추'를 추가했다고 가정할 때, 이를 바탕으로 조리할 때 유용한 '마늘'을 추천하는 것이 필요합니다. 반면, 상추와 삼겹살을 먼저 선택한 고객에게는 라면과 어울리는 '김치'를 추천함으로써, 고객의 특정한 구매 유도를 파악하고 그에 맞는 보완 상품을 제공합니다. 이처럼 다양한 시퀀스와 구매 맥락을 이해하기 위해 Transformer 모델의 Self-Attention 메커니즘을 활용하여 상품 간의 상호 연관성을 계산하고, 정확한 추천을 제공할 수 있게 되는 것입니다. 따라서 구매 맥락을 이해하는 것은 단순한 추천 이상의 가치를 부여하며, 고객에게 더 나은 쇼핑 경험을 제공합니다.

모델 고도화와 성과

모델 고도화는 장바구니 추천 시스템의 성능을 더욱 강화하기 위한 지속적인 노력의 일환으로 진행되었습니다. 기존의 Item2Vec 모델은 대체재 편향과 시퀀스의 부족한 맥락을 문제로 삼았고, 이를 개선하기 위한 실험을 거듭해 왔습니다. 이 과정에서 배달의민족은 두 가지 주요 단계를 거쳐 모델을 개선했습니다. 먼저, 고객의 구매 패턴에 따라 독립적인 그래프를 구축하고, 셀러 타입별로 맞춤형 임베딩을 학습함으로써 각각의 특성을 반영할 수 있게 되었습니다. 둘째, Bayesian Smoothing을 도입하여 낮은 신뢰도를 가진 상품 간의 엣지 가중치를 개선해 데이터 희소성을 극복했습니다. 이러한 개선을 통해 모델의 추천 정확도가 보다 향상되었고, 온라인 A/B 테스트에서도 평균 28%의 전체 담기율 증가를 달성했습니다. 고객들이 추천 상품을 장바구니에 담는 비율이 크게 증가함으로써, 실제 매출 또한 상승하는 긍정적인 효과를 보여주었습니다. 더욱이, 다양한 상품군을 추천할 수 있게 되어 고객의 만족도를 높일 수 있는 계기를 마련했습니다.

결론적으로, 배달의민족의 장바구니 추천 모델 개선은 고객의 구매 맥락을 이해하고 그에 맞는 상품을 적극적으로 추천하는 방향으로 이루어졌습니다. 앞으로는 고객의 개인적 선호도를 반영하고, 신규 상품의 추천 품질을 지속적으로 향상시키기 위한 노력을 더욱 강화할 계획입니다. 이를 통해 고객에게 최상의 쇼핑 경험을 제공할 수 있는 시스템을 지속적으로 발전시켜 나가겠습니다.

이 블로그의 인기 게시물

우아한형제들의 실시간 알림 혁신: SSE(Server-Sent Events)로 이룬 효율성과 안정성

우아한 디버깅 툴 개선으로 QA 업무 효율화

물어보새의 진화와 지식 공유 확장