YoungSoo

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

BE/Spring

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

YoungSooSoo 2023. 5. 24. 23:26

현재 진행 중인 모놀리식 기반의 애플리케이션에서 추가적으로 채팅 서비스를 도입하려고 합니다. 하지만 새로운 서비스를 완성된 서비스에 사용할 때 변경해야할 점이 있어 기존의 모놀리식에서 벗어나 MSA로의 전환을 하려고 합니다.

 

각 마이크로 서비스 사이의 라우팅을 위해 API Gateway가 필요했습니다. 이를 위해 클라이언트로부터 들어오는 요청을 라우팅 해주고 기존의 모놀리식 애플리케이션에서 JWT 토큰을 검증하는 기능을 구현했지만, 토큰을 검증하는 Gateway 애플리케이션을 새로 만들어 아래와 같은 형태로  애플리케이션을 개발하려고 합니다.

 

JWT 토큰의 인증을 위해 Restful API와 메시지 큐 시스템을 사용하는 방법을 고려했습니다.

단순한 요청-응답 방식의 통신이 필요하기에 Restful API 방식을 사용하는 것이 좋다고 생각해 적용하려고 합니다.

 

정리하자면, 현재는 모든 인증/인가 관련 서비스가 기존의 모놀리식 애플리케이션에 있습니다. 모놀리식 애플리케이션을 마이크로 서비스로 나누어 API Gateway 애플리케이션을 따로 나누어 통신하는 식으로 애플리케이션을 개발하려고 합니다.

 

API Gateway를 따로 구성해 애플리케이션을 개발하게 된다면 기존의 모놀리식 애플리케이션의 토큰의 유효성을 검사해주는 기능을 모두 API Gateway에서 진행해주도록 하고 기존의 모놀리식 애플리케이션에서 토큰을 사용할 때 API Gateway를 통해 토큰의 유효성 검사를 진행하는 과정을 거쳐가려고 합니다.

 

따라서 기존의 아키텍처에서 아래 수정 사항을 수정하려고 합니다.

  • 기존 모놀리식 아키텍처에서 기능 확장을 위한 마이크로 서비스 아키텍처로 전환
  • 마이크로 서비스 간의 통신을 위해 API Gateway 도입
  • 기존의 애플리케이션에서 만든 토큰의 유효성을 검사해주는 기능을 API Gateway에서 진행
  • 토큰 생성 및 Member 관련 서비스를 따로 구현하고 API Gateway에서는 토큰 검증 및 인가 서비스를 구현
  • API Gateway에서 모든 요청을 받아 토큰의 유효성을 검사 후 각 서비스로 요청 할당

 

실제 구현하는 글은 다음 글에 이어서 작성하겠습니다.