배민라이더스운영시스템(2.0)
배달의민족 배민라이더스의 배민라이더스운영시스템(BROS 2.0) 프로젝트 소개입니다.
배민라이더스운영시스템(2.0)
배민라이더스의 업무처리 및 관리를 위한 메인 시스템 대부분 배민라이더스운영시스템을 운영 하고 신규 기능을 개발한는 것이 주 업무
[그림 1] 메인화면
프로젝트 기간
- 2016.02 ~ 2019.01
프로젝트 참여도
- 프로젝트 인원 6명
- 1차 신규 오픈 프로젝트에 참여함, 각자 분배된 분량의 백엔드 API 및 JS 프론트엔드 개발
- 추후 지속적인 운영과 신규 기능 추가 개발 업무
- 사실상 팀내 메인 운영 개발 시스템
주요 기능
- 라이더의 실시간 주문처리현황 관제 및 운영을 제공
- 배달권역 설정, 배달료관련 설정 등등 운영에 필요한 설정 기능을 제공
- 라이더 배달료 정산에 필요한 각종 데이터 및 지표 제공
- BROS 1.0에 더 추가된 각종 기능 셋 제공
적용된 기술셋
Back-End
- Java v1.8
- Spring-Boot v1.5
- JPA v1.5
- MySql v5.1
Front-End
- WoowahanJS(사내 Javascript SPA Framework)
Etc
- AWS - Elastic Beanstalk, SNS, SQS
- Redis
- Websocket
간략한 시스템 구성도
[그림 2] 구성도
시스템 구성 설명
- 각 서버는 Elastic Beanstalk으로 구성되며 내부 적으로 EC2인스턴스가 autoscaling으로 구성 되어 있음
- MySql DB는 AWS-RDS를 사용, 마스터/슬레이브로 2중화 되어 운영
- REDIS를 서버인증세션 저장 및 캐시의 용도로 사용
- 웹소켓 서버는 redis pub/sub 사용하여 메시지가 여러대의 서버에 공유될 수 있도록 처리
- 라이더앱과 백오피스는 웹소켓서버를 통하여 실시간 배달상태변경 및 라이더의 배달현황/위치를 동기화 함
- MSA로 분리된 라이더관리 시스템의 라이더관련 데이터를 AWS SNS/SQS를 이용, event-sourcing으로 동기화 처리를 담당하는 서버를 운영함
- 사내 타 팀과 외부 업체와의 연동을 위해서 우리 시스템에 접근 하기위한 공개 API 서버를 운영함,
효과
AWS 인프라 위에서 개발된 팀내 최초 프로젝트로써 수직 상승하는 사업 니즈에 맞춰 flexible한 인프라 자원 운영이 가능해짐
느낀점
- 본격적으로 팀내 코드 리뷰, 테스트코드, Pair Programming 문화가 정착 되기 시작한 프로젝트
- 팀내 개발 문화가 시스템 안정성을 높이는 결과를 가져왔음(무장애 300일)
- 장애 발생시 대외 신뢰성 추락, 금전적 피해를 감안해 보았을 때 안정성은 매우 중요한 가치라는 것을 증명해 보임(결과물을 빨리 내는 것에 대비하여)