Search
👨🏻‍💻

음식 주문 배달 서비스 ( 토이 프로젝트 )

한 줄 소개
배달의 민족과 같은 배달 서비스를 PC 웹 버전으로 구현해 내는 것을 목표로 개발한 토이프로젝트
진행 기간
2023/12/04 → 2024/01/24
Skills
Java
SpringBoot
Docker
JPA
Redis
Nginx
MySQL
Git
NaverCloud
팀 구성
개인 토이 프로젝트
프로젝트 활동 그룹
개인 토이 프로젝트

프로젝트 한 줄 설명

"배달의 민족은 어떻게 대규모 트래픽과, 대용량 데이터를 다루고 있을까" 배달의 민족과 같은 배달 서비스 플랫폼을 모티브로 만든 API 서버 토이 프로젝트입니다.

프로젝트 소스 코드

프로젝트 전체 구성도 ( Architecture )

프로젝트 목표

배달의 민족과 같은 배달 서비스를 PC 웹 버전으로 구현해 내는 것을 목표로 합니다.
단순 기능 구현이 아닌, 동시성 이슈, 분산 서버 환경, 그리고 대용량 트래픽 처리 등을 고려하여 개발합니다.
객체지향의 원칙을 준수하고, 이론적 근거와 본인만의 철학을 토대로 코드를 작성합니다.
어떤 기술을 사용하든, 단순히 구현만 할 줄 아는 것이 아니라, 원리를 이해하고 개발합니다.
새롭게 접한 기술이나, 중요한 기술은 반드시 문서화(블로그) 하여 정리합니다.
네이버 클라우드를 활용하여, 실제로 서버에 적용 시켜 보는 것을 목표로 합니다.

개발 주요 로직 & 주요 이슈 해결 목록

AOP를 활용하여 로그인 확인 기능 구현
여러 대의 분산 서버에서 이미지를 관리할 수 있는 AWS S3 환경 구축
동시성 이슈로 인한 문제를 고려하여 Redisson Lock 을 활용하여, 포인트 전환 기능 구현
낙관적 Lock 을 활용하여 라이더 배차 로직 개발
Redis INCR 과 백업 테이블을 활용하여 선착순 쿠폰 발급 기능 개발
Self-Invocation 을 고려하여 주문, 결제 로직 개발
Redis Session 을 이용하여 분산 서버 환경에서 Session 클러스터링
RestControllerAdvice 와ExceptionHandler 를 활용하여 예외 처리
Redis 를 활용한 캐싱을 적용하여 응답속도 개선
Redis Session, Cache 서버 분리

프로젝트 중점 사항

서버의 확장성 고려
버전 관리
logback 을 활용하여 log 관리
문서화
Redis Cache 를 활용하여 조회 기능 구현
동시성 이슈를 고려하며 기능 구현
Nginx 을 활용한 로드 밸런싱 환경 구축
JMeter 를 활용한 성능 테스트
로그인 서비스 추상화
AOP 를 활용하여 로그인 체크 기능 구현
HandlerMethodArgumentResolver 와 WebConfig 를 활용하여 현재 로그인중인 유저 정보 가져오기 구현
결제 서비스 추상화
Redis Session 활용
Redis Session 과 Cache 서버 분리
AWS S3 를 활용한 이미지 파일 관리
테스트 코드 작성
Docker 컨테이너 활용
Transactional 의 원리를 이해하고, 주문 및 결제 로직 구현

DB ERD