REST API, HTTP API 및 WebSocket API 비교
REST API(기능이 풍부함), HTTP API(지연 시간과 비용이 낮음) 및 WebSocket API(양방향)의 트레이드오프를 이해하고 적절한 방식을 선택합니다.
REST API, HTTP API 및 WebSocket API 비교은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
API 게이트웨이가 필요한 이유
Amazon API 게이트웨이는 어떤 규모에서든 API를 생성, 게시, 보호하고 모니터링할 수 있는 완전 관리형 서비스입니다. 이 서비스는 백엔드 서비스(Lambda 함수, EC2 인스턴스, HTTP 백엔드 또는 모든 AWS 서비스)의 현관 역할을 합니다. API 게이트웨이는 트래픽 관리, 권한 부여, 스로틀링, 모니터링, API 버전 관리를 처리하므로 백엔드는 API 인프라 문제보다 비즈니스 로직에 집중할 수 있습니다.
REST API: 기능이 풍부한 전통적 API
REST API(기존 API 게이트웨이 제품)는 가장 폭넓은 기능을 제공합니다. 여기에는 매핑 템플릿을 사용한 요청/응답 변환, 메서드별 스로틀링, API 키를 사용하는 사용량 계획, 응답 캐싱, WAF 통합, X-Ray 추적, 리소스 정책, 클라이언트 인증서 상호 TLS가 포함됩니다. REST API는 Lambda, HTTP, AWS 서비스, Mock, Lambda Proxy 등 모든 통합 유형을 지원합니다. 변환, 캐싱 또는 사용량 계획 같은 고급 기능이 필요할 때 REST API를 사용하십시오.
HTTP API: 지연 시간이 짧고 비용이 낮은 대안
HTTP API는 REST API보다 더 단순하고 저렴하며 빠른 대안으로 설계되었습니다. Lambda 프록시와 HTTP 프록시 통합만 지원하며, AWS 서비스 통합과 모의 통합은 지원하지 않습니다. 주요 장점은 REST API보다 최대 70% 낮은 비용, 더 짧은 지연 시간, 기본 제공되는 OIDC 및 OAuth 2.0 JWT 권한 부여 기능(일반적인 인증 시나리오에서는 Lambda 권한 부여자가 필요하지 않음), 자동 배포입니다. 캐싱, 사용량 계획 또는 요청/응답 변환이 필요하지 않다면 HTTP API가 더 나은 선택입니다.
# Create a simple HTTP API
aws apigatewayv2 create-api \
--name 'MyHttpAPI' \
--protocol-type HTTP \
--target 'arn:aws:lambda:us-east-1:123456789012:function:MyLambda'WebSocket API: 양방향 실시간 통신
WebSocket API는 클라이언트와 서버 사이에 지속적인 양방향 연결을 유지합니다. 요청-응답 방식인 HTTP와 달리 WebSocket을 사용하면 클라이언트가 폴링하지 않아도 서버가 언제든 연결된 클라이언트에 메시지를 푸시할 수 있습니다. API 게이트웨이는 WebSocket 연결을 관리하고 경로 표현식에 따라 메시지를 Lambda 함수로 라우팅합니다. 채팅 앱, 실시간 대시보드, 공동 편집, 게임, 주식 시세 표시기 같은 실시간 애플리케이션에는 WebSocket API를 사용하십시오.
WebSocket 경로 및 연결 관리
WebSocket API에는 세 가지 기본 제공 경로가 있습니다. $connect는 클라이언트가 연결을 열 때 트리거되고, $disconnect는 연결이 닫힐 때 트리거되며, $default는 일치하지 않는 메시지를 처리합니다. sendmessage처럼 특정 Lambda 함수에 매핑되는 사용자 지정 경로를 추가할 수도 있습니다. @connections 관리 API를 사용하면 Lambda 함수에서 클라이언트의 연결 ID를 이용해 연결된 클라이언트로 메시지를 보낼 수 있습니다.
# Send a message to a specific WebSocket client from Lambda
import boto3
gw_client = boto3.client(
'apigatewaymanagementapi',
endpoint_url='https://abc123.execute-api.us-east-1.amazonaws.com/prod'
)
def lambda_handler(event, context):
connection_id = event['requestContext']['connectionId']
gw_client.post_to_connection(
Data='{"type": "message", "text": "Hello!"}',
ConnectionId=connection_id
)기능 비교: REST 대 HTTP 대 WebSocket
주요 차이점은 다음과 같습니다.
- REST API: 모든 기능(캐싱, 사용량 계획, 변환, WAF)을 제공하며 비용이 더 높고 모든 통합 유형을 지원합니다.
- HTTP API: Lambda/HTTP 프록시만 지원하고 비용이 70% 저렴하며 JWT 인증이 기본 제공되고 지연 시간이 짧지만 캐싱과 사용량 계획은 지원하지 않습니다.
- WebSocket API: 지속적인 양방향 연결을 제공하고 서버 푸시가 가능하며, 메시지 100만 개당 및 연결 시간 1분당 요금이 부과됩니다.
SAA-C03 시험에서는 다음과 같이 판단하십시오. 실시간 기능이나 고급 기능이 없는 HTTP 관련 질문 → HTTP API. 실시간 푸시 → WebSocket. 복잡한 API 기능 → REST API.
스테이지 및 배포
API 게이트웨이 API는 스테이지에 배포됩니다(예: dev, staging, prod). 각 스테이지에는 고유한 URL과 스로틀링 설정이 있으며 특정 배포 스냅샷을 참조할 수 있습니다. 스테이지 변수(환경 변수와 유사)를 사용하면 스테이지별 백엔드 엔드포인트를 매개변수화할 수 있습니다. 예를 들어 API 구성을 복제하지 않고도 dev 스테이지는 개발용 Lambda 별칭을, prod는 운영용 별칭을 가리키도록 할 수 있습니다.
# REST API: create a deployment and stage
aws apigateway create-deployment \
--rest-api-id 'abc123' \
--stage-name 'prod'
# Set stage variable
aws apigateway update-stage \
--rest-api-id 'abc123' \
--stage-name 'prod' \
--patch-operations 'op=replace,path=/variables/lambdaAlias,value=prod'사용자 지정 도메인 이름 및 기본 경로 매핑
기본적으로 API 게이트웨이 URL에는 API ID가 포함됩니다(예: abc123.execute-api.us-east-1.amazonaws.com). 운영 환경에서는 ACM 인증서를 기반으로 사용자 지정 도메인 이름을 만들고 이를 API 및 스테이지에 매핑하십시오. 기본 경로 매핑을 사용하면 하나의 도메인에서 여러 API를 호스팅할 수 있습니다(예: api.example.com/orders → 주문 API, api.example.com/users → 사용자 API). 사용자 지정 도메인 이름을 사용하려면 API 게이트웨이 엔드포인트를 가리키는 Route 53 별칭 레코드가 필요합니다.
엣지 최적화, 리전 및 프라이빗 API
REST API는 세 가지 엔드포인트 유형으로 배포할 수 있습니다. 엣지 최적화는 전 세계 배포를 위해 CloudFront 프런트엔드를 사용하며 기본값입니다. 리전은 CloudFront를 사용하지 않으므로 동일 리전의 클라이언트에 지연 시간이 더 짧거나 자체 CloudFront를 추가할 때 적합합니다. 프라이빗은 인터페이스 VPC 엔드포인트를 통해 VPC 내부에서만 액세스할 수 있으며 내부 마이크로서비스에 사용합니다. HTTP API는 엣지 최적화와 리전을 지원합니다. WebSocket API는 리전과 프라이빗을 지원합니다. 동일 리전에서 사용하는 API이거나 사용자 지정 CloudFront 배포를 이용할 때는 리전을 선택하십시오.
API 게이트웨이를 사용한 카나리 배포
API 게이트웨이 REST API는 스테이지에서 카나리 배포를 지원합니다. 트래픽의 일정 비율을 카나리 배포(새 버전)로 보내고 나머지는 운영 배포로 보낼 수 있습니다. 카나리의 오류율과 지연 시간을 모니터링하고 안정적이면 트래픽을 100%로 늘리십시오. 문제가 발생하면 카나리 가중치를 0으로 설정하여 롤백할 수 있습니다. 이는 Lambda 별칭의 가중치 기반 라우팅과 유사하며 블루/그린 환경을 전환하지 않고도 API를 안전하고 점진적으로 업데이트할 수 있게 해 줍니다.
시험에서 올바른 API 유형 선택하기
SAA-C03 시험에서 API 유형을 식별하는 핵심 표현은 다음과 같습니다. '비용 효율적인 단순 API' → HTTP API, '실시간 양방향' 또는 '서버 푸시' 또는 '채팅' → WebSocket API, '요청 변환', '사용량 계획', 'API 키 스로틀링', '응답 캐싱' → REST API입니다. 질문이 단순히 '저렴한 비용으로 Lambda를 HTTP 엔드포인트로 노출하라'는 내용이라면 HTTP API가 정답입니다. 복잡한 API 관리 기능이나 파트너가 관련된 질문이라면 일반적으로 REST API가 올바른 선택입니다.
빠른 확인
이 레슨에서 다룬 AWS 솔루션스 아키텍트(SAA-C03) 개념에 대한 이해도를 확인해 보세요.
레슨 요약
이 레슨에서는 다음을 배웠습니다. REST API는 캐싱, 변환, 사용량 계획, WAF를 포함한 API 게이트웨이의 전체 기능을 더 높은 비용으로 제공합니다. HTTP API는 기본 제공 JWT 인증과 더 짧은 지연 시간을 갖추고 REST API보다 70% 저렴하므로 고급 기능이 필요 없는 Lambda/HTTP 프록시 시나리오에 적합합니다. WebSocket API는 지속적인 연결을 통해 채팅, 게임, 실시간 데이터 애플리케이션에 서버 푸시 실시간 통신을 제공합니다. 다음으로 Lambda, HTTP 백엔드 및 모의 응답과 API 게이트웨이를 통합하는 방법을 살펴보겠습니다.
자주 묻는 질문
“REST API, HTTP API 및 WebSocket API 비교” 강의는 무료인가요?
네 — “REST API, HTTP API 및 WebSocket API 비교” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
“REST API, HTTP API 및 WebSocket API 비교”에서 뭘 배우나요?
REST API(기능이 풍부함), HTTP API(지연 시간과 비용이 낮음) 및 WebSocket API(양방향)의 트레이드오프를 이해하고 적절한 방식을 선택합니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“REST API, HTTP API 및 WebSocket API 비교” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- REST API, HTTP API 및 WebSocket API 비교
- 통합: Lambda, HTTP 및 모의 통합
- 권한 부여: IAM, Lambda 권한 부여자 및 Cognito
- 스로틀링, 캐싱 및 사용량 계획