현재 모놀리스 구조에서 마이크로서비스 구조로 점진적 변화를 시도해보는 공부를 하고있다. api-gateway의 필요성을 느껴서 netflix에서 만든 zuul을 적용하던 중 발생한 문제점에 대해 정리해두려고 한다.
아직 나누는 중이라 임시로 지정했다.
@Bean
public LocationRewriteFilter locationRewriteFilter() {
return new LocationRewriteFilter();
}
api-gateway application 파일에 이 코드를 입력해주면 해결된다.
https://www.javadoc.io/static/org.springframework.cloud/spring-cloud-netflix-core/1.4.0.RELEASE/org/springframework/cloud/netflix/zuul/filters/post/LocationRewriteFilter.html
에 따르면
ZuulFilterZuul URL이 되도록 Location 헤더를 다시 작성하는 일을 담당한다고 적혀져있다.
처음에 이유를 몰라서 한동안 헤맸던 것 같다. 계속 필터 확인하고 클라이언트 단에서 잘못 호출하는지 확인도 해보고.. 이 플로우를 제대로 이해하지 못했던 것 같아서 다시 한번 zuul에 대해서도 찾아보기도 했다. 결국 스터디를 같이 진행해주고 있는 멘토님과 이야기를 나누다가 이런 식이다 ~ 이런 식이구나라고 이해한 뒤 해결 방법을 찾게 되었다.
아직 적용해보진 않았지만 예상으로는 완벽하게 이제 서비스별 분리를 하고 zuul에서 필터 적용을 한다면 저 설정을 하지 않아도 원하는 결과값을 얻을 수 있지 않을까 생각이 들었다.
https://www.javadoc.io/static/org.springframework.cloud/spring-cloud-netflix-core/1.4.0.RELEASE/org/springframework/cloud/netflix/zuul/filters/post/LocationRewriteFilter.html
멘토의 친절한 설명 ㅎㅎ @대악인 👍