REDIS는 다양한 데이터 타입을 지원하는 메시지 큐로 알려져 있다. 그런 REDIS가 Pub/Sub를 지원한다. Pub/Sub는 메시지큐와는 특성이 다르다. Pub/Sub 시스템에서는 채널에 구독 신청을 한 모든 subscriber에게 메시지를 전달한다. 메시지를 "던지는" 시스템이기 때문에, 메시지를 보관하지도 않는다. 메시지 큐 본연의 목적과는 좀 다른 기능이라고 할 수 있겠다. 어쨋든 REDIS에서 제공하는 기능이고, 최근 효율적인 PUB/SUB 구축에 대한 요구도 있고해서 살펴보기로 했다. REDIS에 대한 기본적인 지식(설치, 간단한 운용, 지원하는 데이터 타입에 대한 이해)은 가지고 있다고 가정한다.
SUBSCRIBE 명령을 이용해서 채널을 구독할 수 있다. 매개변수로 채널 이름이 들어간다. 하나 이상의 채널에 대한 구독도 가능하다. test 채널과 qa 채널에 대해서 구독 신청을 했다.
MQTT도 비슷한 용도로 사용할 수 있는데(사실 MQTT의 전문분야라고 봐야 겠지만) 기능 보다는 사용환경에 있어서 차이가 있다. MQTT는 저전력, 신뢰할 수 없는 네트워크 환경에서의 작동을 목표로 하고 있다. 또한 QoS를 이용해서, 환경에 따라서 적절하게 서비스 품질을 조절할 수 있는 장점이 있다.
나는 IoT환경에서의 메시지 교환을 목적으로 REDIS를 테스트 했다. IoT 환경을 기준으로 내 생각을 정리 한다.
모바일 기기 혹은 IoT기기와의 통신에는 MQTT를 사용한다.
인프라 내부 컴포넌트들간의 메시지 교환에는 REDIS를 이용한다. 메시지 인프라에는 다양한 성격의 컴포넌트들이 존재한다. 이런 환경에서는 다양한 데이터 타입을 제공하는 REDIS가 강점을 가질 수 있다. 메시지 함, PUB/SUB 시스템, 연결 테이블 관리, 라우팅 테이블 관리등을 단일 소프트웨어로 구현할 수 있는 것은 큰 장점이다.
Contents
1. Pub/Sub
1.1. Push 메시지 데이터 형식
1.2. Database & Scope
1.3. 패턴매칭 subscribe
2. 프로그래밍
2.1. PUB 프로그램
2.2. SUB 프로그램
3. 응용
3.1. 구성
3.2. 개발 범위
3.3. 메시지 포멧
3.4. 웹 애플리케이션 서버
3.5. index.erb
3.6. 테스트
4. 정리
4.1. MQTT와의 비교
4.2. 하고픈 것들
5. 참고
1. Pub/Sub
1.1. Push 메시지 데이터 형식
1.2. Database & Scope
1.3. 패턴매칭 subscribe
2. 프로그래밍
2.1. PUB 프로그램
2.2. SUB 프로그램
3. 응용
3.1. 구성
3.2. 개발 범위
3.3. 메시지 포멧
3.4. 웹 애플리케이션 서버
3.5. index.erb
3.6. 테스트
4. 정리
4.1. MQTT와의 비교
4.2. 하고픈 것들
5. 참고
Recent Posts
Archive Posts
Tags