CNCF NATS

NATS는 분산 시스템을 지원하는 연결기술(connective technology)로 메시지의 주소 설정, 검색, 통신을 담당한다. 마이크로서비스아키텍처(MSA)에서의 메시지 교환, 스트림 처리를 위해서 사용한다. 클라우드 메시징 서비스 (마이크로서비스, 서비스메시) 이벤트 / 데이터 스트림(데이터 모니터링, 분석, ML/AI)...

NATS를 이용한 멀티 프로덕트 SSO 시스템 구축하기

MSA(Micro Service Architecture)는 2022년 주요 소프트웨어 아키텍처 트랜드 중 하나다. MSA를 이용하면 필수 기능을 가지는 여러 독립된 컴포넌트로 개발을 하면, 각 팀은 원하는 기술셋을 이용해서 필요한 기능에 집중 할 수 있다. 반면 서비스들이 서로 분리되면서 데이터를 동기화하는데 어려움이 생길 수도 있다. CNCF NATS를 ...

RabbitMQ

RabbitMQMQ(Message Queue)가 새로운 건 아니다. 소프트웨어를 개발하다 보면 스레드간 혹은 프로세스간 데이터 통신을 해야 하는 경우가 있다. 주로 Job을 자식 쓰레드(혹은 프로세스)에 분산해서 처리하는 소프트웨어가 돼겠다. 보통은 IPC로 충분한데, 처리해야하는 데이터의 양이 많아지면, queue를 고민하게 된다. 예전에 보안 로그 분...

Apache Kafka

카프카(kafka)는 분산 스트리밍 플랫폼(Distributed streaming platform)이다. 분산 스트리밍 플랫폼은 아래의 기능을 가지고 있어야 한다. 데이터 스트림을 게시(Publish)하고 구독(Subscribe)할 수 있어야 한다. 이 점에서 메시지 큐 혹은 엔터프라이즈 메시징 시스템과 유사한 면이 있다. 내결함성(장애에 대한 내성)을 ...

ElasticCache 기반 메시징 애플리케이션 개발

AWS에서 제공하는 인프라와 서비스들을 이용해서 대량의 메시지를 교환하는 메시징 애플리케이션을 만들어보려 한다. 메시지는 을 이용한다. 아래와 같은 구성을 가질 것이다.PUB/SUB은 REDIS 고유의 기능으로 구현에 어려움은 없다. 1. 채팅방에 해당하는 Topic을 만든다. 1. 메시지 수신자는 해당 Topic을 구독(REDIS SUBSCRIBE)한다...

kafka를 이용한 chatting 프로그램 개발

Kafka 프로듀소와 컨슈머의 개발하는 법을 익힌다. 컨슈머 그룹에 대한 개념을 잡는다. 메시지 교환 프로그램의 구조를 개발한다. IoT응용을 찾는다.kafka의 구성을 끝냈다고 가정한다. 아직 kafka 구성을 마치지 않았다면 문서를 참고해서 구성을 끝내자.채팅 프로그램은 아래의 구조를 가진다. 가장 단순한 구조로 만들고, 이 구조를 확장해 나가자.쉽...

MQTT

MQTT MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다. M2M(machine-to-machine)와 는 MQTT 3.3.1 를 IoT에서의 표준 프로토콜로 채택했다. 지금 나는 IoT관련 일을 하고 있으며, 로컬과 원격 모두에서 사용할 수 있는 경량의 통신 프로토콜로 MQTT를 고려하고 있다. 예전이라면 직접 만들...

Consistent Hash 기반의 대량 메시지 처리 인프라

IoT 플랫폼에서 사용 할 수 있는 대용량 메시지 처리 시스템 개발에 대한 아이디어를 정리한다. 크게 두 가지 아이디어가 있을 건데, 그 중 consistent hash를 이용한 방법을 살펴본다. 이 메시지 처리 인프라는 아래의 특징들을 가지고 있다. 1. 유저간 채팅 서비스가 목적이 아니다. 유저간 채팅 서비에도 사용 할 수 있긴 하지만, IoT를 구성...

MQTT 소개

MQTT 소개MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다. M2M(machine-to-machine)와 (Internet of things)에서의 사용하려고 만들었다. IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다. IoT 관련 일들을 하고 있는데, 저전력/소규모 디바이스를 위한 통...

MQTT websocket

MQTT websocket나는 IoT에서의 데이터 통신을 위해서 MQTT를 선택했다. IoT에서 데이터는 제어와 센서(이벤트 포함) 정보로 나눌 수 있을 것이다. 제어는 제어 토픽에 PUB하고, 센서는 센서 토픽에 SUB 하면 되니까. MQTT로 통신 인터페이스를 통일할 수도 있을 것 같다. 하지만 "다양한 디바이스가 붙을 수 있다"는 IoT의 특성 때문...