인터넷에서 API를 직접 노출하면 어떤 일이 벌어지는지 생각해보자. 인증 없이 누구나 호출할 수 있고, 악의적인 클라이언트가 초당 수천 건을 보낼 수 있고, 여러 팀의 클라이언트가 각기 다른 버전의 API를 요구한다. API Gateway는 이 모든 교차 관심사(Cross-Cutting Concerns)를 백엔드 코드 밖에서 처리한다. 인증, 스로틀링, 캐싱, 버전 관리, 모니터링 — 이것들을 각 Lambda나 서버 코드에서 직접 구현하는 대신, API Gateway 레이어에서 선언적으로 설정한다.
API Gateway의 탄생 배경에는 마이크로서비스 아키텍처의 급속한 확산이 있었다. 단일 모노리식 애플리케이션을 수십 개의 서비스로 분해하면, 클라이언트가 각 서비스의 엔드포인트를 개별적으로 알아야 하고, 각 서비스가 자체 인증을 구현해야 한다. API Gateway는 이 분산된 복잡성을 단일 진입점으로 통합한다.
AWS API Gateway는 세 가지 다른 API 타입을 제공한다. 이 세 개는 단순히 기능 수준의 차이가 아니라 설계 철학과 내부 구조가 다르다.
REST API는 API Gateway의 원조(2015년 출시)다. HTTP 메서드(GET/POST/PUT/DELETE/PATCH)와 리소스 경로를 조합해서 RESTful 인터페이스를 만든다. 가장 많은 기능을 제공하지만 가장 비싸다