Skip to content

API GateWay Study 2023.12.10(내용추가 예정, 아직 공부중)

libo-liti edited this page Dec 10, 2023 · 3 revisions

API Gateway

API Gateway는 클라이언트가 백엔드 서비스의 기능에 액세스 할 수 있도록 게이트 역할을 한다. 다른 표현으로 백엔드의 HTTP 엔드포인트 역할을 제공하는 서비스라고 할 수 있다.(각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할)

Lambda는 '함수'의 역할을 수행하기 때문에, 해당 Lambda에 접근 할 수 있도록 하기 위해서는 API Gateway를 연결하여 엔드포인트를 만들어 주어야한다. 그러면 클라이언트는 API Gateway를 통해서 Lambda 함수를 호출 할 수 있다.

image

또한 API Gateway 서비스는 단순히 api 경유지 역할 뿐만 아니라, 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량 제어, 요청/응답 변조 등의 다양한 기능을 플러그인 형태로 제공하고 있다. 이러한 플러그인을 API 게이트웨이에서 사용하면, 각 엔드포인트의 서버마다 위의 기능들을 구현하지 않아도 되기 때문에 개발자 입장에서는 개발 비용을 줄일 수 있다는 효과도 있다. 특히 API Gateway를 통해 Lambda와 연동하여 Serverless 서비스를 구축하는데 많이 사용된다.

API Gateway 동작 방식

image

  1. 게이트웨이 클라이언트는 모든 요청(Request)을 API Gateway로 통합 요청합니다. API Gateway는 게이트웨이 클라이언트 요청과 매핑되는 리소스를 찾습니다.
  2. 요청에 백엔드 요청 사전 작업의 플러그인을 적용합니다.
  3. 요청을 백엔드 엔드 포인트로 전달합니다.
  4. 백엔드 엔드 포인트의 응답을 API Gateway가 전달받습니다.
  5. 백엔드 엔드 포인트의 응답에 프런트엔드 응답 사전 작업의 플러그인을 적용합니다.
  6. 게이트웨이 클라이언트로 응답을 전달합니다.

API Gateway - 제공 API 유형

API Gateway에서 제공하는 API는 대표적으로 3종류가 있다.

  • HTTP API : API 프록시 기능정도만 필요할 때 적합. 단순 / 저렴하고 빠르다.
  • REST API : API 관리 기능, 요청/응답에 대한 제어가 필요할 경우 적합, 복잡 / 비싸고 느리다.
  • WebSocket API : 웹소켓 용도. 실시간 애플리케이션에서 주로 사용한다.

HTTP API

  • HTTP를 통신 방식으로 사용하는 API를 HTTP API라고 한다.
  • HTTP API는 Endpoint를 API gateway로 활용하여 HTTP 요청을 통해서 서버에 접근할 수 있도록 만들어준다.
  • HTTP API는 데이터만 주고 받고 UI 화면이 필요하면 클라이언트가 별도로 처리한다. 대게 앱/웹/서버 to 서버에서 사용된다.
  • 대부분의 Web API가 HTTP API로 이루어지고 있다.

image

REST API

  • REST API는 HTTP API에 여러가지 제약 조건이 추가된 형태이다.
  • 자원의 식별
  • 메시지를 통한 리소스 조작
  • 자기서술적 메세지
  • 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
  • REST는 웹 서비스의 구조를 만드는데 활용되는 패턴이며 위의 4가지 제약조건을 만족해야 RESTFUL 하다라고 말할 수 있다.
  • 대표적으로 CRUD 메서드 동작을 일컫는다. CREATE(post), READ(get), UPDATE(put), DELETE(delete)
  • 그런데 이런 부분을 완벽하게 지키면서 개발하는 것은 현실적으로 어렵고, 또 추가 개발 비용대비 효과가 있는 것도 아니어서, 이미 많은 사람들이 해당 조건을 지키지 않아도 REST API라고 하기 때문에, HTTP API나 REST API를 거의 같은 의미로 사용하고 있는 현실이다. (물론 엄격하게는 다르다)

image

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)

WEBSOCKET API

  • 요청을 받고 응답하는 REST API와 달리 WebSocket API는 클라이언트 앱과 백엔드 간의 양방향 통신을 지원한다.
  • 웹 소켓은 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정할 수 있게 하는 고급 기술 이다.
  • 채팅 앱 및 스트리밍 대시보드와 같은 실시간 양방향 통신 애플리케이션을 구축하여 백엔드 서비스와 클라이언트 간의 메시지 전송을 처리하기위해 지속적인 연결을 유지한다.

image

Web Soket 배경 및 HTTP, AJAX 간단 설명(우리는 REST API를 사용할 예정이라 간단하게만)

HTTP : 하이퍼텍스트 방식의 정보를 교환하기 위한 하나의 규칙(HTML과 같은 문서를 전공하기 위해 사용)

But 사용자는 서버로부터 새로운 정보를 받아보기 위해서, 반드시 새로운 URL을 요청 ----> 무조건 페이지가 이동 되어야함
HTTPS : S는 Secured의 S 무슨 페이지를 요청, 제공 하는지 암호화
image

AJAX : 동일한 웹페이지 내에서 DOM을 변경

사용자의 이벤트로부터 Javascript는 해당 이름과 내용이 쓰여진 DOM을 읽고 XMLHttpREquest 객체를 통해 웹서버에 해당 이름과 내용 전송 ---> 웹서버는 요청을 처리하고 XML, Text 혹은 JSON을 XMLHttpRequest 객체에 전송 그러면 Javascript가 해당 응답 정보를 DOM에 씀
But 새로운 페이지를 열 필요 없이 일부분만 수정할 수 있게 되었지만 HTTP로 통신하기 때문에 클라이언트의 요청이 있어야 서버로부터 응답을 받음 image

WebSocket : HTML5 표준 기술로, 사용자의 브라우저와 서버 사이의 동적인 양방향 연결 채널을 구성

  • WebSocket 프로토콜은 접속 확립에 HTTP를 사용하지만, 그 후의 통신은 WebSocket 독자의 프로토콜로 이루어집니다. 또한, header가 상당히 작아 overhead가 적은 특징
  • 장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송신이 가능
  • SNS, 멀티플레이어 게임, 증권 거래 사이트 등 실시간이 필요한 곳에 사용
  • But 오래된 브라우저의 경우 지원하지 않기에 브라우저에 상관없이 실시간 웹을 구현할 수 있는 Soket.io를 많이 사용

출처 : Rest API
출처 : 웹 소켓 설명
출처 : Gateway 간단설명
출처 : Gateway 종류설명
출처 : Gateway 동작방식