BE/Spring

[Spring Cloud Gateway] MSA를 향해 가는 API Gateway 도입기 - 3

YoungSooSoo 2023. 6. 7. 01:02

이전 글에서는 Spring Cloud Gateway를 사용하여 API Gateway를 구축하고, Restful API를 통해 인증 과정을 완료했습니다. 이번 글에서는 Member Server를 분리하여 로그인, 회원가입, 토큰 발급 등의 기능을 제공하고, 토큰 인증은 API Gateway를 통해 처리하는 방식을 설명하겠습니다.


아래의 그림으로 설명하면 다음과 같습니다:

  1. Client는 Member Server로 API 호출을 하지만, API Gateway가 인증 과정 없이 로그인 화면을 출력합니다. 이는 API Gateway가 클라이언트의 요청을 가로채고 인증 관련 작업을 처리하기 위함입니다.
  2. 클라이언트가 로그인 또는 회원가입 요청을 보내면, Member Server에서 해당 요청을 처리합니다. Member Server는 회원 정보를 관리하고, 토큰을 발급합니다.
  3. 로그인 또는 회원가입이 성공하면, Member Server는 API Gateway에게 토큰을 전달합니다.
  4. API Gateway는 전달받은 토큰을 클라이언트에게 전송합니다. 이 때, 토큰은 쿠키를 통해 전달될 수 있습니다.
  5. 이후 클라이언트의 모든 요청은 API Gateway를 통해 전달되며, API Gateway는 토큰 인증 과정을 거칩니다. 토큰의 유효성을 확인하고, 요청을 Member Server로 라우팅합니다.
  6. Member Server는 API Gateway로부터 전달받은 토큰을 검증하고, 해당 요청에 대한 처리를 진행합니다.

이러한 구조를 통해 Member Server와 API Gateway를 분리하여 개발할 수 있습니다. API Gateway는 인증과 관련된 작업을 처리하고, Member Server는 회원 관리와 관련된 기능을 수행합니다. 또한, 토큰은 쿠키를 통해 전달되어 사용자의 세션을 유지하면서 토큰 인증 과정을 거칠 수 있습니다.

 

이 방식을 통해 깔끔하게 마이크로 서비스 아키텍처를 구현할 수 있고, 각 서비스의 역할과 책임이 명확히 분리되어 개발 및 유지보수가 용이해집니다. 또한, 보안과 확장성도 고려된 구조입니다.

 

다음 글에서는 채팅 서비스를 개발하는 과정을 진행하려고 합니다.