[Spring Cloud로 개발하는 MSA] Catalogs와 Orders MicroService 구현

유호빈·2024년 3월 29일
0

MSA

목록 보기
5/10

인프런의 "Spring Cloud로 개발하는 마이크로서비스" 강의를 보고 작성되었습니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4

앞서 포스팅에서는 구성한 쇼핑몰의 User 등록 부분을 구현하였고, 이번 포스팅에서는 유저 조회와 Catalog와 Order Service를 구현합니다.

1. Users Microservice - 사용자 조회

사용자 조회 시에는 사용자 등록하는 API와 uri는 동일하지만 http method만 GET으로 변경하여 사용합니다.

사용자 조회 기능을 구현하기 전에 먼저 User Microservice를 API Gateway Service에 추가해주어야 합니다.

1) Users Microservice와 Spring Cloud Gateway 연동

UserController api 등록

health 체크를 위한 간단한 api를 controller에 구현합니다.

Gateway의 application.yml 파일

user-service의 이름으로 등록되는 User Microservice를 라우팅 정보에 등록해줍니다.

등록된 정보에 따라 게이트웨이를 거치면 포트에 상관없이 user-service로 포워딩이 됩니다.

  • 503 에러 발생

서버 재시작 후 게이트웨이의 포트로 uri에 접속했을 때, 503에러가 발생하는 이유는 다음과 같습니다.

User Microservice가 재기동 되기 직전에 Eureka 서버에 unregist를 요청하고, 재기동 되면서 새로운 인스턴스 정보를 regist합니다.
이때, API Gateway는 아직 이전 정보를 갖고 있는 상태이기 때문에 User Service가 아직 정상적으로 준비되지 않아 503 에러가 발생합니다.

2) 사용자 조회 기능

  • ResponseUser, ResponseOrder 클래스 추가

  • UserService에 사용자 조회 기능 추가

  • UserController에 사용자 목록 및 상세 조회 기능 추가

사용자 목록 조회

상세 조회

2. Catalogs Microservices 추가

1) 프로젝트 생성

사용되는 Dependency는 User Service에 사용된 것과 동일합니다.

  • application.yml

서버 시작 시 데이터베이스에 데이터를 넣기 때문에, ddl-auto를 create-drop으로 설정하여 데이터베이스를 지우고 시작하는 방식으로 설정합니다.

  • data.sql 추가

프로젝트 시작시 h2 데이터베이스의 위의 데이터를 추가합니다.

  • Entity 및 Repository 추가

생성한 객체를 다른 서버에서 사용할 수 있기 때문에 Serailizable을 구현합니다.

  • Service 및 구현체

Service 인터페이스를 만들어 위와 같이 메소드를 구현합니다.

  • 컨트롤러

상품 정보를 조회하는 컨트롤러를 구현합니다.

  • h2 Database 확인

data.sql에 등록한 데이터가 서버 시작 시 h2 Database에 등록된 것을 확인할 수 있습니다.

2) Gateway에 Catalogs Microservice 등록

게이트웨이의 application.yml 파일에 Catalog Service 라우팅 정보를 등록합니다.

  • Postman 테스트

gateway의 port 번호로 API를 호출하게 되면 등록된 상품 정보를 확인할 수 있습니다.

3. Orders Microservice 추가

1) 프로젝트 생성

역시 Dependency는 위의 두 서비스와 동일합니다.

  • application.yml

  • Entity 및 Repository

  • Service 및 구현체

  • 컨트롤러

2) Gateway에 Order Microservice 등록

게이트웨이의 application.yml에 Order Microservice의 라우팅 정보를 추가합니다.

  • 테스트

Eureka 서버인 8761포트로 접속하면 4개의 서비스가 등록된 모습을 볼 수 있습니다.

  • Postman 테스트

gateway의 포트인 8000번에 order-service의 주문 등록 api를 호출하여 주문을 등록할 수 있습니다.

동일하게 GET 메소드로 gateway에 호출하면 등록된 주문을 확인할 수 있습니다.


profile
시작하자

0개의 댓글