메뉴

NATS Messaging

2018-08-21 04:44:18

목차

NATS

NATS는 오픈소스 메시징 시스템(message-oriented middleware 로 부르기도 한다.)으로 Go 언어로 개발됐다. 서버와 인터페이스하기 위해서 수십 개의 언어를 위한 클라이언트 라이브러리를 제공한다. NATS는 성능,확장성,사용성을 최우선순위로 설계헸다.

NATS는 원래 Cloud Foundry에서 message control plane의 일종으로 개발했다. Ruby로 개발을 시작했는데, 이후 Go로 바꿨다. 소스코드는 Apache 2.0 라이센스를 따르고 있다. NATS는 로 구성된다. Micro, Mainflux, Hemera와 같은 마이크로 서비스 프레임워크들이 NATS를 메시지백본으로 사용하고 있다. 분산시스템하에서는 수많은 서비스들이 데이터를 주고 받게 되는데, NATS를 이용해서 안전하고 빠르게 데이터를 주고 받을 수 있다.

NATS는 메시지 형태로 분할된 데이터의 교환을 허용하는 인프라로 흔히 "메시지 지향 미들웨어"라고 부른다.

단일 PC에서는 IPC를 이용해서 애플리케이션간 메시지를 주고 받을 수 있지만 분산 시스템에서는 네트워크를 통해서 메시지를 주고 받아야 한다. 대량의 애플리케이션이 실행되는 분산 시스템에서 메시지 교환은 매우 복잡한 작업이 될 수 있는데, NAST 같은 애플리케이션이 IPC와 같은 역할을 수행한다고 보면 된다.

NATS로 할 수 있는 일은 다음과 같다.
  1. 분산 / 확장 가능한 클라이언트/서버 애플리케이션을 구축한다.
  2. 실시간으로 데이터를 저장하고 배포 할 수 있다.
NATS는 아래의 영역에서 유용하게 사용 할 수 있다.

주요 특징

NATS Service 인프라

NATS는 PUB/SUB 방식의 전통적인 메시지 브로커와 용청/응답 방식의 메시징 모두를 지원한다. NATS는 메시지를 안전하게 송/수신하기 위해서 클러스터로 구성된 NATS Service 인프라를 구성할 수 있는 NATS 서버 애플리케이션을 제공한다.

NATS 서버 프로세스는 그 크기가 20MB 미만으로 가볍기 때문에, 저렵하고 쉽게 인프라를 구성 할 수 있다.

NATS 클라이언트 애플리케이션

C, C#, Erlang, Go, Node.js, PHP, Python, Rust, Scala, Swift, Deno, Arduino 에서 사용할수 있는 클라이언트 라이브러리를 제공한다. 개발자들은 클라이언트 라이브러리를 이용해서 NATS에 연결, 메시지를 구독/발행/요청/응답 할 수 있다.

NATS QoS

NATS는 메시지 품질을 관리하기 위한 QoS를 제공한다.

NATS 메시징 패턴

NATS는 엔터티 간 메시지 통신을 위한 4가지 주요 패턴을 지원한다.
  1. Subject based messaging
  2. Publish-Subscribe
  3. Request-Reply
  4. Queue groups

Subject-based messaging

... 계속

Publish-subscribe

... 계속

Request-Reply

... 계속

Queue groups

... 계속

마이크로 서비스와 NATS

... 계속

NATS vs Kafka

... 계속