Skip to content
김범우 edited this page Sep 25, 2023 · 1 revision

주문과 결제? 우리가 할게!

결제금액/주문내역/요청사항 관리? 그것도 우리가 할게!

헛걸음 하지 않도록 매진, 품절 메뉴 바로바로 알 수 있게 (가게 영업상태도)

예약 주문(Optional)

IMG_8834.PNG

편의정보 등록

38320889_content.jpg

Tmap API

가게 위도, 경도 정보 저장

  • 가까운 음식점 검색 기능 제공
  • 가게 위치 정보 확인 제공
    • POI (point-of-interest)

주문 플로우

가게 선택 → 메뉴 선택 → 장바구니 담기 → 주문완료

가게 - 최소주문금액, 영업여부. 여러 메뉴

메뉴 - 메뉴 설명, 가격, 인기메뉴 뱃지

image (1).png

옵션 그룹 - 기본, 조리선택 (기본선택여부, 배타선택여부)

옵션 - 이름, 가격

메뉴 1: N 옵션 그룹 1:N 옵션

주문 - 주문 시간, 주문 상태

IMG_C16FA292577A-1.jpeg

주문 항목 1:N 주문옵션그룹 1:N 주문옵션

주문 & 메뉴

가게당 하나의 주문이 들어가고, 하나의 주문에 여러개의 메뉴 or 개수

장바구니는 앱(기기 local)에 존재 → 서버에 따로 저장X

주문 생성 → 주문하기() → 검증 로직

Validation 과정은 어떻게?

  • 주문의 주문항목, 옵션그룹, 옵션 이름과 가격이 같은지
  • 최소주문 이상인지
  • 가게가 영업중인지

풀 수 있는 기술적 문제

사용자 편의 기능

검색 기능

배민 첫페이지 UI 변천사

배민 첫페이지 UI 변천사

배달의 민족이 첫 등장할 때 정체성 : 전단지를 모아서 보자

검색창이 최상단에 보이도록 UI 개편, 실시간 인기 검색어 등 기능 고도화

음식 추천 기능

02_1080x853.gif

가게 오픈 알림 기능

05_1080x853.jpg

서버 안정성

예를 들어

월드컵 기간, 크리스마스 이브에 서버 다운

🧐 운영되는 서비스에 트래픽이 몰려 손실이 크다면?

🧐 대규모 트래픽을 안정적으로 처리하려면 배포 전에 어떤 일을 해야하는지?

→ 서버 성능테스트

클라이언트 부하 발생 → API 서버 → 외부 API, DB

  • 요청을 얼마나 잘 처리하는지
  • 병목이 어디서 발생하는지

평소보다 트래픽을 많이 받아야 하는 경우 성능테스트 실시

그럼 어떻게?

  1. 부하생성은 jMeter, nGrinder 등을 통해 테스트 가능
  2. 서버를 scale out하거나 외부API, DB변경할 경우 매번 변경하기 번거로움
  3. 테스트 할 때마다 지표를 관측하고 기록하는 것도 비용 소모

시나리오 구상 → 환경 구축 → 테스트 생성 및 수행 → 결과 지표 관측 및 기록 → 결과 분석

AWS CLI + Jenkins 를 통해 구현, Groovy script로 pipeline 구축 가능 + 슬랙에 결과 레포트 전송

But, 도구가 중요하진 않음.

🤓 트래픽이 많아 서버 성능 측정이 잦을 경우

🤓 피크타임과 그 외 시간 사이에 변동이 커서 scale out & scale in이 자주 일어나는 경우

→ 성능테스트 자동화 가능