AWS에서 API 설계하기
AWS에서 애플리케이션 개발하기
Ricardo Sueiras
Principal Technologist
API Gateway
- Amazon API Gateway: API를 구축하기 위한 관리형 서비스입니다.
- API를 설계, 배포, 관리, 보호할 수 있습니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
- API 접근을 보호합니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
- API 접근을 보호합니다.
- 백엔드 보호를 위해 요청을 제한합니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
- API 접근을 보호합니다.
- 백엔드 보호를 위해 요청을 제한합니다.
- 요청 및 응답 페이로드를 변환합니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
- API 접근을 보호합니다.
- 백엔드 보호를 위해 요청을 제한합니다.
- 요청 및 응답 페이로드를 변환합니다.
- 소비자를 위해 API를 게시합니다.
Amazon API Gateway 기능
- 다양한 유형의 API를 구현합니다.
- 백엔드 서비스와 통합합니다.
- API 접근을 보호합니다.
- 백엔드 보호를 위해 요청을 제한합니다.
- 요청 및 응답 페이로드를 변환합니다.
- 소비자를 위해 API를 게시합니다.
- API 수명 주기(버전 관리, 배포, 별칭)를 관리합니다.
API 유형
- API Gateway는 세 가지 API 유형을 지원합니다:
- REST API
- HTTP API
- WebSocket API
API Gateway 엔드포인트
- 엔드포인트는 클라이언트가 API에 접근하는 방식을 결정합니다.
- 에지 최적화: AWS가 관리하는 CloudFront로 전 세계에서 짧은 지연 시간을 제공합니다.
- 리전형: 특정 AWS 리전에 배포됩니다.
- 프라이빗: AWS PrivateLink를 통해서만 접근할 수 있습니다.
- 프라이빗 엔드포인트는 공용 인터넷에 노출되지 않습니다.
REST API
- API Gateway 제품 중 기능이 가장 풍부합니다.
- 동기식 요청/응답 모델을 기반으로 합니다.
REST API 사용 사례
- 전체 수명 주기 관리가 필요한 엔터프라이즈 API.
- 고급 보안 제어가 필요한 API.
- API 키와 사용량 계획을 활용하는 타사 개발자 생태계.
- Lambda 없이 AWS 서비스와 직접 통합.
API Gateway REST API 지원
- 요청 검증.
- API 키.
- 사용량 계획 및 제한.
- TTL을 설정할 수 있는 응답 캐싱.
- VTL 템플릿을 통한 요청/응답 변환.
- IAM 인증(Signature V4).
- Lambda 권한 부여자, Cognito 사용자 풀.
API Gateway REST API 지원
- 지원되는 엔드포인트 유형 세 가지:
- AWS WAF를 통한 웹 공격 방어.
- 카나리 배포.
- AWS X-Ray 및 CloudWatch 로깅을 통한 관측 가능성.
REST API의 장단점
- HTTP API보다 비용이 더 많이 듭니다.
- 지연 시간이 약간 더 깁니다.
HTTP API 사용 사례
- 서버리스 워크로드 및 Lambda 기반 API.
- 마이크로서비스 및 경량 프록시 API.
- 지연 시간에 민감한 애플리케이션.
- OAuth 2.0/OIDC 인증을 사용하는 API.
API Gateway HTTP API 지원
- Lambda 프록시 통합 및 권한 부여자.
- 네이티브 JWT/OIDC 인증(Cognito, Auth0, Okta).
- API 수준에 내장된 CORS 구성.
- VPC Link를 통한 프라이빗 VPC 통합.
- 헤더, 쿼리 문자열, 경로에 대한 기본 매개변수 매핑.
HTTP API의 장단점
HTTP API가 지원하지 않는 기능:
- API 키
- 사용량 계획
- 요청 검증
- 응답 캐싱
- AWS X-Ray를 통한 추적
VTL 페이로드 변환
지원하는 기능:
- 에지 또는 프라이빗 엔드포인트(리전형만 해당)
WebSocket API
- 클라이언트와 서버 간 양방향 통신.
- REST 및 HTTP API와 달리 연결이 계속 유지됩니다.
- 서버가 연결된 클라이언트에 데이터를 전송할 수 있습니다.
WebSocket API 사용 사례
- 채팅 애플리케이션.
- 실시간 알림.
- 실시간 대시보드.
API Gateway WebSocket API 지원
- 페이로드 데이터 변환.
- 요청 검증.
- 내장된 특수 라우트:
$connect: 클라이언트가 연결을 수립함
$disconnect: 클라이언트 연결이 끊어짐
$default: 일치하는 라우트를 찾을 수 없음
API 캐싱
- 응답 캐싱은 백엔드 부하를 줄입니다.
- API 성능을 향상합니다.
- 대표적인 사용 사례:
- 자주 요청되는 데이터
- 읽기 위주의 API
- Lambda 호출 횟수 감소
API 캐싱
- 캐시된 응답은 설정한 TTL 이후 만료됩니다.
- 오래된 데이터는 다음 방법으로 관리합니다:
API 설계 모범 사례: 명확한 리소스 이름 사용
- 경로는 동작이 아닌 리소스를 나타내야 합니다.
- 동사 대신 명사를 사용합니다.
- 올바른 예:
- 피해야 할 예:
API 설계 모범 사례: API 버전 관리
- API 버전을 관리하면 안전하게 발전시킬 수 있습니다.
- 기존 클라이언트가 중단되지 않도록 합니다.
- 일반적인 방식:
- URI 버전 관리:
GET /v1/orders
- 쿼리 매개변수:
GET /orders?version=1
- HTTP 헤더:
Accept-Version: v1
API 개발자 포털
- 웹 포털을 통해 REST API를 게시하고 공유합니다.
- API 소비자에게 문서를 제공합니다.
- 주요 기능:
- API 문서(Swagger 파일)
- 소비자 온보딩
- SDK 다운로드
- API 키 등록 및 구독 흐름
OpenAPI 사양
- OpenAPI(Swagger): REST API를 기술하는 표준 방식입니다.
- API Gateway는 OpenAPI 사양을 가져오고 내보낼 수 있습니다.
연습해 봅시다!
AWS에서 애플리케이션 개발하기
Preparing Video For Download...