/ PROJECTS

라이더운영시스템

배달의민족 배민라이더스의 라이더운영시스템 프로젝트의 소개

라이더운영시스템

기존 배민라이더운영시스템에서 라이더관련 부분을 분리하여 MSA로 구성한 라이더관리 전용 시스템

bros-main [그림 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

간략한 시스템 구성도

bros-architecture [그림 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 로 처리한다는 것은 기술 문서나 기술동향에 정답이 있다기 보다 상황에 맞게 절절히 (비동기, 동기) 처리 해야함을 느낌
  • 실무적인 경험이 더 중요한 분야 같음
kimchanjung

김찬정

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

Read More