본문 바로가기

Spring

(183)
[Spring Cloud] Gateway Security - 적용 이번 장에서는 Spring Cloud Gateway - 필터 에 이어 Gateway에 Spring Security를 적용시키는 방법에 대해서 알아본다. 모든 소스 코드는 깃허브 (링크) 에 올려두었다. Flow 게이트웨이에 스프링 시큐리티를 적용시키기 위하여 전체적으로 어떠한 흐름으로 요청이 처리되는지 알아본다. JWT를 통한 인증을 처리할 예정이며 JWT에 대해서는 다루지 않으며 적용하는 방법에 대한 내용만 진행한다. 혹시 JWT를 처음 접한다면 글의 가장 하단부에 첨부한 JWT 공식 홈페이지와 인프런 JWT 관련 무료 강의를 첨부하므로 참고하도록 한다. 게이트웨이에 JWT를 검증하는 필터를 적용하면 아래와 같은 프로세스로 처리된다. 최초에 사용자가 로그인하면 유저 서비스에서 JWT 토큰을 발급한다. ..
[Reactive Programming] Scheduler - Reactor Spring WebFlux Series - 5 우리는 이전 장 Scheduler - Basic 에서 reactivestreams의 Publisher와 Subscriber를 사용하여 Scheduler를 구현하였다. 이번 장에서는 동일한 기능을 Spring Reactor를 사용하여 구현해본다. 모든 코드는 깃허브 (링크)의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. 개요 직접 Publisher와 Subscriber를 구현하지 않고 스프링의 Reactor를 사용하면 손쉽게 스케쥴러를 구현할 수 있다. 하지만 실제로 스케쥴러의 종류는 다양하고 사용가능한 스레드풀의 종류도 다양하다. 여러 종류의 스케쥴러를 사용하여 레이턴시를 낮추거나 애플리케이션의 실행 속도를 빠르게 만드는 방법 등 여러가지 튜닝 요소가..
[Reactive Programming] Scheduler - Basic Spring WebFlux Series - 4 이전 장 에서는 reactivestreams 패키지의 Publisher와 Subscriber를 구현하여 Operators를 만들어보았다. 이번 장에서는 Reactive Streams의 Scheduler에 대해서 알아본다. 모든 코드는 깃허브 (링크)의 테스트 코드에 있으므로 필요하다면 참고하도록 한다. 개요 지금까지 사용했던 방식으로 Reactive Streams의 Publisher와 Subscriber를 구현해서 테스트를 실행시켜 본다. @Slf4j class SchedulerLectureTest { @Test void schedulerLectureTest() { Publisher publisher = (subscriber) -> { subscriber.o..
[Spring Cloud] Gateway - 필터 이번 장에서는 Spring Cloud Gateway - 구성 에 이어 직접 API Gateway에 Filter를 적용하는 방법들에 대해서 알아본다. 모든 소스 코드는 깃허브 (링크) 에 올려두었다. 자바 코드로 적용 Gateway 모듈에 구성을 위한 FilterConfig 클래스 파일을 생성한다. "/test-server-1/" 경로로 들어오는 요청의 헤더에 "test-server-1-request" 키와 "test-server-1-request-header" 값을 가지는 헤더를 추가하고 TEST-SERVER-1 이라는 이름을 가진 애플리케이션에 리다이렉트 한다. "/test-server-2/" 경로로 들어오는 요청의 헤더에 "test-server-2-request" 키와 "test-server-2-re..
[Spring Cloud] Gateway - 구성 이번 장에서는 API Gateway Pattern- 이론 에 이어 직접 Spring Gateway 서버를 구축해본다. 모든 소스 코드는 깃허브 (링크) 에 올려두었다. 프로젝트 구성 Spring Gateway 서버를 구축하기 위해서는 Discovery 서버가 실행되어 있어야한다. 만약 실행되지 않은 상태라면 필자가 이전에 작성한 글 (링크) 를 참고하도록 한다. 1. 테스트 모듈 추가 Spring Gateway 서버를 구축하고 정상적으로 작동하는지 확인하기 위해서는 아래의 이미지와 같이 테스트를 위한 서비스가 필요하다. 테스트 모듈을 생성하는 방법은 Gateway 서버를 구축하는 방법과는 거리가 있으므로 글의 하단부에서 따로 다루도록 한다. 만약 테스트 모듈이 없다면 하단부의 글을 확인하고 테스트 모듈을..
[Spring Cloud] Gateway - 이론 우리는 이전 장 에서 Spring Cloud Netflix Eureka에 대해서 알아보았다. 이번 장에서는 Spring Cloud Gateway를 구축하기에 앞서서 API Gateway란 무엇인지에 대해서 알아본다. 모든 소스 코드는 깃허브 (링크) 에 올려두었다. API Gateway Pattern API Gateway Pattern의 필요성 우리는 이전에 하나의 커다란 서비스가 기능별로 나누어진 마이크로서비스 아키텍처(MSA)에 대해서 알아보았다. MSA를 적용하여 온라인 상점을 구축하고 있는 상황을 예로 들어본다. 우리는 서비스마다 기능을 나누게 될 것이고 Price Service(상품의 가격을 담당하는 서비스), Order Service(주문을 담당하는 서비스), Review Service(리뷰를..
[Spring Cloud] Eureka - 구성 이번 장에서는 Spring Cloud Netflix Eureka - 이론 에 이어 직접 디스커버리(유레카) 서버를 구축해본다. 모든 소스 코드는 깃허브 (링크) 에 올려두었다. 기본 프로젝트 구성 마이크로서비스의 특성상 한 번에 많은 프로젝트를 실행시켜야한다. 수많은 프로젝트를 위해 IDE를 여러개 실행시키기에는 무리가 있으므로 멀티 모듈로 구성하여 진행하도록 한다. 멀티 모듈 프로젝트 구성은 필자가 이전에 작성해놓은 글 (링크) 를 참고하도록 한다. 1. 의존성 추가 유레카 서버를 구축하기 위해 필요한 의존성이므로 전부 추가하도록 한다. ext { set('springCloudVersion', "2021.0.1") } dependencies { implementation 'org...
[Spring Cloud] Eureka - 이론 이번 장에서는 Spring Cloud Netflix Eureka(이하 유레카)에 대해서 알아보고 직접 유레카 서버를 구축해본다. Spring Cloud Netflix Eureka 마이크로서비스 아키텍처에서 유레카란 client-side service discovery라고 할 수 있다. 시스템은 트래픽에 따라 동적으로 늘어날 수도 줄어들 수도 있다. 이러한 환경에서 서비스의 host와 port가 동적으로 변하더라도 서비스 인스턴스를 호출할 수 있도록 해주는 Service Registry를 제공 및 관리해준다. 설계 목적 유레카는 middle-tier load balancer로 정의된다. middle-tier load balancer는 로드밸런싱과 장애복구(failover)가 가능한 middle-tier 서..