-
Notifications
You must be signed in to change notification settings - Fork 0
API GateWay Study 2023.12.10(내용추가 예정, 아직 공부중)
API Gateway는 클라이언트가 백엔드 서비스의 기능에 액세스 할 수 있도록 게이트 역할을 한다. 다른 표현으로 백엔드의 HTTP 엔드포인트 역할을 제공하는 서비스라고 할 수 있다.(각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할)
Lambda는 '함수'의 역할을 수행하기 때문에, 해당 Lambda에 접근 할 수 있도록 하기 위해서는 API Gateway를 연결하여 엔드포인트를 만들어 주어야한다. 그러면 클라이언트는 API Gateway를 통해서 Lambda 함수를 호출 할 수 있다.
또한 API Gateway 서비스는 단순히 api 경유지 역할 뿐만 아니라, 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량 제어, 요청/응답 변조 등의 다양한 기능을 플러그인 형태로 제공하고 있다. 이러한 플러그인을 API 게이트웨이에서 사용하면, 각 엔드포인트의 서버마다 위의 기능들을 구현하지 않아도 되기 때문에 개발자 입장에서는 개발 비용을 줄일 수 있다는 효과도 있다. 특히 API Gateway를 통해 Lambda와 연동하여 Serverless 서비스를 구축하는데 많이 사용된다.
- 게이트웨이 클라이언트는 모든 요청(Request)을 API Gateway로 통합 요청합니다. API Gateway는 게이트웨이 클라이언트 요청과 매핑되는 리소스를 찾습니다.
- 요청에 백엔드 요청 사전 작업의 플러그인을 적용합니다.
- 요청을 백엔드 엔드 포인트로 전달합니다.
- 백엔드 엔드 포인트의 응답을 API Gateway가 전달받습니다.
- 백엔드 엔드 포인트의 응답에 프런트엔드 응답 사전 작업의 플러그인을 적용합니다.
- 게이트웨이 클라이언트로 응답을 전달합니다.
API Gateway에서 제공하는 API는 대표적으로 3종류가 있다.
- HTTP API : API 프록시 기능정도만 필요할 때 적합. 단순 / 저렴하고 빠르다.
- REST API : API 관리 기능, 요청/응답에 대한 제어가 필요할 경우 적합, 복잡 / 비싸고 느리다.
- WebSocket API : 웹소켓 용도. 실시간 애플리케이션에서 주로 사용한다.
- HTTP를 통신 방식으로 사용하는 API를 HTTP API라고 한다.
- HTTP API는 Endpoint를 API gateway로 활용하여 HTTP 요청을 통해서 서버에 접근할 수 있도록 만들어준다.
- HTTP API는 데이터만 주고 받고 UI 화면이 필요하면 클라이언트가 별도로 처리한다. 대게 앱/웹/서버 to 서버에서 사용된다.
- 대부분의 Web API가 HTTP API로 이루어지고 있다.
- REST API는 HTTP API에 여러가지 제약 조건이 추가된 형태이다.
- 자원의 식별
- 메시지를 통한 리소스 조작
- 자기서술적 메세지
- 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
- REST는 웹 서비스의 구조를 만드는데 활용되는 패턴이며 위의 4가지 제약조건을 만족해야 RESTFUL 하다라고 말할 수 있다.
- 대표적으로 CRUD 메서드 동작을 일컫는다. CREATE(post), READ(get), UPDATE(put), DELETE(delete)
- 그런데 이런 부분을 완벽하게 지키면서 개발하는 것은 현실적으로 어렵고, 또 추가 개발 비용대비 효과가 있는 것도 아니어서, 이미 많은 사람들이 해당 조건을 지키지 않아도 REST API라고 하기 때문에, HTTP API나 REST API를 거의 같은 의미로 사용하고 있는 현실이다. (물론 엄격하게는 다르다)
Rest : HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- 즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.
- 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
- CRUD OperationCreate : 생성(POST) Read : 조회(GET) Update : 수정(PUT) Delete : 삭제(DELETE) HEAD: header 정보 조회(HEAD)
- 요청을 받고 응답하는 REST API와 달리 WebSocket API는 클라이언트 앱과 백엔드 간의 양방향 통신을 지원한다.
- 웹 소켓은 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정할 수 있게 하는 고급 기술 이다.
- 채팅 앱 및 스트리밍 대시보드와 같은 실시간 양방향 통신 애플리케이션을 구축하여 백엔드 서비스와 클라이언트 간의 메시지 전송을 처리하기위해 지속적인 연결을 유지한다.
But 사용자는 서버로부터 새로운 정보를 받아보기 위해서, 반드시 새로운 URL을 요청 ----> 무조건 페이지가 이동 되어야함
HTTPS : S는 Secured의 S 무슨 페이지를 요청, 제공 하는지 암호화
사용자의 이벤트로부터 Javascript는 해당 이름과 내용이 쓰여진 DOM을 읽고 XMLHttpREquest 객체를 통해 웹서버에 해당 이름과 내용 전송 ---> 웹서버는 요청을 처리하고 XML, Text 혹은 JSON을 XMLHttpRequest 객체에 전송 그러면 Javascript가 해당 응답 정보를 DOM에 씀
But 새로운 페이지를 열 필요 없이 일부분만 수정할 수 있게 되었지만 HTTP로 통신하기 때문에 클라이언트의 요청이 있어야 서버로부터 응답을 받음
- WebSocket 프로토콜은 접속 확립에 HTTP를 사용하지만, 그 후의 통신은 WebSocket 독자의 프로토콜로 이루어집니다. 또한, header가 상당히 작아 overhead가 적은 특징
- 장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송신이 가능
- SNS, 멀티플레이어 게임, 증권 거래 사이트 등 실시간이 필요한 곳에 사용
- But 오래된 브라우저의 경우 지원하지 않기에 브라우저에 상관없이 실시간 웹을 구현할 수 있는 Soket.io를 많이 사용
출처 : Rest API
출처 : 웹 소켓 설명
출처 : Gateway 간단설명
출처 : Gateway 종류설명
출처 : Gateway 동작방식