로드벨런서 vs API 게이트웨이

반응형

개발을 하다 보면 헷갈리는 용어를 자주 마주하게 됩니다. 대표적인 예가 바로 로드 밸런서와 API 게이트웨이입니다. 이름만 보면 서로 전혀 다른 역할을 하는 것처럼 느껴집니다. 하지만 실제로 어떤 일을 하는지 떠올려 보면, 둘 다 "요청을 전달한다"는 공통점 때문에 비슷한 개념처럼 느껴지기도 합니다. 이러한 혼란은 개념을 충분히 분리해서 이해하지 못했을 때 자연스럽게 발생합니다. 이번 글에서는 로드 밸런서와 API 게이트웨이의 차이점과 공통점을 명확하게 정리해보겠습니다.

그렇다면, 이 두 개념이 왜 혼동되는지 그 이유부터 살펴보겠습니다.

두 기술 모두 클라이언트의 요청을 받아 다른 서버로 전달한다는 공통점을 가지고 있습니다.
이 과정에서 "중간에서 요청을 처리한다"는 점 때문에 두 개념이 비슷하게 느껴질 수 있습니다.
예를 들어, 클라이언트가 요청을 보내면 로드 밸런서든 API 게이트웨이든 직접 요청을 처리하는 것이 아니라, 다른 서버로 전달합니다.
즉, 두 기술 모두 시스템의 앞단에서 동작하며, 요청을 적절한 위치로 보내는 역할을 수행합니다.
또한, 두 기술 모두 트래픽을 분산시키는 것처럼 보일 수 있습니다.
로드 밸런서는 실제로 여러 서버로 요청을 분산시키고, API 게이트웨이 역시 여러 서비스로 요청을 라우팅하기 때문입니다.
아래 그림을 보면 HTTPS 요청이 로드 밸런서를 통해 여러 서버로 분산되어 전달되는 것을 확인할 수 있습니다.

위 그림을 커다란 이미지로 다시 그려보면 다음과 같습니다.

그렇다면 무엇이 다를까요? 바로 사각형으로 그린 부분과 무엇이 분산이 되어지는지가 다릅니다. 

로드 벨런서

로드 밸런서는 클라이언트로부터 들어오는 요청을 여러 서버로 분산시켜, 특정 서버에 트래픽이 몰리지 않도록 하는 역할을 수행합니다.

사용자가 증가하거나 트래픽이 급증하는 상황에서는 하나의 서버만으로 모든 요청을 처리하기 어렵습니다.
이때 로드 밸런서를 앞단에 두면 요청을 여러 서버로 나누어 처리할 수 있기 때문에, 전체 시스템의 안정성과 처리량을 향상시킬 수 있습니다.

그렇다면 로드 밸런서가 왜 필요할까요?

서버를 여러 대로 확장하더라도, 클라이언트는 어떤 서버로 요청을 보내야 할지 알 수 없습니다.
또한 사용자 입장에서 모든 서버의 주소를 기억하는 것도 비효율적입니다.

이러한 상황에서는 결국 특정 서버로만 요청이 집중될 가능성이 높아지고, 서버를 여러 대로 운영하는 의미가 사라지게 됩니다.

로드 밸런서는 이러한 문제를 해결하기 위해 존재합니다. 클라이언트는 하나의 진입점만 알고 있으면 되고, 로드 밸런서는 내부적으로 여러 서버에 요청을 균등하게 분산시켜 줍니다. 대표적인 예로는 Nginx가 있습니다.

 API 게이트 웨이

그렇다면, API 게이트 웨이는 어떨까요? 

API 게이트웨이는 클라이언트의 요청을 받아 적절한 서비스로 전달하는 역할을 수행합니다.
하지만 단순히 요청을 전달하는 것에 그치지 않고, 요청을 처리하는 과정에서 다양한 로직을 함께 수행합니다.

예를 들어, 클라이언트의 요청이 들어오면 API 게이트웨이는 먼저 인증 및 인가를 확인하고, 요청의 유효성을 검증합니다.
이후 요청을 적절한 서비스로 라우팅하며, 필요에 따라 요청이나 응답을 변환하기도 합니다.

그렇다면 API 게이트웨이는 왜 필요할까요?

마이크로서비스 아키텍처에서는 여러 개의 서비스가 존재하게 됩니다. 이때 클라이언트가 각각의 서비스에 직접 요청을 보내게 되면,
서비스의 주소를 모두 알아야 하고, 인증이나 로깅과 같은 공통 기능도 각각 처리해야 하는 문제가 발생합니다.

API 게이트웨이는 이러한 문제를 해결하기 위해 존재합니다. 클라이언트는 하나의 진입점만 호출하면 되고, API 게이트웨이가 내부적으로 적절한 서비스로 요청을 전달합니다. 또한 인증, 로깅, 유량 제어와 같은 공통 기능을 중앙에서 관리할 수 있습니다.
대표적으로는 Spring Cloud GatewayKong 등이 있습니다.

결론

간단하게 로드 밸런서와 API 게이트웨이의 공통점과 차이점에 대해 살펴보았습니다. 제가 생각하는 두 기술의 가장 큰 차이는 분산과 관리입니다. 로드 밸런서는 여러 서버를 하나의 서버처럼 사용할 수 있도록, 앞단에서 트래픽을 통합하고 이를 각 서버에 균등하게 분산시키는 역할을 합니다. 반면, API 게이트웨이는 주로 MSA 환경에서 사용되며, 여러 서비스(도메인)를 하나의 진입점으로 통합하고 인증, 라우팅, 로깅과 같은 기능을 통해 이를 관리하는 역할을 수행합니다. 결국 두 기술은 모두 요청을 전달하는 중간 계층이라는 공통점을 가지지만, 로드 밸런서는 트래픽 분산, API 게이트웨이는 요청 관리와 제어에 초점을 둔다는 차이가 있습니다. 멀리서 보면 비슷해 보이지만, 역할과 책임을 기준으로 보면 명확하게 구분되는 기술이라고 볼 수 있습니다.

 

출처
https://blog.bytebytego.com/p/ep208-load-balancer-vs-api-gateway

반응형

댓글

Designed by JB FACTORY