반응형
회사에서 Spring Cloud Gateway를 기반으로 Gateway 서버를 개발하고 잘 운영하고 있었는데, B2B로 서버를 납품했을 때 문제가 발생했었다.
부산에서 제주도에 위치한 서버 API를 호출하는데, 지연 시간이 적게는 5초에서 길게는 15초에서 20초 사이였다.
사실 서버의 문제라기 보다는 네트워크 망의 문제인 것 같은데, 납품되는 곳이 제주도에 위치한 IDC 센터이고, 국정원에서 보안감사를 하고 있어서 패킷 덤프 뜰 수도 없어, 일단 Gateway 서버와 다운 스트림(엣지 뒤에 있는 서비스 서버) 간의 request response 시간대를 보고자 로그를 볼 필요성이 있었다.
감사하게도, Spring Cloud Gateway에서는 해당 기능을 제공하고 있다.
cloud.spring.io/spring-cloud-gateway/reference/html/#troubleshooting
spring cloud gateway 서버의 application.yml 을 다음과 같이 설정해주면 된다.
spring:
application:
name: gateway-server
cloud:
gateway:
httpclient:
# 클라이언트 <-> 게이트웨이 <-> 다운스트림 서버 request response 로깅
wiretap: true
# gateway 서버 디버깅용 로깅 추가
logging:
level:
org.springframework.cloud.gateway: trace
reactor.netty: trace
이후 Gateway Server를 실행 시키고 리퀘스트를 보내게 되면 여러 debug 로그 중에 다음과 같이 proxy 전에 gateway server 가 받은 데이터의 내용과 시간대 그리고 proxy 하여 받은 응답의 시간대와 데이터를 확인할 수 있고, 이를 바탕으로 Gateway 서버와 다운 스트림 서버 간의 지연 시간도 유추할 수 있다.
(PS: 제주도 출장각이보인다😂)
반응형
'Programming > Spring' 카테고리의 다른 글
[SpringBoot] Spring Boot 2.3.8 도커 컨테이너 만들기 (BuildPack) (0) | 2021.01.24 |
---|---|
[Spring Boot] Filter (2) -Response Body Modify (5) | 2020.08.04 |
[Spring Boot] Filter (1) - Request Body Modify (0) | 2020.07.15 |
[SpringBoot] Dockerizing a Spring Boot Application (0) | 2019.11.19 |
[Spring Boot] Java Servlet Filter for Logging Request Parameter (2) | 2019.11.12 |