[E-commerce App] E-commerce 어플리케이션 소개
E-commerce란, 전자상거래로 쉽게 말해 쇼핑몰 서비스라고 할 수 있다.
이번에는 비즈니스 로직이라던가 도메인에 포커스를 맞추는게 아니라, 스프링 클라우드와 스프링 부트를 이용해 마이크로 서비스를 만드는 것 자체에 포커스를 맞출 것이다.
전체 어플리케이션 개요를 살펴보자.
전체 어플리케이션 개요
catalog-service
, user-service
, order-service
3개의 마이크로 서비스가 존재한다.
- 사용자는 제일 먼저
catalog-service
를 통해 어떤 상품이 있는지 조회할 수 있다. - 그 후
user-service
를 통해 회원가입 및 로그인을 할 수 있다. order-service
를 통해 상품을 주문할 수 있다.- 주문을 하고 나서
order-service
에서 상품의 정보를 가지고 있는catalog-service
로 수량 정보를 업데이트하기 위한 커맨드를 날린다.
- 이때, 메시징 서비스인 kafka를 이용해 볼 것이다. - 만약 사용자가 상품을 조회하고 싶다면
user-service
에 주문을 조회할 수 있다. - 그러면
user-service
가order-service
에게 사용자의 주문에 대한 정보를 요청한다.
- 이때, 마이크로 서비스 간 통신이 일어난다.
- 마이크로 서비스는 바운더리를 잘 나눠야하기 때문에,user-service
는 사용자에 대한 정보만 가지고 있어야 하며, 주문에 대한 정보는order-service
가 가지고 있어야 한다.
- 혹은 사용자가order-service
에게 다이렉트로 주문을 조회할 수도 있다.
전체 어플리케이션 구성
E-commerce 어플리케이션은 다음과 같이 구성되어 있을 것이다.
- 유레카 서버를 이용해 Registry service를 만든다.
- 위에서 설명한 세 가지 마이크로 서비스를 registry service에 등록될 것이다.
catalog-service
와order-service
사이에서 데이터를 주고받기 위해서 kafka(메시지 큐잉 서비스)를 연동할 것이다.- 외부에서 클라이언트의 요청이 들어왔을 때 세 가지 마이크로 서비스로 분산하기 위해 API Gateway를 연동할 것이다. (부하 분산/서비스 라우팅)
- Configuration service를 등록함으로써 세 가지 마이크로 서비스가 가지고 있어야 할 환경 설정 정보를 마이크로 서비스 외부에 등록한 뒤 참조하여 사용할 것이다.
전체 어플리케이션의 구성 요소
- Git Repository
- 마이크로 서비스 소스 관리 및 프로파일 관리 - Config Server
- Git 저장소에 등록된 프로파일 정보 및 설정 정보 - Eureka Server
- 마이크로 서비스 등록 및 검색 - API Gateway Server
- 마이크로 서비스 부하 분산 및 서비스 라우팅 - Microservices
- 회원 ms, 주문 ms, 상품(카테고리) ms - Queuing System
- 마이크로 서비스 간 메시지 발행 및 구독
어플리케이션에서 사용하는 API
-
Catalog Service
-GET
/catalog-service/catalogs
: 상품 목록 제공 - User Service
-POST
/user-service/users
: 사용자 정보 등록 - User Service
-GET
/user-service/users
: 전체 사용자 조회 -
User Service
-GET
/user-service/users/{user_id}
: 사용자 정보, 주문 내역 조회 - Order Service
-POST
/order-service/users/{user_id}/orders
: 주문 등록 - Order Service
-GET
/order-service/users/{user_id}/orders
: 주문 확인
이제부터 각각의 마이크로 서비스들을 개발해보자.
💛 개인 공부 기록용 블로그입니다. 👻