1 분 소요

E-commerce란, 전자상거래로 쉽게 말해 쇼핑몰 서비스라고 할 수 있다.
이번에는 비즈니스 로직이라던가 도메인에 포커스를 맞추는게 아니라, 스프링 클라우드와 스프링 부트를 이용해 마이크로 서비스를 만드는 것 자체에 포커스를 맞출 것이다.
전체 어플리케이션 개요를 살펴보자.

전체 어플리케이션 개요

스크린샷 2022-09-28 오후 9 07 53
catalog-service, user-service, order-service 3개의 마이크로 서비스가 존재한다.

  1. 사용자는 제일 먼저 catalog-service를 통해 어떤 상품이 있는지 조회할 수 있다.
  2. 그 후 user-service를 통해 회원가입 및 로그인을 할 수 있다.
  3. order-service를 통해 상품을 주문할 수 있다.
  4. 주문을 하고 나서 order-service에서 상품의 정보를 가지고 있는 catalog-service로 수량 정보를 업데이트하기 위한 커맨드를 날린다.
    - 이때, 메시징 서비스인 kafka를 이용해 볼 것이다.
  5. 만약 사용자가 상품을 조회하고 싶다면 user-service에 주문을 조회할 수 있다.
  6. 그러면 user-serviceorder-service에게 사용자의 주문에 대한 정보를 요청한다.
    - 이때, 마이크로 서비스 간 통신이 일어난다.
    - 마이크로 서비스는 바운더리를 잘 나눠야하기 때문에,
    user-service는 사용자에 대한 정보만 가지고 있어야 하며, 주문에 대한 정보는 order-service가 가지고 있어야 한다.
    - 혹은 사용자가 order-service에게 다이렉트로 주문을 조회할 수도 있다.

전체 어플리케이션 구성

E-commerce 어플리케이션은 다음과 같이 구성되어 있을 것이다.
스크린샷 2022-09-28 오후 11 44 03

  1. 유레카 서버를 이용해 Registry service를 만든다.
  2. 위에서 설명한 세 가지 마이크로 서비스를 registry service에 등록될 것이다.
  3. catalog-serviceorder-service 사이에서 데이터를 주고받기 위해서 kafka(메시지 큐잉 서비스)를 연동할 것이다.
  4. 외부에서 클라이언트의 요청이 들어왔을 때 세 가지 마이크로 서비스로 분산하기 위해 API Gateway를 연동할 것이다. (부하 분산/서비스 라우팅)
  5. 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: 주문 확인

이제부터 각각의 마이크로 서비스들을 개발해보자.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기