Java

[MSA] e-commerce API; 프로젝트 흐름

ride-dev 2024. 6. 18. 12:40

[MSA] e-commerce API; 프로젝트 흐름

[MSA] e-commerce API; 구현1 - 설정(config-server, eureka-server, gateway)

[MSA] e-commerce API; 구현2 - customer, product, payment, order, notification

프로젝트 흐름

전체적인 흐름은 아래와 같으며 하나씩 분해해보겠습니다.

1. Eureka(Discovery) Server, Config Server, Gateway

Spring Cloud의 기초적인 형태입니다.

Eureka Server에 모든 서비스를 등록합니다.

각 서비스는 Config Server에서 중앙 집중식으로 구성 관리합니다.

외부 요청은 Gateway가 리디렉션합니다.

2. 인터넷 → 게이트웨이 → (로드 밸런싱) → 서비스

좌: 인터넷→게이트웨이; 우: 게이트웨이 로드밸런싱(라운드 로빈)

인터넷에서 게이트웨이로 요청을 보냅니다.

게이트웨이는 내부 네트워크의 서비스로 리디렉션합니다.

내부 네트워크의 각 서비스는 상황에 따라 여러 개의 포트로 수신할 수 있으며,

라운드 로빈방식으로 로드 밸런싱하여 가용성을 높입니다.

3. ERD, 도메인 별 흐름

e-commerce 에는 5가지의 도메인이 존재합니다.

고객, 상품, 주문, 결제, 알림

결제- 주문 - 상품은 민감한 데이터를 포함하기 때문에

높은 수준의 일관성과 트랜잭션 관리를 위해 RDBMS를 사용했습니다.

 

알림, 고객은 새로운 필드가 추가될 수 있습니다.

확장성, 빠른 읽기 성능을 고려하여 NoSQL을 사용했습니다.

Customer의 경우, KeyCloak을 사용하여 민감한 데이터를 KeyCloak에서 관리하도록 하였습니다.

3.1 Product

상품에는 여러 개의 카테고리가 있을 수 있습니다.

(전자제품 카테고리에 컴퓨터, 노트북 등의 상품이 존재하는 것처럼)

카테고리의 하위 항목에 여러 상품이 존재합니다.

 

개별 또는 전체 상품 목록을 조회할 수 있고,

상품 결제 시 상품의 수량이 감소합니다.

3.2 Customer

고객 데이터에 대해 생성, 조회, 갱신, 삭제가 가능합니다.

모든 고객 데이터를 조회할 수 있습니다.

3.3 Order

고객은 상품(Product)을 주문(Order)하고 결제(Payment)합니다.

이 때,

고객(Customer)과 상품(Product)이 존재하는지 확인하고,

주문 목록(Order - OrderLine)을 생성, 결제(Payment)합니다.

3.4 Payment

고객은 주문(Order - OrderLine)에 대한 결제(Payment)를 진행합니다.

3.5 Notification

고객은 주문(Order)또는 결제(Payment)가 확정되면 메일을 받습니다.

확정사항은 메일을 발송하기 전에 DB에 저장됩니다.

 

728x90