[MSA - Spring Cloud] Spring Cloud Gateway 개발하기
·
Spring/Spring Cloud
이전에는 Eureka 서버가 직접 서비스에 주소를 알려주고 통신하는 방법을 사용했다. 이 과정에서 gateway를 추가해서 들어오는 요청의 전후처리와 인증/인가를 수행할 수 있도록 설정해 보려고 한다. API Gateway의 기능라우팅인증/인가로드 밸런싱모니터링 및 로깅요청 및 응답 변환 Spring Cloud Gateway 란?SpringCloud Neflix 패키지의 일부로 msa 환경에서 널리 사용된다. 클라우드의 요청을 적절한 서비스로 라우팅 시켜주고, 다양한 필터링 기능을 제공한다.Gateway 또한 EurekaClient로 취급하며 Server와 통신한다.내부에는 Globalfilter, GatewayFilter라는 추상체가 존재하고 해당 추상체를 통해 filterChain메서드를 실행시킬 수..
[MSA] 멀티 모듈에서 중복되는 코드를 서브모듈끼리 공유하는 방법
·
Spring/Spring Cloud
멀티 모듈을 모노 리포지터리로 구성하여 사용하던 중 FeignClient를 사용한 모듈 간 통신 중에 의문이 하나 들었다.모듈 간 통신하는 과정에서 전달하는 DTO는 형태가 동일한데 이걸 굳이 각 모듈이 필요할 때마다 모듈에 동일한 DTO를 만들어야 할까?그래서 루트에서 서브 모듈 간 데이터를 공유하기 위한 설정방법을 찾아보게 되었다. 여기서 엄청난 삽질을 하게 되었지만 자주 일어날만한 상황은 아닌지라 가장 마지막 트러블 해결 과정에서 적어보겠다.갑자기 생각난 공유 배우님의 빡친짤 나도 실패할때마다 딱 저 표정이였다. 프로젝트 구조 확인하기혼자 실습하는 mas-movie-reservation 프로젝트는 다음과 같은 구조를 지니고 있다.나는 여기서 movie 모듈과 user모듈을 공유할 것이고, 그 이유는..
[MSA - Spring Cloud] Eureka Client 개발하기(feat. FeignClient)
·
Spring/Spring Cloud
이번에는 Service Registry에 등록할 Client 서버를 개발해보려고 한다.User Service에서 회원가입후 로그인 API에 요청을 보내면 비즈니스 로직중 Auth 서비스에 토큰 생성을 요청하는 로직이 수행되어 두 클라이언트 서버간 통신이 이루어지는 작업을 함께 알아보려고 한다. 이때 사용하는 FeignClient에 대해서도 같이 알아보자.우선 프로젝트를 모두 생성하고나서 비즈니스 로직과 함께 FeignClient에 대해 알아보겠다.Dependency 설정dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:..
[MSA - Spring Cloud] Eureka Server 개발하기(feat. Service Discovery란? 서버/클라이언트 사이드 디스커버리 전략)
·
Spring/Spring Cloud
MSA 환경을 구성하는데 있어 가장 먼저 개설하는 서버이다. 내가 사용한 기술은 Netflix가 개발한 Eureka라는 기술이며 서비스를 등록하고 디스커버리 하는 역할을 수행한다.Netflix는 왜 MSA 환경이 필요했을까?Netflix.io GithubNetflix MSA 사례 (출처 삼성SDS)우리는 면접에서 언제든지 왜 MSA를 사용했어요? 왜 자바를 사용했나요? 라는 물음에 대답할 준비를 해야 한다... 남들이 다 하는 기술과 아키텍처이니까요.. 라고 할 순 없기에 모노리딕 서비스 아키텍처와 어떤 차별점이 있는지 어떤 장점이 있어서 대기업들이 넷플릭스 당하다 라는 말을 만들며 MSA 도입에 따라나서게 됐는지 알아보면 좋을 것 같다. 아래 내용은 위 링크에 대한 내용을 정리한 내용이기에 이미 읽고 ..
[MSA] 모노 레포와 멀티 레포 전략
·
Spring/Spring Cloud
MSA 강의를 마치고 실습에 도전하려 하는 순간 바로 장애물이 하나 생겼다.레포지터리를 어떻게 만들어야 하지....? 라는 고민이 생긴것이다. 검색해보니 모노 레포와 멀티 레포라는 두 가지 방식이 존재 했고 이에 대한 내용을 정리해보려고 한다.멀티 리포시스템상 각각의 서비스를 별도의 레포지터리로 만들어서 관리하는 방식이다. 서비스 간 연동이 소스 단위로 구성되지 않고, 별도의 폴더로 구성된다.멀티 리포의 장점모듈화 : 각 저장소가 독립적으로 관리되기 때문에, 프로젝트의 규모가 커지더라도 유지보수성이 향상되고 각각의 리포지터리의 책임관계(오너쉽)가 더 뚜렷하다.더 쉬운 의존성 관리 : 각 저장소마다 별도의 의존성 관리를 하기 때문에 쉽게 관리할 수 있다.원활한 협업 : 각 저장소는 모노레포보다 더 작은 규..