토스는 Gateway 이렇게 씁니다
toss.tech
최근에 토스 Tech 블로그에 토스가 Gateway 를 어떻게 구현하고 활용하는지 간략하게 설명한 글이 올라왔는데요, 개인적으로 인상깊게 본 내용인지라 공유해봅니다.
Gateway 는 마이크로 서비스 아키텍쳐가 유행을 타기 시작하면서 사용된 패턴인데요,
라우팅 및 프로토콜 변환을 담당하는 중개자 역할을 수행하는 서버를 두는 형태 입니다.
이를통해 각 마이크로 서비스마다 공통적으로 수행해야하는 로직을 Gateway 에서 통합해 처리할 수 있는데요,
토스에서는 다음과 같은 공통 로직 처리를 Gateway 에서 수행하고 있습니다.
📌 Sanitize
올바르지 않은 요청이 들어올 경우 이를 지우거나 올바른 값으로 바꿔서 서비스로 전달합니다.
📌 유저 Passport
인증된 사용자 기기 정보와 유저 정보를 담은 토큰을 발급하여 전달함으로써 각 서비스는 유저 정보를 조회할 필요 없이 유저에 대한 정보를 사용할 수 있습니다.
📌 종단간 암호화
앱에서 암호화 키를 사용하여 요청 바디를 암호화하고 Gateway 에서 이를 복호화하여 서비스에 전달함으로써 패킷 분석의 허들을 높여 안전하게 정보를 전달하도록 합니다.
📌 Dynamic Security
각 요청이 실제로 위변조 되지 않은 토스 앱에서 만들어진 요청인지 검증합니다.
아주 짧은 유효기간을 가진 안전한 키 값과 변조되지 않은 앱 정보를 활용하여 각 요청을 서명하고 이를 Gateway 에서 검증합니다.
검증 과정에서 의심스러운 요청이 발견되면 계정을 비활성화하여 사용자 계정이 보호되도록 조치합니다.
📌 인증서를 이용한 인증 / 인가
Client 인증서의 CA 유효성을 확인하고 인증서 정보중 X.509 extensions 의 Subject Alternative Name 을 활용하여 사용자 정보를 얻어 인증 / 인가 및 Auditing 처리를 수행합니다.
📌 Circuit breaker
마이크로 서비스 아키텍처 패턴은 많은 서비스들이 커미줄처럼 서로 상호작용을 하는 구조이기 때문에 특정 서비스의 응답 지연이 발생하면 해당 서비스를 의존하는 수많은 서비스들도 응답지연이 발생하게 되며 이는 곧 모든 시스템이 먹통이 되는 상황을 초래합니다.
이를 방지하기 위해 응답 지연을 유발하는 서비스가 있다면 요청을 더 이상 보내지 않고 빠르게 Fail Over 처리 하여 이슈가 있는 서비스 회복 및 응답 지연이 전체 서비스로 확장되지 않도록 합니다.
마이크로 서비스 아키텍처에서 Gateway 를 구축하시려는 분이 있다면 좋은 레퍼런스가 되지 않을까 싶습니다.
📚 원문
https://toss.tech/article/slash23-server
📚 함께보면 좋은 글
📈 API Gateway Throttling 구현: https://careerly.co.kr/comments/84924?utm_campaign=self-share
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 10월 17일 오후 1:28
와 어렵겠네요
윈드서프는 2021년 미국 캘리포니아주에서 창립된 AI코딩 스타트업이다. 윈드서프는 파이선·C 등 프로그래밍 언어가 아니라 자연어로 코드를 짜는 이른바 ‘바이브 코딩’ 프로그램을 제공한다. 하루 활성이용자는 50만 명이 넘는다.
... 더 보기상
... 더 보기모
... 더 보기