API Gateway 사용 사례
1. API Gateway를 사용하여 REST API 생성
API Gateway REST API는 리소스와 메서드로 구성된다. 리소스란 앱이 리소스 경로를 통해 액세스할 수 있는 논리적 엔터티이다. 메서드는 API 사용자가 제출한 REST API 요청 및 사용자에게 반환되는 응답에 해당한다.
예를 들어 /incomes
는 앱 사용자의 소득을 나타내는 리소스의 경로가 될 수 있다. 리소스는 GET, POST, PUT, PATCH, DELETE 등 적절한 HTTP 동사로 정의된 작업을 하나 이상 가질 수 있다. 리소스 경로와 작업의 조합으로 API의 메서드를 식별한다. 예를 들어 POST /incomes
메서드는 호출자가 획득한 소득을 추가하고 GET /expenses
메서드는 호출자로 인해 발생한 것으로 보고된 지출을 쿼리할 수 있다.
앱은 백엔드에서 요청된 데이터를 저장하고 가져오는 위치를 알 필요가 없다. API Gateway REST API에서 프런트엔드는 메서드 요청 및 메서드 응답으로 캡슐화된다. API는 integration requests(통합 요청) 및 integration responses(통합 응답)을 이용해 백엔드와 통신한다.
예를 들어 DynamoDB가 백엔드일 때, API 개발자는 수신되는 메서드 요청을 선택한 백엔드로 전달하도록 통합 요청을 설정한다. 이 설정에는 적절한 DynamoDB 작업, 필요한 IAM 역할 및 정책, 필요한 입력 데이터 변환의 사양이 포함된다. 백엔드는 API Gateway에 통합 응답으로서 결과를 반환한다.
통합 응답을 클라이언트에 대한 (해당 HTTP 상태 코드의) 적절한 메서드 응답으로 라우팅하려면, 통합에서 메서드로 필요한 응답 파라미터를 매핑하도록 통합 응답을 구성하면 된다. 그런 다음, 필요에 따라 백엔드의 출력 데이터 형식을 프런트엔드의 형식으로 변환한다. API Gateway를 사용하면 페이로드의 스키마나 모델을 정의하여 본문 매핑 템플릿을 손쉽게 설정할 수 있다.
API Gateway는 다음과 같은 REST API 관리 기능을 제공한다.
-
OpenAPI에 대한 API Gateway 확장을 사용하여 SDK 생성 및 API 문서 생성 지원
-
HTTP 조절 요청
2. API Gateway를 사용하여 HTTP API 생성
HTTP API를 사용하면 REST API보다 지연 시간이 짧고 비용이 저렴한 RESTful API를 생성할 수 있다.
HTTP API를 사용하여 AWS Lambda 함수 또는 공개 라우팅이 가능한 HTTP 엔드포인트에 요청을 전송할 수 있다.
예를 들어 백엔드의 Lambda 함수와 통합되는 HTTP API를 생성할 수 있다. 클라이언트가 API를 호출하면 API Gateway는 Lambda 함수에 요청을 전송하고 함수의 응답을 클라이언트에 반환한다.
HTTP API는 OpenID Connect 및 OAuth 2.0 권한 부여를 지원한다. 여기에서는 CORS(Cross-Origin Resource Sharing) 및 자동 배포가 기본적으로 지원된다.
3. API 게이트웨이를 사용하여 WebSocket API 생성
WebSocket API에서 클라이언트와 서버는 언제든 서로 메시지를 보낼 수 있다. 백엔드 서버는 복잡한 폴링 메커니즘을 구현할 필요 없이 연결된 사용자 및 장치로 데이터를 쉽게 푸시할 수 있다.
예를 들어, API Gateway WebSocket API 및 AWS Lambda를 사용하여 서버리스 애플리케이션을 구축하면 채팅룸의 개별 사용자 또는 사용자 그룹과 메시지를 주고 받을 수 있다. 또는 메시지 내용을 기반으로 AWS Lambda, Amazon Kinesis 또는 HTTP 엔드포인트 같은 백엔드 서비스를 호출할 수 있다.
API Gateway WebSocket API를 사용하면 연결이나 대용량 데이터 교환을 관리하기 위해 서버를 프로비저닝하거나 관리하지 않고도 안전한 실시간 통신 애플리케이션을 구축할 수 있다. 목표 사용 사례에는 다음과 같은 실시간 애플리케이션이 포함된다.
-
채팅 애플리케이션
-
주식 시세 표시기와 같은 실시간 대시 보드
-
실시간 경고 및 알림
API Gateway는 다음과 같은 WebSocket API 관리 기능을 제공한다.
-
연결 및 메시지 모니터링 및 제한
-
AWS X-Ray를 사용하여 API를 통해 백엔드 서비스로 이동하는 메시지 추적
-
HTTP/HTTPS 엔드포인트와 쉽게 통합
4. API Gateway를 누가 사용하는가?
API Gateway를 사용하는 개발자는 API 개발자와 앱 개발자, 두 가지 유형으로 나뉜다.
API 개발자는 API를 생성하고 배포하여 API Gateway에서 필요한 기능이 구현되도록 한다. API 개발자는 AWS 계정 내에서 API를 소유한 IAM 사용자여야 한다.
앱 개발자는 API Gateway에서 API 개발자가 생성한 WebSocket 또는 REST API를 호출하여 AWS 서비스를 호출하기에 효과적인 애플리케이션을 구축한다.
앱 개발자는 API 개발자의 고객이다. API에 IAM 권한이 필요하지 않거나 Amazon Cognito 사용자 풀 자격 증명 연동에서 지원하는 타사 연동 자격 증명 공급자를 통해 사용자 권한 부여를 지원하는 경우, 앱 개발자는 AWS 계정을 보유할 필요가 없다. 이러한 자격 증명 공급자에는 Amazon, Amazon Cognito 사용자 풀, Facebook 및 Google이 포함된다.
1) API Gateway API 생성 및 관리
API 개발자는 apigateway
라는 API 관리를 위한 API Gateway 서비스 구성 요소와 함께 작동하여 API를 생성, 구성 및 배포한다.
API 개발자는 API Gateway 시작하기에 설명된 대로 API Gateway 콘솔을 사용하거나 API 참조을 호출하여 API를 생성하고 관리할 수 있다. 이 API를 호출하는 몇 가지 방법이 있다. 여기에는 AWS Command Line Interface(AWS CLI)를 사용하거나 AWS SDK를 사용하는 것이 포함된다. AWS CloudFormation 템플릿 또는 OpenAPI에 대한 API Gateway 확장 작업(REST API 및 HTTP API의 경우)로 API 생성을 지원할 수도 있다.
연결된 제어 서비스 엔드포인트를 비롯하여 API Gateway를 이용할 수 있는 리전 목록은 Amazon API Gateway 엔드포인트 및 할당량을 참조한다.
2) API Gateway API 호출
앱 개발자는 execute-api
라는 API 실행을 위한 API Gateway 서비스 구성 요소와 함께 작동하여 API Gateway에서 생성 또는 배포된 API를 호출한다. 기본 프로그래밍 엔터티는 생성된 API에 의해 제공된다. 이러한 API를 호출하는 몇 가지 방법이 있다. 자세한 내용은 Amazon API Gateway에서 REST API 호출 및 WebSocket API 호출 단원을 참조한다.