Spring
-
overviewGateway Handler Mapping SpringMVC의 동작 구성과 비슷하다. DispatcherServlet과 유사하게 Front Controller를 하나두어 진입점을 하나로 통합하였다. client 호출에서 Gateway Web Handler에 도달하기 전까지의 호출 순서를 보면 아래와 같다 Client ->HttpWebHandlerAdapter.handle -> (predicate, filter에서 사용하는 ServerWebExchange 생성 및 전달 )DispatcherHandler.handle -> (DispatcherServlet 유사)(handlerMapping을 찾아 handlerAdapter에서 수행)RoutePredicateHandlerMapping.getH..
[SpringCloudGateway] 구성 요소 및 동작 내용overviewGateway Handler Mapping SpringMVC의 동작 구성과 비슷하다. DispatcherServlet과 유사하게 Front Controller를 하나두어 진입점을 하나로 통합하였다. client 호출에서 Gateway Web Handler에 도달하기 전까지의 호출 순서를 보면 아래와 같다 Client ->HttpWebHandlerAdapter.handle -> (predicate, filter에서 사용하는 ServerWebExchange 생성 및 전달 )DispatcherHandler.handle -> (DispatcherServlet 유사)(handlerMapping을 찾아 handlerAdapter에서 수행)RoutePredicateHandlerMapping.getH..
2025.01.22 -
SpringCloudGateway는 스프링으로 만들어진 API-Gateway이다.그럼 API-Gateway가 무엇인지 먼저 알아보자. API-Gateway 란마이크로 서비스 아키텍처 형태로 구축되면서 다양한 서비스들의 엔드포인트를 관리하는 데 있어 어려움이 생기고, 또한 각 서비스마다 공통적으로 들어가는 기능(인증/인가, 로깅, 모니터링 등)들을 중복으로 개발해야 한다는 문제점이 발생한다.이러한 문제점을 해결하기 위해 API-Gateway를 도입할 수 있다. 즉, 모든 서비스로의 요청을 처리하는 단일 진입점이라고 할 수 있다. Gateway 패턴Gateway는 서버들에서 필요한 공통 로직을 통합하여 처리모든 서비스에서 필요한 유저 정보, 보안 정책 등을 Gateway에서 처리하고 이를 업스트림 서버..
[SpringCloudGateway] SpringCloudGateway란 (정의, 사용이유)SpringCloudGateway는 스프링으로 만들어진 API-Gateway이다.그럼 API-Gateway가 무엇인지 먼저 알아보자. API-Gateway 란마이크로 서비스 아키텍처 형태로 구축되면서 다양한 서비스들의 엔드포인트를 관리하는 데 있어 어려움이 생기고, 또한 각 서비스마다 공통적으로 들어가는 기능(인증/인가, 로깅, 모니터링 등)들을 중복으로 개발해야 한다는 문제점이 발생한다.이러한 문제점을 해결하기 위해 API-Gateway를 도입할 수 있다. 즉, 모든 서비스로의 요청을 처리하는 단일 진입점이라고 할 수 있다. Gateway 패턴Gateway는 서버들에서 필요한 공통 로직을 통합하여 처리모든 서비스에서 필요한 유저 정보, 보안 정책 등을 Gateway에서 처리하고 이를 업스트림 서버..
2025.01.19 -
보통의 경우에는 애플리케이션에서 하나의 DB에만 조회를 한다. 하지만 DB 부하를 분산하기 위해서 조회는 Slave에서만 한다던가, 샤딩된 DB를 사용하기도 한다. 이러한 경우에 어떻게 MultiDataSource를 조회할 수 있도록 Spring에서 설정할 수 있는지 알아보자. DataSource 정보 application.yml을 이용하여 DB url 및 user 정보 관리multi-datasource: kakao: url: jdbc:h2:tcp://localhost/~/testcase username: sa passwd: naver: url: jdbc:h2:tcp://localhost/~/test username: sa passwd: 위의 설정 정보를 매핑할 Da..
[Spring] RoutingDataSource 이용 DB 요청 분산(MasterSlave, Sharding..)보통의 경우에는 애플리케이션에서 하나의 DB에만 조회를 한다. 하지만 DB 부하를 분산하기 위해서 조회는 Slave에서만 한다던가, 샤딩된 DB를 사용하기도 한다. 이러한 경우에 어떻게 MultiDataSource를 조회할 수 있도록 Spring에서 설정할 수 있는지 알아보자. DataSource 정보 application.yml을 이용하여 DB url 및 user 정보 관리multi-datasource: kakao: url: jdbc:h2:tcp://localhost/~/testcase username: sa passwd: naver: url: jdbc:h2:tcp://localhost/~/test username: sa passwd: 위의 설정 정보를 매핑할 Da..
2025.01.16 -
개방 폐쇄 원칙(OCP)클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 변화의 특성이 다른 부분을 구분하고 각각 다른 목적과 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어야 한다. 템플릿코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분(템플릿)을 자유롭게 변경되는 성질을 가진 부분(콜백)으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법 템플릿 메서드 패턴도 템플릿을 사용한다.다만, 템플릿 메서드 패턴은 상속을 이용템플릿은 전략 패턴이 적용되었다 콜백(Callback)콜백은 실행되는 것을 목적으로 다른 오브젝트의 메서드에 전달되는 오브젝트파라미터로 전달되지만 값을 참조하기 위한 것이 아니라 특정 로직을 담은 메..
토비의 스프링 6 - 템플릿개방 폐쇄 원칙(OCP)클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 변화의 특성이 다른 부분을 구분하고 각각 다른 목적과 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어야 한다. 템플릿코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분(템플릿)을 자유롭게 변경되는 성질을 가진 부분(콜백)으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법 템플릿 메서드 패턴도 템플릿을 사용한다.다만, 템플릿 메서드 패턴은 상속을 이용템플릿은 전략 패턴이 적용되었다 콜백(Callback)콜백은 실행되는 것을 목적으로 다른 오브젝트의 메서드에 전달되는 오브젝트파라미터로 전달되지만 값을 참조하기 위한 것이 아니라 특정 로직을 담은 메..
2024.11.29