✅ API Gateway란?
우선 Gateway라는 의미를 먼저 알아보자.
Gateway는 네트워크 상에서 다른 네트워크로 들어가는 입구 역할을 하는 지점을 의미한다.
그럼 API Gateway의 뜻은 뭘까?
API Gateway는 클라이언트(웹, 모바일 등)가 백엔드 API 서버에 접근하기 전에 거쳐가는 입구 역할을 하는 서버를 의미한다.
이 API Gateway의 의미는 그림으로 보면 조금 더 이해가 쉽다.
[API Gateway가 없을 때 통신하는 방식]
[API Gateway 있을 때 통신하는 방식]
✅ API Gateway를 사용하는 이유
API Gateway를 사용하는 이유를 찾아보면 여러가지가 있지만, 그 중에서 대표적인 이유는 크게 2가지이다.
- 라우팅 (Routing) : 클라이언트 요청을 적절한 서비스로 전달하기 위해 사용
지금까지 구성한 프로젝트를 보면 클라이언트가 각 서비스에 통신을 하려면, 각 서비스의 서로 다른 주소를 전부 알고 있어야 한다.
하지만 API Gateway를 사용하면 클라이언트가 각 서비스에 통신을 해야 할 때, API Gateway 주소 하나로만 통신하면 된다.
- 공통 로직 처리 : 인증, 로깅과 같이 여러 서비스에서 공통으로 사용하는 횡단 관심사 로직을 한 곳에서 처리
예를 들어, 각 서비스에 클라이언트 요청을 검증하기 위한 JWT 인증 로직이 각각 중복되어 있다고 해보자. 이 경우, 인증 로직을 일부 수정해야 한다면 모든 서비스 코드를 일일이 변경해야 하는 불편이 발생한다.
그래서 API Gateway를 활용하면, 아래 그림과 같이 각 서비스에 중복된 코드를 넣을 필요 없이 공통 로직을 API Gateway에서 일괄적으로 처리하도록 구성할 수 있다.
✅ API Gateway를 구현할 때 많이 사용하는 툴
API Gateway를 구현할 때 활용할 수 있는 툴은 굉장히 많다. 현업에서는 대표적으로 크게 2가지를 많이 사용한다.
- Spring Cloud Gateway : 프레임워크를 기반으로 직접 구현해야 하는 API Gateway 서버
- AWS API Gateway : AWS에서 자체적으로 제공하는 API Gateway 서버
이 강의에서는 Spring Cloud Gateway를 활용해서 API Gateway를 구현해볼 예정이다.