이어서 API Gateway의 다양한 기능들에 대해 기술합니다.
1.공통 로직 처리
2.Mediation : Message format transformation
3.프로토콜 변환
4.메시지 호출 패턴 변환
앞서 API Gateway에서 인증과 인가 기능을 담당하는 것에 대해 이해했습니다. 한편으로 Authentication은 공통 로직이기 때문에 공통 계층에서 처리하게 되면 개발 중복을 줄일 수 있고 표준 준수가 더 쉽습니다. 공통적인 로깅도 마찬가지로 API Gateway에서 처리할 수 있습니다.
JSON으로 된 요청 메시지가 들어왔을 때, 이를 API 서버로 보낼때 변환해서 보내거나 API 서버에서 생성된 응답을 클라이언트에 리턴할때 변경해서 보내는 기능이다.
예를들어 클라이언트는 A라는 데이터만 필요한 경우, API 서버는 A부터 Z까지 데이터를 반환한다. 이 경우 모든 데이터를 받지않고 API Gateway에서 A만 리턴하도록 변경할 수 있다. 그러나 필요한 포맷에 맞는 API를 구성하는 것이 더 권장된다.
서버와 데이터를 주고 받는 2가지 방식 동기와 비동기. 동기는 서버가 요청한 작업을 끝낼때까지 기다리는통신으로 한번에 하니씩 통신하며 서버가 응답을 모두 끝내야 요청이 가능하다. 비동기는 서버가 작업을 끝낼때까지 기다리지 않는 통신이다. 서버에 요청이 저장 될 때까지 기다리지 않고 다른 작업을 진행할 수 있다.
즉, 동시에 여러 통신이 가능하다.
API Gateway는 중간계층에서 동기 호출을 비동기 호출로 바꿔주거나 하나의 API 호출을 여러 데이터 센터로 복제 해준다거나 하는 형태의 메시징 패턴을 변화 시킬 수 있다.
메시지 지향 미들웨어를 구현한 시스템을 의미합니다. 비동기 메시지를 사용하는 응용 프로그램 간의 데이터 송신 방법입니다.
-메시지 큐잉(Message Queeing)은 대용량 데이터를 처리하기 위한 배치 작업이나, 채팅 서비스, 비동기 데이터를 처리할 때 사용한다. 정리하면, 프로세스 단위로 처리하는 웹 요청에 있어서 사용자가 많아지거나 데이터가 많아지면 요청에 대한 응답 시간이 증가한다. 이는 대기가 지연되고 서비스를 정상적으로 운용하는데 문제를 발생시킨다. 기존에 분산되어있던 데이터 처리를 한 곳에 집중하면서 메시지 브로커를 두어 필요한 프로그램에 작업을 분산시키는 방법을 사용하여 해결할 수 있다.
-오픈소스 메시지 큐 종류는 RabbitMQ, AcriveMQ, Kafka...등이 있다.