이 레포지토리는 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 레벨에서 트래픽을 분산작업을한다
- 여러 인스턴스를 등록할때 랜덤포트
- presentation (표현 영역)
- application (응용 영역)
- domain을 활용하여 원하는 데이터를 조립하여 표현영역으로 리턴
- domain (도메인 영역) - 핵심 로직
- infra (인프라스트럭쳐 영역) - 실제 구현
- 로그인
- 이메일-패스워드 정상입력
- 이메일-패스워드 불일치
- 토큰
- 정상 토큰
- 비정상 토큰
- 주문하기
- 비정상 프로퍼티
- 정상 프로퍼티
- 재고 있을 경우
- 재고 없을 경우
- 여러 프로덕트 주문 중에 하나는 재고가 없을 경우
- 주문 단건 조회
- 내 주문 조회
- (비정상) 다른 사람 주문 조회
- 전체 주문 조회
- 주문 (배송지) 수정 PUT
- 주문 취소 PATCH
- CRUD
주문할때 단순히 재고처리뿐만 아니라 배송, 결제 등의 도메인 서비스가 추가 된다면,
트랜잭션 일관성에 대해서 생각을 해보아야할 것입니다.
여기서 확인 가능
- [Baeldung] Documenting a Spring REST API Using OpenAPI 3.0
- [Spring Boot Doc] Using the @SpringBootApplication Annotation
- [StackOverFlow] What exactly is Field Injection and how to avoid it?
- [인프런] 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
- [인프런] 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
- [인프런] 실전! 스프링 데이터 JPA
- Server vs Client-side load balancing
- [MSA] Spring Cloud Ribbon 개념
- Load balancer and API Gateway confusion
- Spring Cloud Loadbalancer Quick Guide
- [Baeldung] Spring Cloud LoadBalncer Quick Guide
- Spring Cloud Gateway and Springdoc OpenAPi integration
- Microservices API Documentation with Springdoc OpenAPI
- springdoc/springdoc-openapi#1366
- What is Two phase commit?
- [Baeldung] Spring RestTemplate Error Handling



