Skip to content

로그2. Gateway의 역할 1 (feat. Logging)

CHOI SOHYUN edited this page Oct 19, 2024 · 1 revision

Gateway 역할

  • 외부 API 요청의 라우팅
  • 로깅
  • JWT 검증
  • RSA 복호화

아키텍처

image

  • 외부에서의 모든 API 요청을 Gateway를 거쳐서 전달하도록 함
  • 단, 추가적인 중계 역할은 병목현상이 발생할 것으로 예상하여 채택하지 않았음 -> 클라이언트가 모든 요청을 해야하는 부담을 지게 됨

로깅 필터

1) 목적

  • 모든 API 요청이 Gateway를 거치므로, 요청 경로 및 라우트 정보를 기록하여 요청을 추적

2) 구현 방식

  • Global Filter를 사용하여 게이트웨이를 거치는 모든 요청을 전역적으로 처리
@Component
public class LoggingFilter implements GlobalFilter, Ordered {

	@Override
	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                 ...
		return chain.filter(exchange);
	}
}

개선의 여지

아키텍처 개선

1) 수평 확장 + 로드밸런싱

  • Gateway를 여러 인스턴스로 확장하여 부하 분산 (쿠버네티스나 AWS ELB)

2) 캐싱

  • Gateway의 응답 데이터를 캐싱하여 자주 요청되는 데이터를 저장한다면 불필요한 트래픽을 줄일 수 있을 것

3) 비동기 처리

  • Gateway에서도 Kafka를 이용한 비동기처리를 한다면, 일부 요청이 처리될때 블로킹 되지않고 처리가 가능할 것

로깅

1) Logstash 사용

  • 실시간으로 수집된 로그를 Kibana를 통해 시각화하여 즉시 모니터링 (서버에 접속안해도 됨!!)
  • 검색 및 필터링하여 빠르게 검색 가능
  • 특정 패턴을 기반으로 자동으로 알림 설정 가능