쉽게 유지 관리하고 확장할 수 있으며 성능이 뛰어나야 하는 애플리케이션을 작업하는 경우 게시/구독 메시징 패턴이 좋은 선택입니다.
그 뒤에 숨은 아이디어는 간단하지만 강력합니다. 게시자라는 발신자가 있습니다. 이들의 유일한 역할은 전송하거나 게시하는 것입니다. 메시지. 그들은 누가 그것을 받을지, 누군가가 그것을 받을지 전혀 신경 쓰지 않습니다. 그들은 단지 메시지를 쏘고 잊어버립니다. 그리고 채널을 통해 이를 수행합니다. .
예를 들어 TV 채널이라고 생각하세요. 스포츠 채널, 일기예보 채널, 요리 채널 등이 있습니다. 모든 게시자는 특정 채널과 구독하는 사람에게 메시지를 보냅니다. 이 채널에서는 이러한 메시지를 받을 수 있습니다.
구독자가 여기에 있습니다. 놀러오세요. 하나 이상의 채널을 구독하고 해당 채널에서 방송되는 메시지를 수신할 수 있습니다.
이미 언급했듯이 메시지는 전송되고 잊혀집니다. 이는 구독자가 특정 채널을 구독하는 경우 해당 채널에서 이전에 전송된 모든 메시지를 이 구독자가 사용할 수 없다는 의미입니다.
이러한 종류의 아키텍처 특성으로 인해 우리는 서로 다른 구성 요소 간의 낮은 결합을 쉽게 달성할 수 있으며 강력하고 유지 관리가 쉬운 애플리케이션을 구축하기 위한 견고한 기반을 제공할 수 있습니다.
예를 들어, 더 많은 게시자, 더 많은 채널을 추가하는 등 시스템의 게시 부분을 교체하거나 개선해야 하는 상황을 상상해 보세요. 두 부분이 분리되어 있어 게시자가 구독자를 신경 쓰지 않고 그 반대의 경우도 마찬가지이므로 시스템의 다른 부분이 손상되는지 걱정하지 않고 쉽게 수행할 수 있습니다. 새 게시자를 추가하기만 하면 됩니다. 그러다가 나중에 구독자가 관련 채널을 방문하면 바로 사용하기 시작합니다.
Redis란 무엇인가요?
Redis의 초기 아이디어는 조상 Memcached의 대안으로 인메모리 캐시 솔루션 역할을 하는 것이었습니다.
그러나 요즘에는 메모리 내 데이터 구조 저장소, 키-값 데이터베이스, 메시지 중개 등을 제공하는 다중 기능 솔루션입니다. 이는 매우 빠른 캐싱 솔루션과 앞서 언급한 기타 기능이 필요한 애플리케이션을 구축할 때 완벽한 후보가 됩니다. 특히 앱의 성능이 정기적인 사용에 중요한 경우에는 더욱 그렇습니다.
Redis 성능 비교(출처:google)
Redis를 사용할 때 가장 큰 장점 중 하나는 온라인에서 찾을 수 있는 거대한 커뮤니티와 기술 리소스입니다. 이러한 리소스 중 상당수는 무료이며, 무료 서비스를 제공하는 온라인 플랫폼도 있습니다.
Redis에는 클라우드 솔루션도 포함되어 있습니다. 직접 사용해 보고 싶다면 여기로 가서 무료 계정을 등록하거나 제공되는 초기 쿠폰을 사용해 보세요.
Redis Enterprise Cloud 가입/로그인 페이지
게시/구독이란 무엇인가요?
Redis의 게시/구독 채널은 위에서 언급하지 않은 기능 중 하나이지만 Redis의 최신 버전에는 포함되어 있습니다. 이는 채널을 통해 메시지를 교환하는 게시자와 구독자가 있는 게시/구독 메시징 패턴을 구현한 것입니다.
아래에서 간단히 살펴보고 제가 준비한 작은 데모 앱에서 실제로 확인해 보겠습니다.
Redis 게시/구독은 어떻게 작동하나요?
게시자(메시지 생성자), 채널(메시지가 전달되는 사람), 구독자(메시지 수신자)가 있습니다. 누가 어떤 채널을 구독하는지에 따라 누가 무엇을 받을지 결정됩니다.
예를 통해 이것이 어떻게 작동하는지 살펴보겠습니다.
세 개의 서로 다른 채널에 메시지를 게시할 세 개의 게시자를 생성한 경우 이를 채널 1, 2, 3이라고 부르겠습니다. 구독자도 3명이므로 구독자 A, B, C라고 하겠습니다.
이제 구독자 A가 세 채널 모두에서 메시지를 수신하고 있다고 가정해 보겠습니다. 즉, 해당 메시지를 구독하고 있습니다. 그리고 구독자 B와 C는 채널 2와 3을 구독합니다. 이는 세 게시자 중 하나가 메시지를 보내면 구독자 A가 이를 수신한다는 의미입니다. 그리고 구독자 B와 C는 게시자 2와 3이 보낸 메시지만 받게 됩니다. 왜냐하면 그들은 이 채널(2와 3)의 메시지만 듣고 있기 때문입니다.
채널을 사용하는 두 개의 엔터티(하나는 전송, 다른 하나는 수신)가 있지만 완전히 독립적입니다. 그리고 전송되는 메시지는 지속되지 않습니다. 출판사에서 보내면 잊어버립니다. 보내는 순간에 구독한 유일한 엔터티가 이를 받게 됩니다.
Redis에서 pub/sub를 사용하는 방법
Redis와 함께 사용할 수 있는 클라이언트 라이브러리가 많이 있습니다. 특정 프로젝트 요구 사항이나 선호하는 프로그래밍 언어에 따라 누구나 가서 하나를 선택할 수 있는 전용 페이지가 있습니다.
Redis 사람들은 이러한 저장소 중 일부를 권장으로 표시했습니다. 이 모든 것이 처음이라면 선택이 더 쉬워집니다.
아래 데모에서는 Node.js용 Redis 클라이언트인 ioredis를 사용했습니다. 데모 앱 UI가 React와 Node.js로 구축되었고 내 서버 코드가 그것과 꽤 잘 어울리기 때문에 이것을 선택했습니다.
Redis Pub/Sub 데모
Redis Pub/Sub Visualizer 앱
쇼타임!
데모 애플리케이션의 기본 아이디어는 패턴이 어떻게 작동하는지 시각적으로 보여주는 것입니다.
처음 열면 보이는 것은 가상의 세 가지 TV 채널인 날씨, 스포츠, 음악에 간단한 메시지(뉴스)를 게시하는 세 개의 버튼입니다.
게시 버튼 아래의 카드는 구독자입니다. 마우스 커서를 그 중 하나로 이동하면 뒷면으로 바뀌고 세 개의 버튼이 표시됩니다. 각 버튼을 사용하여 관련 채널을 구독할 수 있습니다.
채널을 통해 구독자가 등록되고 해당 채널의 아이콘이나 게시 버튼을 클릭하면 카드 앞면에 샘플 뉴스가 표시됩니다.
다양한 게시자/구독자 조합을 사용해 보고 결과를 확인하세요.
위의 예에서 설명한 내용을 더 잘 이해하실 수 있기를 바랍니다.
데모 앱을 로컬에서 실행하는 방법
데모 애플리케이션을 로컬에 설치하고 실행하려면 아래 단계를 따르세요(모든 명령은 루트 프로젝트 디렉터리에서 실행되는 것으로 간주됩니다):
프런트엔드 실행:
cd client yarn && yarn dev
백엔드 실행:
cd server && yarn yarn start
마지막으로 로컬에 설치된 Docker를 사용하여(없으면 여기에서 다운로드할 수 있음) 다음을 실행하세요.
docker run -p 6379:6379 redislabs/redismod:preview
이는 아마도 Redis의 복사본을 로컬에서 실행하는 가장 쉬운 방법일 것입니다. 다른 옵션은 Redis Cloud를 직접 사용하고 애플리케이션을 온라인으로 배포하는 것입니다. 이는 제가 아직 조사 중인 옵션이며, 성공하게 되면 전체 앱을 배포하고 알려드리겠습니다.
마감
이 문서에서는 게시/구독 메시징 패턴 주제를 소개했습니다. 낮은 결합 아키텍처와 실시간 메시징 기능을 갖춘 고성능 애플리케이션을 구축하려면 특히 게시/구독 패턴과 Redis 사용을 고려한다는 점을 기억하는 것이 중요합니다.
실제로 Redis를 사용하는 실제 애플리케이션 중 상당수는 대시보드 기반입니다. 이는 일반적으로 다양한 데이터를 표시하고 종종 실시간으로 업데이트되는 멋진 대시보드 화면이 있다는 것을 의미합니다.
예를 들어, 특정 지역의 교통 상황을 보여주는 시스템을 상상해 보세요. 이러한 종류의 소프트웨어는 pub/sub의 장점을 활용하기 위한 완벽한 후보입니다. 그리고 많은 경우 이는 Redis를 사용하여 달성됩니다.
어떤 경우든 개발자와 엔지니어로서 우리는 항상 작업 중인 프로젝트의 특정 요구 사항을 따라야 합니다. 새로운 패턴이나 기술을 도입하기로 결정할 때마다 신중하게 수행하고 진지한 연구를 통해 이를 뒷받침해야 합니다.
무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요