본문으로 이동
토스는 Gateway 이렇게 씁니다
문서

토스는 Gateway 이렇게 씁니다

최준우 · 토스 · 토스 기술 블로그

원본 보기

소개

더 안전하고 안정적인 서비스 운영을 위해서 ‘gateway’를 어떻게 사용해야 할까요? 토스의 수많은 마이크로서비스 로직을 공통화하기 위한 gateway 운영 방법에 대해 소개합니다.

AI 핵심 요약

마이크로서비스가 늘면서 각 서비스에 공통 로직을 중복 구현하고 배포하기 어려워지자, 토스는 Spring Cloud Gateway를 중앙 제어 지점으로 활용했습니다. Gateway는 Route의 Predicate와 Filter를 바탕으로 요청을 라우팅하고, 입력값 정제와 Passport 전파, 종단간 암호화 복호화 및 인증·인가를 처리합니다. 또한 Istio와 애플리케이션 레이어의 서킷 브레이커를 함께 활용하고, Elasticsearch·Prometheus·Grafana로 요청과 시스템 상태를 관찰합니다. 공통 기능을 Gateway에 모으면 서비스의 부담을 줄이고 보안과 안정성을 일관되게 관리할 수 있지만, 모든 트래픽이 통과하는 만큼 세밀한 모니터링이 중요하다는 점을 보여줍니다.

  • Route는 요청을 구분하는 Predicate와 전·후처리를 수행하는 Filter로 구성한다.
  • Passport처럼 인증된 사용자 정보를 요청 흐름에 실어 보내면 서비스마다 유저 API를 반복 호출하는 일을 줄일 수 있다.
  • Gateway에서 입력값 정제와 요청 서명 검증을 수행해 악성 입력, 재전송 공격, 만료된 키 사용을 방어할 수 있다.
  • 서킷 브레이커는 장애 전파를 막으며, Istio의 호스트 단위 설정과 애플리케이션의 Route·기능 단위 설정을 상황에 맞게 선택한다.
  • Gateway는 모든 요청이 지나는 만큼 로그·메트릭·트레이싱을 갖추고 Route와 API 경로별로 관찰해야 한다.