핸디버스
Company-project

핸디버스

2024.08 - 2025.06 핸디버스

공연/행사 수요 응답형 모빌리티 서비스

역할

Backend
Infra
Plan

사용 기술







프로젝트 개요

핸디버스는 공연/행사 관람객들의 이동 수요를 모아 편안하게 공연을 관람할 수 있도록 버스 노선을 개설, 제공해주는 수요 응답형 모빌리티 서비스입니다.

24년 8월, 구글폼, 노션을 활용한 작은 MVP 서비스 시절에 합류하여 25년 2월 V1 서비스를 런칭, 한달만에 누적 7000명의 유저, 1600개의 예약 건수를 기록, 1억의 매출을 달성하였습니다.

체계가 부족하던 초기 단계의 서비스에서 모빌리티 도메인의 복잡한 비즈니스 로직을 분석해 시스템과 서비스에 구조적으로 반영하였고, 이를 기반으로 많은 유저와 결제 건을 안정적으로 처리할 수 있는 WAS를 설계·개발·배포하였습니다.

이후 2025년 5월, 개선된 UX와 시스템을 바탕으로 V2 서비스를 성공적으로 런칭했으며, 타다와의 MOU 체결을 통해 수요 기반 도어 투 도어 서비스를 제공하는 신규 상품도 기획·개발하였습니다.

서비스 소개

로그인 및 온보딩

X(트위터), 팬카페 등으로 유입된 유저들이 빠르게 가입, 수요조사를 진행하도록 독려하기 위해 쾌적한 UX의 온보딩 플로우를 제공하고자 노력하였습니다.

OAuth를 활용하여 각종 약관동의 및 기본값을 원터치로 제공 받을 수 있게 하였으며, 뒷단의 복잡한 비즈니스 로직인 명의 당 첫가입 쿠폰, OAuth 연동 계정에 필수 정보가 없는 경우 등의 예외처리 등은 서버에서 엄밀히 처리하여 복잡한 온보딩 요구사항을 유저에게 은닉하였습니다.

수요조사 신청 및 노선 설계

개별 행사에 대해 유저의 수요를 신청합니다.

어드민에선 수요기반 노선 추천 알고리즘을 통해 응집된 유저의 수요를 모아 버스 노선을 개설합니다.

기술적 차별점과 개인 기여

핸디버스는 제대로된 소프트웨어도 없던 시절, 팀에 초기 창업 멤버로 합류하여 기획백엔드 개발 전과정을 참여하였습니다.

스타트업 운영 전과정의 DDD 기반 시스템화

제가 합류한 초기 핸디버스는, 단순한 MVP 웹사이트와 노션, 구글폼 등으로 운영되며 유저 수요 수집부터 예약, 버스 대절, 공지 전달까지 전 과정을 수기로 처리하고 있었습니다. 결제 역시 계좌이체 후 수기 확인 방식으로, 시스템화가 전혀 이루어지지 않은 상태였습니다. “공연 시장에서 열악한 교통 환경으로 인해 셔틀버스를 원하는 수요가 있다”는 문제 인식에서 출발한 이 서비스가 성공적인 비즈니스로 발전하기 위해서는, 이러한 복잡하고 파편화된 오퍼레이션 전 과정을 정밀하게 분석하고, 이를 구조화하여 시스템에 반영하는 작업이 필수적이었습니다.

수요조사 받기 및 문자 보내기 기능만 있던 열악한 MVP

저는 서비스를 단순 자동화하는 것을 넘어, 우리가 해결하려는 핵심 도메인—즉 “공연행사 특화”, “수요기반”, “셔틀 운영”이라는 복합적인 도메인을 근본적으로 재정의하는 작업부터 시작했습니다.

도메인 주도 설계(DDD)를 차용하여, 이를 다수의 서브도메인(예: 예약, 정산, 배차, 셔틀 운영, 고객 관리 등)으로 나누고, 각 도메인 간 상호작용과 외부 오퍼레이션 흐름을 시각화하기 위해 이벤트 스토밍을 수행했습니다. 이 과정을 통해 시스템이 책임질 수 있는 경계, 구체적인 정책 포인트, 추상적이었던 운영 기준들을 명확히 했고, 유비쿼터스 언어도 함께 정립했습니다. 결과적으로 각 기능을 독립적으로 모듈화 할 수 있는 바운디드 컨텍스트들이 도출되어, 아키텍처의 기반을 형성할 수 있었습니다.

이벤트 스토밍을 통한 도메인 분석

도메인 주도 설계를 통해 운영 측에서 인식해야 할 핵심 개념과 정책을 정립하고, 이를 바탕으로 오퍼레이션 매뉴얼을 체계화할 수 있었습니다. 동시에 도메인의 본질을 반영한 시스템 설계와 유비쿼터스 언어 정립을 통해 운영·개발 간 커뮤니케이션을 통일하고, 병행 개발이 가능해져 스타트업의 빠른 사업 확장에 효과적으로 대응할 수 있었습니다.

수요 기반 노선 설계 자동화 기술 개발

모집된 수요조사를 기반으로, 지역 별 최적화된 노선 설계를 자동으로 해주는 알고리즘을 개발했습니다.

실제 서비스 데이터에서 도출된 노선 추천 화면

다양한 비즈니스 상황에 대응할 수 있도록 추천 설계 기준을 변수화 하였습니다.

알고리즘 최적화를 통해 2000개의 수요데이터 기준 200ms 내로 처리되도록 설계했습니다. 또한 캐싱을 활용해 실제 연산 처리에 대한 빈도 또한 최적화 하였습니다. 이를 통해 최상단의 대시보드에서 수많은 행사에 대한 노선 예측 결과를 복수조회 해도 부담없게 제작하였습니다.

확장성을 고려한 DDD 기반 모듈러 모놀리식 서비스 설계

스타트업 환경은 빠른 시장 반응이 핵심이기 때문에, 설계보다는 속도 중심의 개발이 일반적입니다. 그러나 이는 곧 유지보수와 확장에 취약한 레거시로 이어지기 쉽습니다. 저는 이러한 구조적 리스크를 예방하기 위해, 서비스 초기부터 도메인 주도 설계(DDD)의 전술적 설계 방법론을 적용하여 각 기능을 명확히 분리하고 도메인의 순수성을 보존하는 구조를 설계했습니다.

핵심 비즈니스 로직인 결제와 예약 도메인은 서로 밀접하지만 명확히 다른 바운디드 컨텍스트(BC)로 구분하고, 이벤트 기반 비동기 메시징으로 상호 통신하게 하여 강결합을 방지했습니다. 도메인 레이어 내부는 계층 간 DIP(의존성 역전 원칙)를 적용해 외부 의존성을 인프라 레이어로 분리하고, PG사나 OAuth 등 외부 채널과의 연동 로직은 인터페이스와 팩토리 패턴을 통해 추상화하여 캡슐화하였습니다. 이를 통해 도메인 중심의 유연하고 테스트 가능한 구조를 확보했습니다.

전체 구조는 MSA의 오버헤드를 피하면서도 모듈화된 아키텍처를 구현한 ‘모듈러 모놀리스’ 방식으로, 기능별 책임을 명확히 분리하되 단일 애플리케이션 내부에서 유지보수가 가능하도록 설계했습니다. 이를 통해 신규 개발자도 빠르게 온보딩할 수 있는 가독성과 일관성을 확보했고, 점진적 MSA 전환도 염두에 둔 유연한 설계 기반을 마련했습니다.

시스템 아키텍처 설계의 상세 내용은 블로그 포스트에 정리되어 있습니다.