본문 바로가기
IT-Network

API Gateway 란?

by lindsay.hyun 2023. 4. 18.
반응형

API Gateway 란?

API 게이트웨이는 백엔드 서비스와 클라이언트 사이에 있는 소프트웨어 계층으로, 클라이언트가 해당 서비스와 상호 작용할 수 있는 인터페이스를 제공합니다. 클라이언트에서 들어오는 요청을 적절한 백엔드 서비스로 라우팅하고 서비스에서 다시 클라이언트로 응답을 반환하는 리버스 프록시 역할을 합니다.

API Gateway는 다음과 같은 몇 가지 주요 기능을 제공합니다.

API 관리: API 게이트웨이를 사용하면 백엔드 서비스를 외부 클라이언트에 대한 API로 관리하고 노출할 수 있습니다. 여기에는 API 버전 관리, API 키 관리, 속도 제한 및 요청/응답 변환과 같은 기능이 포함됩니다.

보안: API Gateway는 API에 대한 보안 정책 및 액세스 제어를 시행하기 위한 중심점을 제공합니다. 여기에는 OAuth 2.0 인증, SSL/TLS 암호화 및 외부 ID 공급자와의 통합과 같은 기능이 포함됩니다.

확장성: API Gateway는 대량의 수신 요청을 처리하고 수요에 맞게 자동으로 확장할 수 있습니다. 또한 백엔드 서비스의 성능을 최적화하기 위한 캐싱 및 로드 밸런싱 기능을 제공합니다.

분석: API Gateway는 요청 수, 응답 시간 및 오류율을 포함하여 API 사용에 대한 자세한 분석 및 메트릭을 제공할 수 있습니다. 이를 통해 API의 상태와 성능을 모니터링하고 이를 최적화하는 방법에 대해 정보에 입각한 결정을 내릴 수 있습니다.

API 게이트웨이는 마이크로서비스 아키텍처의 핵심 구성 요소이며 컨테이너 오케스트레이션 플랫폼, 서비스 메시, 서버리스 컴퓨팅 플랫폼과 같은 다른 서비스와 함께 사용되어 현대적이고 확장 가능하며 탄력적인 애플리케이션을 구축하는 데 자주 사용됩니다.

 

 

LB와 API Gateway의 차이점

API Gateway와 Load Balancer는 클라우드 아키텍처에서 서로 다른 용도로 사용되는 서로 다른 두 가지 서비스입니다.

로드 밸런서는 애플리케이션의 성능, 안정성 및 가용성을 향상시키기 위해 여러 서버에 수신 네트워크 트래픽을 분산시키는 서비스입니다. 로드 밸런서는 라운드 로빈, 최소 연결 및 IP 해시와 같은 다양한 알고리즘을 기반으로 여러 서버에서 로드 균형을 조정할 수 있습니다. 로드 밸런서는 주로 들어오는 트래픽이 여러 서버에 고르게 분산되어 서비스 가용성을 향상시키는 데 사용됩니다.

반면 API 게이트웨이는 클라이언트와 백엔드 서비스 사이에 위치하여 클라이언트가 해당 서비스와 상호 작용할 수 있는 인터페이스를 제공하는 서비스입니다. API Gateway는 API 관리, 보안, 확장성 및 분석을 비롯한 몇 가지 주요 기능을 제공합니다. 클라이언트에서 들어오는 요청을 적절한 백엔드 서비스로 라우팅하고 서비스에서 다시 클라이언트로 응답을 반환하는 리버스 프록시 역할을 합니다.

요약하면 Load Balancer는 들어오는 네트워크 트래픽을 여러 서버에 분산시켜 애플리케이션의 성능, 안정성 및 가용성을 개선하는 데 주로 사용됩니다. 반면 API 게이트웨이는 백엔드 서비스 위에 추상화 계층을 제공하여 API 관리, 보안, 확장성 및 분석과 같은 기능을 제공하고 클라이언트가 일관되고 안정적인 방식으로 이러한 서비스와 상호 작용할 수 있도록 합니다. Load Balancer는 백엔드 서비스의 확장성과 가용성을 개선하기 위해 API 게이트웨이와 함께 사용할 수 있지만 클라우드 아키텍처에서 다른 용도로 사용됩니다.

 

Python에서 API Gateway 구성 방법 

API 게이트웨이를 생성하는 데 사용할 수 있는 Python에서 사용할 수 있는 여러 라이브러리 및 프레임워크가 있습니다. 인기 있는 옵션 중 하나는 RESTful API 구축을 위한 간단하고 유연한 플랫폼을 제공하는 Flask 마이크로 웹 프레임워크입니다. Flask를 사용하여 API 게이트웨이를 생성하는 기본 단계는 다음과 같습니다.

 

1. Flask 및 기타 필수 항목을 설치합니다.

pip install Flask

2. Flask 경로를 사용하여 API 게이트웨이의 엔드포인트를 선언합니다.

from flask import Flask

app = Flask(__name__)

@app.route('/service1')
def service1():
    # call service 1 and return its response
    pass

@app.route('/service2')
def service2():
    # call service 2 and return its response
    pass

if __name__ == '__main__':
    app.run()

3. 경로 기능 내에서 백엔드 서비스를 호출하는 로직을 구현합니다.

4. API Gateway 및 백엔드 서비스를 보호하기 위해 필요한 보안 및 인증 조치를 추가합니다.

5. API Gateway를 서버 또는 클라우드 플랫폼에 배포합니다.

6. API Gateway를 모니터링하고 관리하여 제대로 작동하고 클라이언트의 요구 사항을 충족하는지 확인합니다.

강력하고 확장 가능한 API 게이트웨이를 생성하는 것은 복잡하고 시간이 많이 소요될 수 있으며 컨테이너 오케스트레이션 플랫폼, 서비스 메시 및 API 관리 플랫폼과 같은 추가 도구 및 서비스가 필요할 수 있다는 점에 유의해야 합니다.

반응형

댓글