본문 바로가기
💻 개발/인프라

11/23 - TIL : Load Balancer와 API Gateway의 차이

by 컴쏘 2024. 11. 23.

 

Spring Cloud와 관련해서 공부를 하던 도중 Load Balancer와 API Gateway의 차이에 대해 알아보면 좋을 것 같아서 이에 대해 알아보고자 한다. 

 

두 가지는 공통적으로 요청이 들어오면 분배하는 느낌이지만, 사실 차이점은 있다. 

 

간단하게 요약을 해보자면, Load Balancer여러 서버 간의 트래픽을 균등하게 분산시켜 시스템의 안정성을 유지한다. 하지만, API 게이트웨이클라이언트의 요청을 적절한 내부 서비스로 라우팅을 하는 역할이다. 

Load Balancer

우선 로드밸런서는 네트워크 트래픽을 여러 서버에 균등하게 분산시켜, 시스템의 부하를 관리한다. 이를 통해 서버 과부하를 방지하고, 서비스의 가용성과 성능을 향상시킨다. 

 

로드 밸런서의 주요 기능은 다음과 같다. 

  • 트래픽 분산 : 클라이언트 요청을 여러 서버에 균등하게 분배하여 특정 서버에 과부하가 걸리는 것을 방지 
  • 고가용성 : 서버 중 하나에 장애가 발생해도 다른 서버가 요청을 처리할 수 있도록 보장 (이를 위해 주기적인 서버 상태를 확인하는 health check 가 필요하다.)
  • 스케일링 : 서버를 동적으로 추가하거나 제거하여 수요에 따라 시스템을 확장하거나 축소할 수 있다. 
  • 성능 최적화 : 로드 밸런서는 요청을 가장 적합한 서버로 라우팅하여 응답 속도를 최적화한다. 

이 외에도 네트워크 계층의 L4 로드밸런서(IP 주소, 포트번호, 프로토콜 기반의 라우팅), 애플리케이션 계층의 L7 로드밸런서(URL, HTTP 헤더, 클라이언트 요청 기반의 라우팅)로 나누거나, 하드웨어 LB, 소프트웨어 LB로 나누거나 하는 등도 있다. 

 

API Gateway 

API Gateway는 이름에서도 알 수 있듯이, API 요청을 중앙에서 관리하고 라우팅한다. 

 

API Gateway의 주요 기능은 다음과 같다. 

  • 인증/인가 
    • API 토큰 발급 : 클라이언트가 API에 요청을 보낼 때, 먼저 API Gateway를 거치게 된다. 그리고, API Gateway는 클라이언트가 누구인지 확인하기 위한 뒷단 인증 서버와 통신하여 인증 과정을 수행한다. 그리고, 인증이 완료되면 API Gateway는 토큰을 생성하고 발급해준다. 
    • 엔드포인트별 API 호출 인증 : 클라이언트가 발급 받은 token으로 API를 호출하는데, 이때 API Gateway가 토큰을 검증한다. 그리고 API 호출에 대한 승인을 결정한다. 
  • API 라우팅 
    • API 서버로의 로드밸런싱 : API Gateway는 기본적으로 로드 밸런싱 기능을 제공한다. 
    • 클라이언트 별 엔드포인트 제공 : 각 클라이언트 별로 노출되는 API가 다를 수도 있다. 이를 위해 API Gateway는 클라이언트별로 특정 API를 선택적으로 노출하고 제공할 수 있도록 해준다. (ex. /api/users, /api/admin, /api/shops ... )
    • 메시지 또는 헤더 기반 라우팅 : API Gateway는 HTTP 요청의 메시지 바디나 헤더 정보를 기반으로 적합한 백엔드 서비스로 요청을 라우팅할 수 있다. 
  • 공통 로직 처리
    •  메시지 포맷 변환, 프로토콜 변환 등... 
  • 로깅 및 미터링 
    • API 호출 로깅 등... 

 

평소에 Load Balancer나 API Gateway를 접하고 다뤄보면서 느꼈던 것은 일반적인 Load Balancer는 L4 형태의 Load Balancer가 많은 것 같고,  API Gateway는 약간 L7의 Load Balancer 같다(ex. Nginx)는 느낌이 많이 들었다. 

 

이번에 이렇게 정리해보면서 차이를 정리할 수 있었던 것 같다.