/ PROJECTS

배민라이더스운영시스템(1.0)

배달의민족 배민라이더의 배민라이더스운영시스템(1.0) 프로젝트 소개입니다.

배민라이더스운영시스템(1.0)

배달접수와 실시간 배달처리 현황 및 라이더 관제기능을 지원하는 종합 운영 시스템

bros-main [그림 1] 메인화면

관련 기술블로그

프로젝트 기간

  • 2015.02 ~ 2016.08

프로젝트 참여도

  • 프로젝트 인원 5명
  • 배민라이더스운영시스템 사이트 Back-End API와 Angularjs Front-End 전담하여 개발
  • Websocket 서버를 전담하여 개발
  • 나머지 인원은 라이더앱 및 라이더앱 API 개발과 결제시스템 개발함

주요 기능

  • 배달접수처리 기능
  • 실시간 배달연황 및 라이더 현황 관제
  • 배달료 정산을 위한 데이터 제공
  • 채팅 기능 제공

적용된 기술셋

Back-End

  • PHP 5.6
  • CodeIgniter 3.1
  • Nodejs
  • Socket.io
  • sqlserver

Front-End

  • AngularJS 1.8
  • Bootstrap 2.x

Etc

  • Websocket
  • Redis
  • winston
  • socketio-sticky-session

간략한 시스템 구성도

bros-architecture [그림 2] 구성도

시스템 구성 설명

  • 백오피스 서버는 API 서버와 angularjs 프론트엔드로 구성 되어 있음
  • 라이더앱과 백오피스는 Socket.io로 개발된 websocket 서버를 통하여 실시간으로 배달 및 라이더 현황을 관리함
  • 웹소켓 서버는 nodejs 기반 이라 싱글 프로세스로 동작하지만 서버자원을 효율적으로 사용하기 위하여 멀티프로세스로 프로그래밍하였음
  • 멀티프로세스로 구동시 각각의 프로세스에 메시지를 공유하기 위해 Redis pub/sub를 사용

효과

  • 실시간 이벤트 서버 도입으로 Polling 방식에 비하여 DB호출 횟수를 현저하게 낮춤에도 불구 실시간 서비스가 가능하게 됨.
  • AngularJs 특징인 양방향 데이터 바인딩 기능을 실시간 데이터 제공에 적극 활용
  • 실시간 이벤트 서버 Socket.io(Node.js) 를 이용하여 데이터 생성, 변경, 삭제 시 실시간 이벤트로 데이터를 송수신 하여 AngularJS 모델에 반영하도록 하고 뷰의 갱신을 신경쓸 필요없는 구조.

느낀점

  • AngularJS + Socket.io 신기술의 장점을 활용하여 개발 해볼 수 있었던 기회 통해 출근이 기다려지는 기분을 경험.
  • 실시간 서비스라는 다소 생소하고 복잡한 서비스 경험에 엄청난 개발욕구를 경험
  • 실무를 통해서만 습득 할 수 있는 실시간 서비스만의 개발, 운영 이슈에 대한 깊이 있는 경험.
kimchanjung

김찬정

좀 더 넓은 TEST 커버리지! 좀 더 나은 Architecture! 좀 더 나은 Code Pattern! 보다 더 간결하고 깔끔한 코드!를 항상 갈망 합니다.

Read More