-
토스 SLASH 23 - 토스는 Gateway 이렇게 씁니다.세미나, 영상 요약정리 2023. 11. 18. 00:01
https://www.youtube.com/watch?v=Zs3jVelp0L8
발표를 요약해보고자 합니다.
Gateway란?
라우팅 및 프로토콜 변환을 담당하며 마이크로 서비스의 중개자 역할을 수행합니다.
Client와 독립적으로 확장할 수 있고 보안, 모니터링을 위한 단일지점을 제공합니다.
예를 들어 게이트웨이가 없는 경우 인증을 위해 각서버 개발자는 인증 서버의 업데이트 사항을 추적해야 합니다.
실수로 누락된다면 장애로 이어질 수 있습니다.
게이트웨이가 있는 경우는 유저의 요청을 받고 필요한 인증 등의 공통 로직을 통합하여 처리하고 업스트림 서버로 넘겨줍니다.
BFF(Backend For Frontend)
Gateway를 2개로 구성함에 따라 필요한 관심사를 분리하고 Client에 맞는 전략을 가져갈 수 있습니다.
Spring Cloud Gateway
Gateway를 위해 Spring Cloud Gateway를 사용합니다.
Spring Cloud Gateway는 Spring Webflux를 사용하며 내부적으로 Reactor-netty를 비동기가 지원됩니다.
코루틴을 적극적으로 활용하고 있습니다.
공통 로직의 처리
requeset 처리 - 올바르지 않은 요청을 지우거나 올바른 값으로 교환
- Trace Id를 생성하여 전파 MDC 컨텍스트에 저장되고 로그를 남길 때 저장된다.
- 예를 들어 사용자 동의 여부가 필요하다면 gateway에서 약관동의api를 호출하여 header에 넣어줍니다.
유저정보 - id로 유저정보를 호출해서 사용하고 있었다.
하지만 트랜잭션내 불필요한 중복 호출로 이어지게 되었고, 넷플릭스의 passport라는 아이디어를 차용하였습니다.
gateway에서는 인증서버에서 key를 넘겨 passport를 만들어내고, passport는 사용자의 기기정보와 유저정보가 담겨있게 됩니다.
FDS
FDS가 의심스러운 정보가 감지되면 아를 gateway로 알려주고 특정 유저 IP 디바이스가 특정 API를 사용하지 못하도록 정교한 차단을 수행합니다.
서비스 안정화 - Circuit Braker
내부시스템에도 차단하는것도 중요하지만 Gateway에서부터 막아주는 것이 좋습니다.
모니터링
method, uri, 상태코드를 es에 남기고 있습니다.
Istio를 활용하기 때문에 Sidecar인 Envoy로 요청에 대한 풍부한 정보를 제공받을 수 있습니다.
메트릭은 프로메테우스가 수집하여 Grafana를 통해 시각화하고 Slack으로 알림을 보냅니다.
이상감지 - Z Score -> gateway로 발생하는 에러를 Z-Score로 감지하며 중요한 지표는 slack 알림으로 받습니다.
트레이싱 - pinpoint으로 트랜잭션 내 트레픽이 어떻게 흐르는지 어디서 문제가 발생했는지 확인할 수 있습니다.
'세미나, 영상 요약정리' 카테고리의 다른 글
SLASH23 - 새로운 은행을 위한 Modern 대외 연계 시스템 구축기 (0) 2024.02.16 대규모 트랜잭션을 처리하는 배민 주문시스템 규모에 따른 진화 (0) 2023.12.31 신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법 (1) 2023.10.23 폭증하는 카카오톡 트래픽에 대처하는 방법 - 신성열 (0) 2023.10.22 스프링과 함께 더 나은 개발자 되기 - 이일민(토비) (0) 2023.10.18