API Gateway의 다양한 기능 (3)

Yoony·2022년 9월 2일
0

이어서 API Gateway의 다양한 기능들에 대해 기술합니다.
1.공통 로직 처리
2.Mediation : Message format transformation
3.프로토콜 변환
4.메시지 호출 패턴 변환

공통 로직을 처리하여 중복 개발 비용을 줄이고 표준화 한다.

앞서 API Gateway에서 인증과 인가 기능을 담당하는 것에 대해 이해했습니다. 한편으로 Authentication은 공통 로직이기 때문에 공통 계층에서 처리하게 되면 개발 중복을 줄일 수 있고 표준 준수가 더 쉽습니다. 공통적인 로깅도 마찬가지로 API Gateway에서 처리할 수 있습니다.

메디에이션 기능(Mediation)

  • 메디에이션이란 "중재" 또는 "조정"의 의미로, API 서버가 제공하는 API가 클라이언트가 원하는 API 형태와 다를때, API Gateway가 이를 변경해주는 기능이다.

- 메시지 포맷 변환

  • JSON으로 된 요청 메시지가 들어왔을 때, 이를 API 서버로 보낼때 변환해서 보내거나 API 서버에서 생성된 응답을 클라이언트에 리턴할때 변경해서 보내는 기능이다.

  • 예를들어 클라이언트는 A라는 데이터만 필요한 경우, API 서버는 A부터 Z까지 데이터를 반환한다. 이 경우 모든 데이터를 받지않고 API Gateway에서 A만 리턴하도록 변경할 수 있다. 그러나 필요한 포맷에 맞는 API를 구성하는 것이 더 권장된다.

- 프로토콜 변환

  • 프로토콜: 컴퓨터 사이에서 데이터를 교환하는 방식을 정의하는 규칙 체계입니다.
    프로토콜은 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal lebel)등을
    규정합니다. 종류로는 HTTP, Telnet/ ASCII, JPEG, MIDI/ TCP, UDP/ IP, IPX...
  • 다양한 서비스나 클라이언트를 지원하게 되면, 클라이언트나 서비스별로 다른 통신 프로토콜을 사용해야하는 경우가 있다. 웹에서는 JSON 기반의 REST가 많이 사용되나, 배나 비행기에 사용되는 센서들의 경우는 바이너리 기반의 경량 프로토콜을 사용하기도 한다. 이렇게 다양한 프로토콜을 지원해야할 때, 각 서비스들이 새롭게 구현하는 것이 아닌 API Gateway 계층에서 각 클라이언트에 맞는 프로토콜로 변환해주어 서비스할 수 있게 된다.

- 메시지 호출 패턴 변환(Message Exchange Pattern)

  • 서버와 데이터를 주고 받는 2가지 방식 동기와 비동기. 동기는 서버가 요청한 작업을 끝낼때까지 기다리는통신으로 한번에 하니씩 통신하며 서버가 응답을 모두 끝내야 요청이 가능하다. 비동기는 서버가 작업을 끝낼때까지 기다리지 않는 통신이다. 서버에 요청이 저장 될 때까지 기다리지 않고 다른 작업을 진행할 수 있다.
    즉, 동시에 여러 통신이 가능하다.

  • API Gateway는 중간계층에서 동기 호출을 비동기 호출로 바꿔주거나 하나의 API 호출을 여러 데이터 센터로 복제 해준다거나 하는 형태의 메시징 패턴을 변화 시킬 수 있다.

  • 예를들어 로그를 수집하는 시스템에서 API gw 뒤에있는 로그저장 API 서버가 대용량 트래픽에 대한 대응능력이 없을때, API Gateway에서 메시지 큐를 이용하여 API 요청을 받고 바로 클라이언트에 ACK(확인 신호)를 준후에, 메시지큐 연동을 이용하여 메시지를 저장한 후 로그 저장 API 서버의 성능에 맞게 데이터를 흘려주는 방식입니다. 클라이언트 입장에서 동기 호출이나 실제 메시지 흐름은 큐를 이용한 비동기 구조입니다.

- Messaage Queue(MQ)란?

메시지 지향 미들웨어를 구현한 시스템을 의미합니다. 비동기 메시지를 사용하는 응용 프로그램 간의 데이터 송신 방법입니다.

  1. 비동기: 큐(Queue)에 넣기 떄문에 나중에 처리할 수 있다.
  2. 비동조: 애플리케이션과 분리할 수 있다.
  3. 탄력성: 일부가 실패 시 전체가 영향을 받지 않는다.
  4. 과잉: 실패할 경우 재실행이 가능하다.
  5. 보증: 작업이 처리된 것을 확인 가능하다.
  6. 확장성: 다수의 프로세스들이 큐에 메시지를 보낼 수 있다.

-메시지 큐잉(Message Queeing)은 대용량 데이터를 처리하기 위한 배치 작업이나, 채팅 서비스, 비동기 데이터를 처리할 때 사용한다. 정리하면, 프로세스 단위로 처리하는 웹 요청에 있어서 사용자가 많아지거나 데이터가 많아지면 요청에 대한 응답 시간이 증가한다. 이는 대기가 지연되고 서비스를 정상적으로 운용하는데 문제를 발생시킨다. 기존에 분산되어있던 데이터 처리를 한 곳에 집중하면서 메시지 브로커를 두어 필요한 프로그램에 작업을 분산시키는 방법을 사용하여 해결할 수 있다.

-오픈소스 메시지 큐 종류는 RabbitMQ, AcriveMQ, Kafka...등이 있다.

profile
Software Quality Engineer

0개의 댓글