[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에 저장됩니다.