AWS에서 API 설계하기

AWS에서 애플리케이션 개발하기

Ricardo Sueiras

Principal Technologist

API Gateway

 

API란 무엇인가

 

  • Amazon API Gateway: API를 구축하기 위한 관리형 서비스입니다.
  • API를 설계, 배포, 관리, 보호할 수 있습니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API 기능

  • 다양한 유형의 API를 구현합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API Gateway 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
  • API 접근을 보호합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API Gateway 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
  • API 접근을 보호합니다.
  • 백엔드 보호를 위해 요청을 제한합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API Gateway 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
  • API 접근을 보호합니다.
  • 백엔드 보호를 위해 요청을 제한합니다.
  • 요청 및 응답 페이로드를 변환합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API Gateway 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
  • API 접근을 보호합니다.
  • 백엔드 보호를 위해 요청을 제한합니다.
  • 요청 및 응답 페이로드를 변환합니다.
  • 소비자를 위해 API를 게시합니다.
AWS에서 애플리케이션 개발하기

Amazon API Gateway 기능

 

API Gateway 기능

  • 다양한 유형의 API를 구현합니다.
  • 백엔드 서비스와 통합합니다.
  • API 접근을 보호합니다.
  • 백엔드 보호를 위해 요청을 제한합니다.
  • 요청 및 응답 페이로드를 변환합니다.
  • 소비자를 위해 API를 게시합니다.
  • API 수명 주기(버전 관리, 배포, 별칭)를 관리합니다.
AWS에서 애플리케이션 개발하기

API 유형

  • API Gateway는 세 가지 API 유형을 지원합니다:
    • REST API
    • HTTP API
    • WebSocket API

 

API 유형

AWS에서 애플리케이션 개발하기

API Gateway 엔드포인트

  • 엔드포인트는 클라이언트가 API에 접근하는 방식을 결정합니다.
  • 에지 최적화: AWS가 관리하는 CloudFront로 전 세계에서 짧은 지연 시간을 제공합니다.
  • 리전형: 특정 AWS 리전에 배포됩니다.
  • 프라이빗: AWS PrivateLink를 통해서만 접근할 수 있습니다.
  • 프라이빗 엔드포인트는 공용 인터넷에 노출되지 않습니다.

 

엔드포인트

AWS에서 애플리케이션 개발하기

REST API

  • API Gateway 제품 중 기능이 가장 풍부합니다.
  • 동기식 요청/응답 모델을 기반으로 합니다.

 

REST API

AWS에서 애플리케이션 개발하기

REST API 사용 사례

 

REST API 사용 사례

  • 전체 수명 주기 관리가 필요한 엔터프라이즈 API.
  • 고급 보안 제어가 필요한 API.
  • API 키와 사용량 계획을 활용하는 타사 개발자 생태계.
  • Lambda 없이 AWS 서비스와 직접 통합.
AWS에서 애플리케이션 개발하기

API Gateway REST API 지원

 

REST API 지원

  • 요청 검증.
  • API 키.
  • 사용량 계획 및 제한.
  • TTL을 설정할 수 있는 응답 캐싱.
  • VTL 템플릿을 통한 요청/응답 변환.
  • IAM 인증(Signature V4).
  • Lambda 권한 부여자, Cognito 사용자 풀.
AWS에서 애플리케이션 개발하기

API Gateway REST API 지원

 

 

REST API 지원

  • 지원되는 엔드포인트 유형 세 가지:
    • 에지 최적화
    • 리전형
    • 프라이빗
  • AWS WAF를 통한 웹 공격 방어.
  • 카나리 배포.
  • AWS X-Ray 및 CloudWatch 로깅을 통한 관측 가능성.
AWS에서 애플리케이션 개발하기

REST API의 장단점

  • HTTP API보다 비용이 더 많이 듭니다.
  • 지연 시간이 약간 더 깁니다.

 

REST API의 장단점

AWS에서 애플리케이션 개발하기

HTTP API

  • 다양한 기능보다 성능과 비용에 최적화:
    • 성능
    • 비용

 

HTTP API

AWS에서 애플리케이션 개발하기

HTTP API 사용 사례

  • 서버리스 워크로드 및 Lambda 기반 API.
  • 마이크로서비스 및 경량 프록시 API.
  • 지연 시간에 민감한 애플리케이션.
  • OAuth 2.0/OIDC 인증을 사용하는 API.

 

