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

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

개요

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

목표

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

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

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

요청에 대한 공통 요소

응답에 대한 공통 요소

오류에 대한 공통 요소