API Gateway
API Gateway란?
- API Gateway란 규모에 상관없이 API를 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스이다
- Client에서 Server로 통신할 때 사용하는 많은 API들이 지나가는 통로
API Gateway 이용시 장점
- 통합적으로 엔드포인트와 REST API 관리 가능
- 게이트웨이 등록시, 모든 클라이언트가 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달해 관리 용이
- 단순 api 경유지 역할과 더불어 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량제어, 요청/응답 변조 제공
- 위와 같은 기능을 API 게이트웨이에서 사용시, 엔드포인트 서버마다 위 기능들을 구현하지 않아도 돼 개발 비용을 줄일 수 있다
- 특히 Lambda와 연동해 서버리스 서비스 구축에 많이 사용된다

API Gateway 제공 API 유형
- HTTP API
- REST API
- WebSocketAPI

- HTTP API
- HTTP를 통신 방식으로 사용하는 API
- Endpoint를 게이트웨이로 활용해 HTTP요청으로 서버에 접근
- 데이터만 주고받고 UI 필요시 클라이언트가 별도로 처리
- 대부분의 Web API가 HTTP API로 이뤄진다


- REST API
- HTTP API에 여러가지 제약 조건이 추가된 형태
: 자원의 식별
: 메시지를 통한 리소스 조작
: 자기서술적 메세지
: 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
- REST는 웹 서비스 구조를 만드는데 활용,
위 4가지 제약조건을 만족해야 RESTFUL하다
- 대표적으로 CRUD 메서드 동작
- 엄격하게는 다르지만, HTTP,REST API를 같은 의미로 사용

- WEBSOCKET API
- REST API는 요청을 받고 응답하지만,
WebSocketAPI는 클라이언트 앱과 백엔드 간의 양방향 통신
- 웹 소켓은 사용자의 브라우저와 서버 간 양방향 통신 세션 설정
- 실시간 어플리케이션을 구축해 백엔드-클라이언트 간의 메시지 전송을 처리하기 이해 지속적인 연결 유지

HTTP API 실습
백엔드로 해커톤을 진행하면서 API 테스트를 진행하는데 멘탈이 터졌다
넘나 어려운 것
API 생성도 힘들고, 구성도 힘든데
RESTful하게 진행하기는 많이 힘들 것 같아 HTTP로 실습을 해보려한다

: 먼저 API 이름을 정의한다

: 그 다음으로는 통합을 지정했다
: 메서드는 Any로, 어떤 요청이 오든 모두 포함되는 메서드로 지정했다
: 경로는 topics, URL은 naver.com
위와 같이 연결을 진행하면

엔드포인트 주소에 경로를 쳐서 실질적으로 원하는 도메인으로 연결을 할 수 있다고 하던데
나는 라우팅에 실패했다
아무래도 다른 방법이 있는 것 같은데 찾아봐야 할 것 같다.

API를 새로 구축해 시도하였더니 접속까지는 해결되었지만
네이버 검색창 하나만 보여주ㄴ다
API Gateway 엔드포인트 URL 이점
- 확장성과 관리성
- 요청을 여러 백엔드로 분산 -> 부하를 줄여준다
- 많은 트래픽이 발생해도 백엔드 확장에 용이하다
- 보안 강화
- 인증 권한 부여,OAuth2.0 지원 -> 접근 제한
- 로깅 및 모니터링
- CloudWatch와 연결돼 로그 및 모니터링이 가능
- 서버리스 통합
- 서버리스 서비스인 Lambda와 통합
- 서버 관리 없이 서버리스 방식으로 요청 처리 가능
- 통일된 URL
- 고유한 엔드포인트 URL로 타 어플리케이션과의 통합 및 테스트 용이
참고:
네이버cloud에서 설명하는 API게이트웨이
https://api.ncloud-docs.com/docs/api-overview
https://blog.naver.com/n_cloudplatform/221123434939