HTTP API 사용 사례

AWS에서 애플리케이션 개발하기

API Gateway HTTP API 지원

 

HTTP API 기능

  • Lambda 프록시 통합 및 권한 부여자.
  • 네이티브 JWT/OIDC 인증(Cognito, Auth0, Okta).
  • API 수준에 내장된 CORS 구성.
  • VPC Link를 통한 프라이빗 VPC 통합.
  • 헤더, 쿼리 문자열, 경로에 대한 기본 매개변수 매핑.
AWS에서 애플리케이션 개발하기

HTTP API의 장단점

 

HTTP API 제한 사항

  • HTTP API가 지원하지 않는 기능:

    • API 키
    • 사용량 계획
    • 요청 검증
    • 응답 캐싱
    • AWS X-Ray를 통한 추적
    • VTL 페이로드 변환

    • 지원하는 기능:

      • 에지 또는 프라이빗 엔드포인트(리전형만 해당)
AWS에서 애플리케이션 개발하기

WebSocket API

 

WebSocket API

  • 클라이언트와 서버 간 양방향 통신.
  • REST 및 HTTP API와 달리 연결이 계속 유지됩니다.
  • 서버가 연결된 클라이언트에 데이터를 전송할 수 있습니다.
AWS에서 애플리케이션 개발하기

WebSocket API 사용 사례

  • 채팅 애플리케이션.
  • 실시간 알림.
  • 실시간 대시보드.

 

사용 사례

AWS에서 애플리케이션 개발하기

API Gateway WebSocket API 지원

  • 페이로드 데이터 변환.
  • 요청 검증.
  • 내장된 특수 라우트:
    • $connect: 클라이언트가 연결을 수립함
    • $disconnect: 클라이언트 연결이 끊어짐
    • $default: 일치하는 라우트를 찾을 수 없음

 

WebSocket API 기능

AWS에서 애플리케이션 개발하기

API 캐싱

  • 응답 캐싱은 백엔드 부하를 줄입니다.
  • API 성능을 향상합니다.
  • 대표적인 사용 사례:
    • 자주 요청되는 데이터
    • 읽기 위주의 API
    • Lambda 호출 횟수 감소

 

API 캐싱

AWS에서 애플리케이션 개발하기

API 캐싱

 

API 캐시된 응답

  • 캐시된 응답은 설정한 TTL 이후 만료됩니다.
  • 오래된 데이터는 다음 방법으로 관리합니다:
    • 캐시 만료 시간 설정
    • 캐시 비우기
AWS에서 애플리케이션 개발하기

API 설계 모범 사례: 명확한 리소스 이름 사용

 

API 설계 - 명사

  • 경로는 동작이 아닌 리소스를 나타내야 합니다.
  • 동사 대신 명사를 사용합니다.
  • 올바른 예:
    • GET /orders/123
  • 피해야 할 예:
    • GET /getOrder/123
AWS에서 애플리케이션 개발하기

API 설계 모범 사례: API 버전 관리

 

API 버전 관리

  • API 버전을 관리하면 안전하게 발전시킬 수 있습니다.
  • 기존 클라이언트가 중단되지 않도록 합니다.
  • 일반적인 방식:
    • URI 버전 관리: GET /v1/orders
    • 쿼리 매개변수: GET /orders?version=1
    • HTTP 헤더: Accept-Version: v1
AWS에서 애플리케이션 개발하기

API 개발자 포털

  • 웹 포털을 통해 REST API를 게시하고 공유합니다.
  • API 소비자에게 문서를 제공합니다.
  • 주요 기능:
    • API 문서(Swagger 파일)
    • 소비자 온보딩
    • SDK 다운로드
    • API 키 등록 및 구독 흐름

 

API Gateway 포털

AWS에서 애플리케이션 개발하기

OpenAPI 사양

  • OpenAPI(Swagger): REST API를 기술하는 표준 방식입니다.
  • API Gateway는 OpenAPI 사양을 가져오고 내보낼 수 있습니다.

 

API Gateway의 Swagger 지원

AWS에서 애플리케이션 개발하기

연습해 봅시다!

AWS에서 애플리케이션 개발하기

Preparing Video For Download...