Skip to content

plum7ree/food-delivery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Food Delivery Service

Tech Stack


             

Sample Images


Category Search Checkout
Category and Checkout Restaurant Search Checkout Confirm
My Page Restaurant Registration
Checkout Confirm Checkout Confirm


Architecture


주문/결제 시스템
Checkout Confirm

  • Transactional Outbox Pattern 으로 신뢰성 있는 카프카 메시지 전달.
  • Reactive 기반 메시지 전송 및 backpressure 기능 구현 (Spring Cloud Stream).
  • 메시지 전송 Exactly Once Semantic 보장
    • idempotent kafka producer
    • TransactionalEventListener 로 database commit 후 메시지 전송.
    • read_committed kafka consumer

배달 기사 매칭 시스템 / 유저 알림 시스템

  • 실시간 배달 기사 위치 redis 에 업데이트
  • 주문 승인 이벤트 후 주문 사용자 그룹과 근처 배달기사들 그룹에 이분 매칭 수행
  • jwt 기반 유저 인증, 주문 승인 되거나 배달 기사 매칭 된후 유저에게 알림

쿠폰 발행

  • webflux 기반 서비스
  • reliable kafka, idempotence producer(acks=1, enable-idempotence: true)
  • rollback consumer (enable-auto-commit: false, manual kafka consumer's commitSync)
  • redis 분산락 (RLockReactive)

카프카 클러스터

  • 1 주키퍼, 3 브로커, 1 스키마 레지스트리

Elastic Search 간단한 메뉴 검색

레스토랑 이미지 및 데이터 수집

  • Selenium 웹 크롤링

프론트엔드

  • OAuth2 로그인, 레스토랑 음식/옵션 선택, 장바구니, 토스페이 결제
  • Redux 상태 관리/ thunk 기반 비동기 이벤트 처리

Test

  • BDD
  • mocking (service, controller layer)
  • test container
    • docker compose util: DockerComposeStarter.java
      • customized docker compose runner
      • run like:
        •     dockerComposeStarter.startServiceAndWaitForLog("kafka-broker-1", ".*started.*", 5, TimeUnit.MINUTES);
              dockerComposeStarter.startServiceAndWaitForLog("kafka-broker-2", ".*started.*", 5, TimeUnit.MINUTES);
              dockerComposeStarter.startServiceAndWaitForLog("kafka-broker-3", ".*started.*", 5, TimeUnit.MINUTES);
      • example: CouponControllerSimulationTest.java

Infra

  • oauth2, resource server
  • gateway filtering
  • config server
  • Eureka service discovery
  • Kubernetes, helm chart 로 마이크로 서비스 운영 및 배포


gateway: 8080
eurekaserver: 8761
configserver: 8071   
eatsorderservice: 8074
user: 8077
driver-service: 8078
eatssearch: 8079
schema-registry: 8081
coupon-app: 8092
coupon-service: 8093

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published