티스토리 뷰
웹 프로그래밍/MSA 학개론
[MSA] Spring Cloud로 개발하는 E-commerce 마이크로 서비스 어플리케이션(Catalogs) - 6 -
박강균 IT 2022. 4. 18. 17:35드디어 User-Service를 벗어나서 Catalogs 서비스를 개발할 예정입니다!
와!!! Catalogs!!
그럼 Catalogs의 API는 어떤 구조일까요?
#Catalogs
기능 | 마이크로 서비스 | URI(API Gateway) | HTTP Method |
상품 목록 조회 | Catalogs MicroService | /catalog-service/catalogs | GET |
사용자 별 상품 주문 | Orders MicroService | /order-service/{user_id}/orders | POST |
사용자 별 주문 내역 조회 | Orders MicroService | /order-service/{user_id}/orders | GET |
그럼 이제 실제로 프로젝트를 생성해줄게요.
그 뒤에 pom.xml을 조금 수정해줘야 합니다.
#pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>catalog-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>catalog-service</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<spring-cloud.version>2021.0.1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
H2 DB의 버젼과, Mapper를 추가해준 pom.xml 파일의 내용입니다.
진행하다가 깨달은 것이 있는데, UserService와 다른점이 없습니다. 그래서
이번 포스팅은 날먹을 위해서 완성된 프로젝트를 공유합니다.
UserService의 회원조회와 너무나도 유사합니다. 다만 Gateway에 Yml파일을 수정해주셔야하는데
API-Gateway Service
#application.yml
server:
port: 8000
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: apigateway-service
cloud:
gateway:
default-filters:
- name: GlobalFilter
args:
baseMessage: Glabal Filter의 BaseMessage 에요!!
preLogger: true
postLogger : true
routes:
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/**
- id: catalog-service
uri: lb://CATALOG-SERVICE
predicates:
- Path=/catalog-service/**
다음과 같이 route를 하나 추가해줍니다.
테스트는 http://localhost:8000/catalog-service/catalogs 해당 URL로 하면 됩니다.
다음과 같이 서버시작과 동시에 자동으로 입력되는 상품데이터들이 조회가 완료되면 성공입니다.
이번 포스팅은 너무 성의없어서 죄송합니다.
너무 졸려서... 다만 정말로 전에 진행했던 User-service와 너무나도 유사성이 높아서
중복내용일까봐 앞으로 프로젝트 진행을 위해서 프로젝트 파일만 공유한다는 점! 알아주셨으면 좋겠네요
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MariaDB
- LoadBalancer
- config
- Spring + ELK
- Gateway
- zipkin
- MSA
- rabbitmq
- 운동일기
- consumer
- git
- docker
- 빅-오
- UserService
- 루틴기록
- ACTUATOR
- 운동
- 미래의나에게동기부여
- github
- prometheus
- 오늘저녁 삼겹살
- Kafka Connect
- Feign
- producer
- elasticSearch
- Logstash to ElasticSearch
- springcloud
- JWT
- Logstash 활용
- kafka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함