의사 결정 흐름

1. Gateway에서 인증, 인가를 진행하지 않음.

책임 분리:

클라이언트로부터의 요청을 적절한 서비스로 라우팅을 하는 것이 주된 역할.

경량화:

인증, 인가를 Gateway에서 진행하게 되면, 모든 요청에 대해 복잡한 검증 작업을 수행해야 하므로, Gateway가 병목지점이 될 수 있음. 또한, 복잡도가 증가하고 성능 저하가 발생할 가능성이 높아짐.

따라서 위와 같은 이유로 인증, 인가를 외부 서비스, User & Auth Service로 위임.

image.png

⬆️목차로 돌아가기

2. User와 Auth 모듈 분리

책임 분리:

마찬가지로 User와 Auth모듈의 목적이 다르기 때문에 책임 분리를 할 필요가 있었음.

리소스에 대한 요청 수가 다름:

또한, 사용자에 대한 정보를 조회하는 요청 수 보다 인증 정보를 요청하는 수가 훨씬 많음.

이에 따라 인스턴스의 수, 사용하는 DB의 종류 등이 차이가 있으므로, 확장성을 위해 User와 Auth 모듈 분리. Auth에만 JWT의존성을 추가하여 토큰 발급 및 관리의 역할만을 부여.

image.png

⬆️목차로 돌아가기

3. Gateway에서 Redis 조회

추가 네트워크 통신:

매번 API 요청마다 Gateway에서 Auth 서비스로 인증 및 인가를 확인하기 위해 네트워크 요청이 발생하므로, 불필요한 통신 오버헤드가 발생할 수 있음.