AWS - API Gateway

Neo-Renaissance·2024년 10월 27일
post-thumbnail

API Gateway

API Gateway란 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다.


API란?

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. 애플리케이션이라는 단어는 특정 기능을 가진 모든 소프트웨어를 의미합니다. 인터페이스는 서로 다른 두 애플리케이션이 어떻게 통신할지를 정의한 약속, 즉 "규칙"입니다. 이 규칙을 통해 한 애플리케이션이 다른 애플리케이션에 요청을 보내고, 그에 대한 응답을 받습니다. API 문서는 개발자들이 이 요청과 응답을 어떻게 만들어야 하는지, 즉 규칙과 형식을 쉽게 이해할 수 있도록 정리한 설명서입니다.

즉, API는 두 프로그램이 서로 대화하는 방법을 정해주는 통역사와 같은 역할을 합니다.

API 작동방식


사용자가 웹 브라우저나 앱을 통해 정보를 요청하면 요청이 인터넷을 통해 API로 전달됩니다.
API는 이 요청을 서버로 전달하고, 서버의 응답을 받아 사용자가 이해할 수 있게 돌려줍니다.
서버는 요청을 받아 처리하고 필요한 데이터를 데이터베이스에서 가져옵니다. 그리고 서버의 결과가 API를 통해 다시 사용자에게 전달됩니다. 즉, API는 사용자와 서버를 연결해주는 중간 다리 역할을 합니다. 사용자가 요청을 보내면 서버가 처리한 데이터를 다시 사용자에게 전달해주는 구조입니다.

1. SOAP API

이 API는 단순 객체 접근 프로토콜을 사용합니다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다. 과거에 더 많이 사용되었으며 유연성이 떨어지는 API입니다.

2. RPC API

이 API를 원격 프로시저 호출이라고 합니다. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송합니다.

3. Websocket API

Websocket API는 JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발입니다. WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원합니다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적입니다.

4. REST API

오늘날 웹에서 볼 수 있는 가장 많이 사용되고 유연한 API입니다. 클라이언트가 서버에 요청을 데이터로 전송합니다. 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환합니다.

REST API vs RESTfull api
둘 사이의 큰 차이점은 없지만, RESTful이라는 표현은 REST 원칙을 얼마나 잘 지켰는지를 강조할 때 사용됩니다. 모든 RESTful API가 REST API이지만, 모든 REST API가 RESTful API는 아닐 수 있습니다.


API Gateway

API 게이트웨이는 API와 다양한 백엔드 서비스 사이에 확실히 배치된 가상 통로와 같습니다. 초대 또는 요청을 처리하여 요청/호출 처리에 적합한 스테이션 또는 서비스에 매칭하고 대상 리소스로 다시 보냅니다.

API Gateway의 역할

  • 요청 라우팅 (Request Routing)
    클라이언트의 요청을 적절한 마이크로서비스로 전달합니다. 즉, 어떤 API 요청이 오든지 이 요청을 정확한 서버로 전달해주는 중간 다리 역할을 합니다.

  • 인증 및 권한 부여
    사용자가 인증되지 않았거나 권한이 없는 경우 이를 차단하는 역할을 합니다. 이를 통해 API 서비스가 보다 안전해집니다.

  • 로드 밸런싱 (Load Balancing)
    많은 요청이 한 서버로 몰리는 것을 방지하고 여러 서버에 균등하게 요청을 분배하여 시스템을 안정적으로 유지합니다.

  • 모니터링 및 로깅
    모든 API 요청 및 응답에 대한 로그를 기록하고 모니터링하여 시스템 상태를 파악할 수 있습니다. 문제가 발생했을 때 원인을 쉽게 추적할 수 있습니다.

API Gateway를 사용하는 이유

API Gateway를 사용하는 가장 큰 이유는 복잡한 서비스 아키텍처를 간소화하고 중앙 집중화된 관리를 가능하게 하기 때문입니다. 마이크로서비스 아키텍처에서는 각 서비스가 독립적으로 존재하기 때문에 각 서비스의 엔드포인트가 다 다르고, 이로 인해 관리와 연결이 매우 어려워집니다. 이때 API Gateway를 사용하면, 모든 서비스에 대해 단일 진입점을 제공해 클라이언트는 API Gateway 하나만 바라보고 작업을 수행할 수 있어 보다 편리해집니다.

API Gateway의 장점

  • 단순화된 클라이언트 통신
    클라이언트는 여러 서비스에 개별적으로 접근할 필요 없이 API Gateway를 통해 통합된 접근을 할 수 있습니다.

  • 보안 강화
    보안 관련 로직을 Gateway에서 처리함으로써, 각 서비스는 보안에 대한 부담이 줄어들고 Gateway에서 일괄적으로 인증 및 권한을 관리할 수 있습니다.

  • 유연한 확장성
    Gateway는 트래픽을 여러 서비스로 분산시켜 시스템의 부하를 분산시키고 확장성을 더욱 유연하게 만듭니다.

API Gateway의 사례

AWS API Gateway: AWS에서 제공하는 API Gateway는 마이크로서비스를 RESTful API로 쉽게 제공하고 관리할 수 있게 해줍니다. 이는 서버리스 아키텍처와도 쉽게 통합할 수 있어 인기가 많습니다.

Kong, Nginx: 오픈 소스 기반의 API Gateway 솔루션으로, 빠르고 유연한 설정이 가능합니다. 여러 기업들이 이를 활용해 자신들만의 API 관리 솔루션을 구축하고 있습니다.

API Gateway 사용 시의 주의점

  • 단일 장애점 (Single Point of Failure)
    API Gateway는 모든 트래픽이 통과하는 곳이므로, 문제가 발생하면 전체 시스템이 멈출 수 있습니다. 이를 방지하기 위해 이중화 및 고가용성 구성이 필수적입니다.

  • 복잡도 증가
    Gateway에 여러 기능을 추가하다 보면 아키텍처의 복잡도가 증가할 수 있습니다. 이러한 경우 필요한 기능만 선택적으로 구현하는 것이 중요합니다.

출처
이미지1
이미지2

profile
if (실패) { 다시 도전; } else { 성공; }

0개의 댓글