4-7월 FastCamp 교육용 프로젝트#1

https://github.com/jinho-yoo-jack/jedi-spring-labs

개요

현직에서 소프트웨어를 개발하고 있지만, 스파게티 소스 속에서 살아가는 개발자에게 “지속 가능한 소프트웨어”를 설계 및 개발이란 무엇인지를 맛보기

목표

“지속 가능한 소프트웨어”를 설계 및 개발 할 수 있는 제다이(개발자)로 성장하기

포스(워라벨)와 함께 하기를…

DDD; Domain Driven Design

이커머스 주문/결제 시스템

Requirements; 도메인 기반의 요구사항

  1. 결제 승인 요청
    1. 결제 승인 요청은 Front에서 PG사에서 제공하는 UI 및 API를 통해서 카드사 선택 후, 결제를 진행
    2. 최종적으로 결제 승인 요청를 그 결과를 PG사에서 응답 메시지로 전달
    3. 전달 받은 응답 메시지를 backend로 전달(api-url: /fpay/payment/fullfill)
  2. 결제 승인 완료 개발
    1. Front에서 주문자 정보, 결제 승인 정보를 Request Message로 전송
    2. Backend에서는 해당 정보를 저장하고 저장한 데이터 메시지로 응답
  3. 결제 취소 개발
    1. 취소할 결제 정보를 요청 메시지로 전달
  4. 결제 정산 개발

API 설계

ERD 설계

Hexagonal Architecture; Port and Adapter

프로젝트 구조 설계

프로젝트 공통 요소 설계

AOP, Intercepter, Filter

요청에 대한 공통 요소

응답에 대한 공통 요소

오류에 대한 공통 요소

대기열 페이지

대형 이벤트를 진행하는 경우, 동시 접속자 수가 평소보다 폭발적으로 올라간다. 그래서 모든 사용자의 요청을 커버할 수 없다. 이 때 우리는 대기열 페이지를 통해서 수용 가능한 요청만 처리하도록 하고 나머지는 대기열에서 대기 하도록 하는 구조를 생각할 수 있을 것 같다.

참고 문헌

https://lsdiary.tistory.com/119