Skip to content

kyupid/ddd-msa

Repository files navigation

DDD-MSA

이 레포지토리는 DDD 로 MSA 를 구성하는 것이 주목적입니다

사용 기술

  • Spring Boot
  • Spring Data Jpa
  • H2
  • Springdoc
  • Spring Cloud Netflix Eureka
  • Spring Cloud Loadbalancer
  • Spring Cloud Gateway

서비스 아키텍쳐

각 서비스들은 2개 이상의 인스턴스를 사용하고 있다고 가정합니다.

gateway 와 loadbalancer의 차이점은 무엇일까요?
  • 게이트웨이 같은 경우 api 전처리 작업이 가능
  • 로드밸런서 같은 경우 기능 제공을 하는 것이 아니라 protocol or socket 레벨에서 트래픽을 분산작업을한다
Reference: https://stackoverflow.com/questions/61174839/load-balancer-and-api-gateway-confusion

2022-08-24_20-57-54

Eureka에 여러 인스턴스 등록

  • 여러 인스턴스를 등록할때 랜덤포트

image image

Swagger 통합

image

각 Service 패키지 구조

  • presentation (표현 영역)
  • application (응용 영역)
    • domain을 활용하여 원하는 데이터를 조립하여 표현영역으로 리턴
  • domain (도메인 영역) - 핵심 로직
  • infra (인프라스트럭쳐 영역) - 실제 구현

REST API

member

  • 로그인
    • 이메일-패스워드 정상입력
    • 이메일-패스워드 불일치

order->product

  • 토큰
    • 정상 토큰
    • 비정상 토큰
  • 주문하기
    • 비정상 프로퍼티
    • 정상 프로퍼티
      • 재고 있을 경우
      • 재고 없을 경우
        • 여러 프로덕트 주문 중에 하나는 재고가 없을 경우
  • 주문 단건 조회
    • 내 주문 조회
    • (비정상) 다른 사람 주문 조회
  • 전체 주문 조회
  • 주문 (배송지) 수정 PUT
  • 주문 취소 PATCH

product

  • CRUD

트랜잭션 일관성 처리

주문할때 단순히 재고처리뿐만 아니라 배송, 결제 등의 도메인 서비스가 추가 된다면,
트랜잭션 일관성에 대해서 생각을 해보아야할 것입니다.
여기서 확인 가능

References

Primary references to implement the project

References that helped implement features in the project

About

주문 서비스 - Spring Cloud 로 MSA 구성

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages