라이더운영시스템
배달의민족 배민라이더스의 라이더운영시스템 프로젝트의 소개
라이더운영시스템
기존 배민라이더운영시스템에서 라이더관련 부분을 분리하여 MSA로 구성한 라이더관리 전용 시스템
[그림 1] 메인화면
관련 기술블로그
프로젝트 기간
- 2019.02 ~ 2019.05
프로젝트 참여도
- 프로젝트 인원 2 명
- 백엔드 전반적인
설계
및 프로젝트BASE 코드 및 비즈니스 코드
작성 - React 프론트는 대부분 90% 전담 개발
주요 기능
- 라이더기본정보 및 운영, 정산에 필요한 정보 관리
- 배달운영시스템과 MSA로 분리 구성이 됨으로써 AWS SNS/SQS이용한 상호 연동 처리
- SAP(ERP) 시스팀과 연동 처리
적용된 기술셋
Back-End
- Java v1.8
- Spring-Boot v2.1
- JPA v2.1
- MySql v5.1
Front-End
- React v16.8
- Mobx v5.9
- Material-UI v3.9
- Webpack v4.29
Etc
- AWS - Elastic Beanstalk, SNS, SQS
- Redis
간략한 시스템 구성도
[그림 2] 구성도
시스템 구성 설명
- 각 서버는 Elastic Beanstalk으로 구성되며 내부 적으로 EC2인스턴스가 autoscaling으로 구성 되어 있음
- MySql DB는 AWS-RDS를 사용, 마스터/슬레이브로 2중화 되어 운영
- REDIS를 서버인증세션 저장 및 캐시의 용도로 사용
- MSA로 분리된 라이더관리 시스템의 라이더관련 데이터를 AWS SNS/SQS를 이용, event-sourcing으로 이벤트를 발행하고 배달운영시스템(BROS) 및 타 시스템은 이벤드를 구독하여 동기화 처리를 할수 있도록 서버를 구성
- 사내 타 팀과 외부 업체와의 연동을 위해서 우리 시스템에 접근 하기위한 공개 API 서버를 운영함,
효과
- React + Mobx의
주말 개인 프로젝트로
Front-End의60% 정도의 베이스코드를 완성
하여실제 개발 기간단축
및 팀내차기 Front-End SPA 프레임워크 채택
의 결정적 역할`을 함(vs Vue.js)- 기존 배달운영시스템에 포함 되어 있던 라이더 관련 기능을 MSA로 별도의 시스템으로 분리 신규 개발
- 시스템간 강한 의존성을 제거
느낀점
- MSA로 구성시 시스템간 단순 ACTION을 처리하는 것과는 다르게 DB 데이터를 완전히 분리하여 이벤트소싱으로 서로 동기화 하고 부가적인 연동 처리 (Email 발송, 회계시스템 연동 등등)등 다소 복잡한 구성을 MSA 로 처리한다는 것은 기술 문서나 기술동향에 정답이 있다기 보다 상황에 맞게 절절히 (비동기, 동기) 처리 해야함을 느낌
- 실무적인 경험이 더 중요한 분야 같음