API 개발

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

Ricardo Sueiras

Principal Technologist

API Gateway 통합

 

API Gateway 통합

  • 다양한 백엔드 통합 옵션
  • HTTP: 공개적으로 라우팅 가능한 모든 엔드포인트
  • DynamoDB, SNS 같은 AWS 서비스 API
  • Lambda 함수
  • VPC 링크를 통한 프라이빗 리소스
  • 실제 백엔드 없이 모의 응답 생성
AWS에서 애플리케이션 개발하기

통합 유형: 프록시

 

API 통합 유형

  • 통합 유형에 따라 API Gateway의 제어 범위가 결정됩니다
  • 프록시 유형: AWS_PROXY, HTTP_PROXY
  • HTTP 요청 전체가 백엔드로 그대로 전달됩니다
  • API Gateway는 투명한 패스스루 역할을 합니다
  • 백엔드가 응답을 생성합니다
AWS에서 애플리케이션 개발하기

통합 유형: 비프록시

  • 비프록시 유형: AWS, HTTP
  • 요청과 응답 변환을 직접 구성합니다
  • 매핑 템플릿으로 동작합니다
  • 템플릿은 Velocity Template Language(VTL)로 작성됩니다

 

API 통합 유형

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

요청 검증

 

요청 검증

  • 요청이 백엔드에 도달하기 전에 검증합니다
  • 필수 필드 누락을 감지합니다
  • 잘못된 JSON 형식을 감지합니다
  • 잘못된 매개변수 유형을 감지합니다
  • 검증 실패 시 대부분 400 Bad Request를 반환합니다
AWS에서 애플리케이션 개발하기

요청 검증

 

요청 검증

  • 검증 대상:
    • 헤더
    • 쿼리 문자열 매개변수
    • 요청 본문
    • JSON 스키마
AWS에서 애플리케이션 개발하기

요청 검증

 

요청 검증

  • 검증의 효과:
    • 잘못된 백엔드 요청 감소
    • Lambda 실행 비용 절감
    • API 안정성 향상
AWS에서 애플리케이션 개발하기

변환

  • 백엔드 코드를 수정하지 않고 요청과 응답 형식을 변경합니다
    • 페이로드 구조 변경
    • 필드명 변경
    • 헤더 변환
    • 데이터 형식 변환
    • 구현 세부 정보 숨기기
  • VTL 매핑 템플릿으로 동작합니다

 

API 변환

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

오류 처리

 

API 오류

  • 두 가지 오류 범주
    • 게이트웨이 오류: API Gateway에서 발생
    • 통합 오류: 백엔드 실패
  • 일반적인 게이트웨이 오류:
    • 400 Bad Request: 요청 검증 실패
    • 429 Too Many Requests: 제한(Throttling) 한도 초과
AWS에서 애플리케이션 개발하기

오류 처리

 

API 오류

  • 일반적인 통합 오류:
    • 502 Bad Gateway: 응답 형식 오류 또는 잘못된 응답
    • 503 Service Unavailable: 백엔드 사용 불가 또는 과부하
    • 504 Gateway Timeout: 29초 제한 시간 초과
    • 리전 및 프라이빗 REST API는 29초를 초과할 수 있습니다
AWS에서 애플리케이션 개발하기

로깅

  • 실행 로그와 CloudWatch 지표는 핵심 문제 해결 도구입니다
  • API Gateway는 CloudWatch와 연동하여 다음을 제공합니다:
    • 로그
    • 지표
    • 실행 추적

 

 

API 관찰 가능성(Observability)

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

로깅

  • CloudWatch 로그로 다음 문제를 해결할 수 있습니다:
    • 통합 실패
    • 변환 오류
    • 인증 실패
    • Lambda 실행 문제

 

 

API 관찰 가능성(Observability)

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

스테이지: 환경별 API 관리

 

스테이지

  • 하나의 API 정의로 여러 환경을 운영할 수 있습니다
  • API Gateway는 스테이지로 이런 환경을 관리합니다
AWS에서 애플리케이션 개발하기

스테이지: 환경별 API 관리

 

스테이지

  • 하나의 API 정의로 여러 환경을 운영할 수 있습니다
  • API Gateway는 스테이지로 이런 환경을 관리합니다
  • 스테이지는 이름이 지정된 참조입니다
  • API 설정의 배포 스냅샷을 가리킵니다
AWS에서 애플리케이션 개발하기

스테이지: 환경별 API 관리

 

스테이지

  • 하나의 API 정의로 여러 환경을 운영할 수 있습니다
  • API Gateway는 스테이지로 이런 환경을 관리합니다
  • 스테이지는 이름이 지정된 참조입니다
  • API 설정의 배포 스냅샷을 가리킵니다
  • 일반적인 스테이지 이름:
    • Dev
    • Test
    • QA, Prod
AWS에서 애플리케이션 개발하기

스테이지: 환경별 API 관리

 

스테이지

  • 하나의 API 정의로 여러 환경을 운영할 수 있습니다
  • API Gateway는 스테이지로 이런 환경을 관리합니다
  • 스테이지는 이름이 지정된 참조입니다
  • API 설정의 배포 스냅샷을 가리킵니다
  • 일반적인 스테이지 이름: Dev, Test, QA, Prod
  • 호출 URL은 스테이지마다 다르게 표시됩니다
AWS에서 애플리케이션 개발하기

스테이지: 환경별 API 관리

 

스테이지

  • 하나의 API 정의로 여러 환경을 운영할 수 있습니다
  • API Gateway는 스테이지로 이런 환경을 관리합니다
  • 스테이지는 이름이 지정된 참조입니다
  • API 설정의 배포 스냅샷을 가리킵니다
  • 일반적인 스테이지 이름: Dev, Test, QA, Prod
  • 호출 URL은 스테이지마다 다르게 표시됩니다
  • 여러 스테이지가 하나의 배포를 가리켜 즉시 롤백할 수 있습니다
AWS에서 애플리케이션 개발하기

스테이지: 환경별 API 관리

 

스테이지

  • 변경 사항은 스테이지에 배포해야 적용됩니다
AWS에서 애플리케이션 개발하기

스테이지 기능

  • 각 스테이지는 독립적으로 구성됩니다
  • 구성에는 스테이지 변수가 포함됩니다
  • 스테이지 변수는 키-값 쌍입니다
  • 하나의 배포를 여러 백엔드로 라우팅할 수 있습니다
  • 환경 변경 시 재배포가 필요하지 않습니다

 

스테이지

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

스테이지 기능

  • 카나리 배포
    • REST API에서만 지원
    • 트래픽 일부를 새 배포로 전송
    • 전체 릴리스로 승격
    • 카나리 삭제 시 롤백

 

스테이지

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

스테이지 기능

  • 제한(Throttling)
    • 스테이지 수준에서 설정
    • 모든 메서드에 적용되며 메서드별로 재정의 가능

 

스테이지

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

스테이지 기능

  • 제한(Throttling)
    • 스테이지 수준에서 설정
    • 모든 메서드에 적용되며 메서드별로 재정의 가능
  • 캐싱
    • REST API에서만 지원
    • 스테이지에서 백엔드 응답을 저장
    • 클라이언트는 Cache-Control로 우회 가능
    • TTL은 0~3600초, 기본값은 300초

 

스테이지

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

스테이지 기능

  • 로깅은 두 가지 모드를 제공합니다
    • 액세스 로그
    • $context 변수로 생성되어 CloudWatch 로그 그룹으로 전송
    • 실행 로그
    • 요청과 응답의 전체 세부 정보 캡처

 

스테이지

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

연습해 봅시다!

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

Preparing Video For Download...