마이크로서비스 작성 (API Gateway)

sang yun Lee·2023년 5월 9일
0

출처:
인파님 블로그
코드스테이츠

공부한 내용을 스스로 되새기기 위한 목적으로 작성되었습니다.

API Gateway 서비스

  • 규모에 상관없이 API 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스

  • API 게이트웨이를 등록해주면, 모든 클라이언트는 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달하여 관리가 용이해 진다 (즉, 느슨한 결합 유지). 사용자가 설정한 라우팅 설정에 따라 각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할을 하기 때문이다.

  • api 경유지 역할 뿐만 아니라, 엔드포인트 서버에서 공통으로 필요한 인증/인가, 사용량 제어, 요청/응답 변조 등의 다양한 기능을 플러그인 형태로 제공함.

  • Lambda와 연동하여 Serverless 서비스를 구축하는데 많이 사용된다

각 rest api 라우팅에 따라 유기적으로 목적지를 지정할 수 있다.

제공 API 유형

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

HTTP API

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

    요청 하면 그냥 상품에 대한 데이터만 내려준다. 이렇게 데이터만 주고 받는 것을 HTTP API라고 한다.

REST API

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

WEBSOCKET API

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

API Gateway - 요금 정책

API Gateway는 람다와 같이 서버리스 서비스이며, 수신한 API 호출에 대해서만 지불한다.

다만 HTTP API / REST API / WEBSOCKET API 각각 모두 요금대가 다르다.

API Gateway가 중요해진 배경은?

전통적인 모놀리틱 아키텍처 기반의 대용량 서비스가 점점 유지보수의 어려움을 겪으며 마이크로서비스 아키텍처가 기존 모놀리틱 아키텍처의 단점을 보완하는 역할을 하였음. 그 MSA를 구성할 때 접목한 서비스가 API Gateway이다. API Gateway는 마이크로서비스를 연결하는 중간다리 역할을 담당하며, MSA에서 핵심적으로 필요한 기능이 되었다.

API Gateway를 사용하는 이유?

각 마이크로서비스는 자체 기능을 필요로 하기 때문에 애플리케이션을 느슨하게 결합된 여러 서비스로 분해될 수 있다. 이 때 고객이 각 마이크로서비스에 대한 액세스를 개별적으로 요청하는 대신 게이트웨이는 요청에 대한 단일 진입점(entrypoint)으로, 해당 요청을 적절한 서비스에 연결하고 결과를 수집하여 요청자에게 다시 전달하게 도와줍니다(라우팅).

API Gateway 종류

0개의 댓글