안녕하십니까 소프티어 3조 냉삼입니다. 저희는 단거리 심부름 P2P 서비스 쉼,부름을 개발했습니다.

쉼,부름은 근거리 서류·샘플·비품을 오가는 사람의 손으로 전하는 P2P 배송 플랫폼입니다.

저희 서비스에는 두 역할이 있는데, 물건을 보내는 부르미, 오가는 길에 배송하고 보수를 받는 드리미가 있습니다. 두 역할은 유동적으로 바꿀수 있으며 오늘은 배송을 부른 사람이 내일은 배송을 해주는 사람이 될 수 있습니다.

서로 다른 부르미 / 드리미의 수요와 공급을 매칭 해주는 것이 서비스의 핵심입니다.


저희가 이 서비스를 구현하면서 중요하게 생각했던점은 다음과 같습니다. ( 화면을 보면서 )

먼저 배송 요청 등록입니다. 저희는 외부 API를 활용해 경로를 확인하고 이를 바탕으로 추천 요금을 산출하고 redis를 통한 캐싱을 활용해 외부 API 호출을 최적화 했습니다.

다음으로 실시간 매칭입니다. 쉼,부름 서비스의 핵심이 되는 기술로 가장 많은 공을 들인 부분입니다. 동시성 처리를 위해 매칭 엔진과 딜레이 큐 구조를 설계하고 구현했습니다.

비슷하게 실시간 추적과 알림이 있습니다. 여러 유저에게 매칭, 배송, 완료등에 대한 알람을 보내고 실시간 위치 확인을 위해 sse 로 이를 구현하였으며 웹브라우저 환경에서 유실을 방지하기 위해 웹푸시를 같이 구현했습니다.

유저 관리의 경우 저희 서비스는 단일 인스턴스로 이뤄져있기 때문에 세션 인증 방식을 활용하며 적은 용량의 서버에 동시 유저 로그인을 방어하기 위해 로그인 대기열을 도입했습니다.

여러건의 배송 이력을 조회하는 대시보드 기능도 존재하며 무한 스크롤을 구현하기 위해 페이지네이션으로 이를 구현했습니다.

저희가 이번 프로젝트에서 가장 신경쓴 부분은 매칭 서비스 설계였습니다. 단일 스레드 기반 동시성 제어, DB와 인메모리 상태의 정합성, 테스트를 통한 매칭 정책 발전을 고려하며 구현했습니다.

( 한 턴 쉬고 )