카우치베이스 서버

솔라스 이벤트 브로커 및 카우치베이스를 사용한 이벤트 중심 아키텍처

비동기 이벤트 중심 아키텍처가 Couchbase 설계의 핵심입니다. 문서 변경 사항은 지속적으로 Couchbase 인덱스, Analytics로 스트리밍됩니다, 이벤트 및 검색 서비스.

이 아키텍처는 Couchbase 서비스가 실시간으로 업데이트되도록 보장하며, 이벤트 중심 아키텍처에 Couchbase를 원활하게 통합할 수 있도록 지원합니다.

이 블로그 게시물에서는 카우치베이스와 이벤트 브로커를 통합하는 방법을 설명합니다. 이 게시물에서는 인기 있는 Solace PubSub+ 메시지 브로커와 같은 다른 메시징 제품과의 통합은 매우 유사합니다.

아키텍처 개요

Couchbase는 Couchbase SDK 및 Kafka용과 같은 다양한 Couchbase 커넥터를 사용하여 다른 시스템과 상호 작용할 수 있습니다. 이 통합을 위해 저희는 다른 접근 방식인 Couchbase Eventing Service를 사용합니다. Eventing Service를 사용하면 JavaScript 함수를 트리거하여 데이터의 변경(변이)에 대해 즉시 조치를 취할 수 있습니다. Eventing Service는 기본적으로 cURL을 지원하며, JavaScript 리스너에서 직접 외부 REST 서비스를 호출할 수 있습니다.

이 기능을 사용하여 REST 메시징 API를 사용하여 Solace PubSub+에 데이터를 전송합니다. 메시지는 구독자가 사용할 수 있는 Solace 토픽으로 전송됩니다.

이 통합에서는 다음과 같은 기능을 구현합니다. 단방향 POST 를 Solace로 전송합니다(아래 그림 참조). 여기서 Couchbase Eventing 함수는 다음과 같이 HTTP POST 를 메시지 본문에 문서와 함께 Solace PubSub+ 이벤트 브로커에 전송합니다. 이벤트 브로커는 메시지 수신을 확인합니다. HTTP 200 확인 응답을 보냅니다. 이제 이 메시지는 솔라스 이벤트 브로커의 손에 넘어가 소비자들이 토픽에 대한 메시지를 구독할 수 있습니다.

Consumers subscribe to the Topic.

그림 1. 카우치베이스에서 문서가 변경되면 이벤트 리스너가 트리거되어 HTTP POST를 통해 문서를 솔라스 토픽으로 전송합니다. 소비자는 토픽을 구독합니다.

Solace에서 메시지를 추가로 처리하거나 구독자가 JMS, MQTT 및 기타 프로토콜을 통해 토픽을 구독할 수 있습니다. 이 글에서는 REST 소비자를 사용합니다. 마이크로서비스는 Solace에서 REST 소비자 엔드포인트를 만들어 HTTP 콜백 엔드포인트를 제공함으로써 메시지를 소비할 수 있습니다. 콜백 엔드포인트는 새 메시지가 토픽에 추가될 때 호출됩니다.

샘플 애플리케이션

이를 시연하기 위해 Couchbase와 함께 기본 제공되는 데이터 세트를 사용하여 예제 시나리오를 구축했습니다. 여행 샘플 버킷.

테스트 시나리오에서는 다음과 같은 변경 사항을 게시하려고 합니다. 호텔 문서를 Solace에 추가합니다. 이 그림과 같이 마이크로서비스가 구독하고 변경 사항을 사용합니다.

샘플 애플리케이션 부분은 다음과 같습니다:

  1. A 카우치베이스 이벤트 기능 에 대한 모든 돌연변이에 대해 트리거됩니다. 호텔 문서에 추가합니다. 그러면 이벤트 함수가 호텔 문서를 솔라스 주제에 추가합니다. 
  2. 솔라스 이벤트 브로커 대기열 및 토픽과 REST 전송 구성을 포함합니다. 
  3. A REST 소비자 솔라스 토픽 구독

전제 조건

이 세 가지 전제 조건은 샘플 애플리케이션과 함께 따라야 합니다:

카우치베이스 7 엔터프라이즈 에디션

Couchbase를 단일 노드 클러스터로 실행할 수 있습니다. 도커에서 를 로컬 컴퓨터에 설치합니다.

개발 목적으로 단일 노드 카우치베이스 클러스터를 만듭니다(단일 노드 클러스터는 프로덕션용으로 사용하지 않는 것이 좋습니다). 단일 노드 클러스터에서 Couchbase를 설정할 때 Eventing 및 Data 서비스를 포함하세요.

Solace PubSub+ 이벤트 브로커 클라우드

무료로 가입하기 Solace 클라우드 평가판 을 클릭하고 서비스/VPN을 생성합니다. VPN 구성은 뒷부분의 지침에서 설명합니다.

REST 소비자

다음을 허용하는 HTTP 엔드포인트가 필요합니다. HTTP POST 요청을 처리합니다. Solace PubSub+ 클라우드를 사용하므로 REST 소비자는 인터넷에서 액세스할 수 있어야 합니다.

자체 REST 소비자를 호스팅하는 대신 다음을 받을 수 있는 무료 서비스(예: Beeceptor)를 사용할 수 있습니다. HTTP POST 요청하고 승인합니다. HTTP 200 응답을 확인합니다. 이것이 통합이 제대로 작동하는지 확인하는 데 필요한 모든 것입니다. 보다 광범위한 테스트를 수행하려는 경우 자체 REST 소비자 마이크로서비스를 작성할 수 있습니다.

이를 위해 다음 주소로 이동하세요. Beeceptor.com 을 클릭하고 엔드포인트 이름을 구성합니다. 이 예에서는 cbtest 를 엔드포인트로 지정합니다.

엔드포인트 주소를 캡처합니다: https://cbtest.free.beeceptor.com나중에 Solace에서 수신 엔드포인트를 구성할 때 필요합니다.

구성

전제 조건이 준비되었으므로 이제 샘플 애플리케이션을 위한 다양한 서비스를 설정할 차례입니다.

솔라스 설정

먼저 해당 토픽, 대기열 및 REST 전송 엔드포인트를 생성하도록 Solace를 설정해야 합니다. Solace 클라우드에 가입한 후 서비스/VPN을 생성했는지 확인하세요. 

다음 각 단계는 스크린샷과 함께 설명되어 있어 따라할 때 구성이 어떤 모습이어야 하는지 보여줍니다.

설정 대기열 및 주제

카우치베이스 이벤트 서비스에서 보내는 메시지를 수신하도록 토픽을 구성해 보겠습니다.

Solace 관리 인터페이스에서 다음 항목으로 이동합니다. 대기열/토픽 엔드포인트 을 클릭하고 새 주제 엔드포인트 호출 T/rest/pubsub 기본 설정을 사용합니다.

Edit Topic Endpoint Settings

다음으로 다음으로 이동합니다. 대기열 라는 대기열을 만들고 Q/couchbase/입력. 기본값을 유지합니다.

Edit Queue Settings

이제 Q/couchbase/입력 편집 모드에서 대기열을 선택하고 구독 탭을 클릭합니다. 추가 T/rest/pubsub 주제 구독에 대한 Q/couchbase/입력 대기열.

Q/couchbase/input

대기열과 토픽이 준비되었으므로 이제 REST 클라이언트가 이를 구독할 수 있습니다.

다음으로 이동  클라이언트 연결 를 클릭하고 REST 탭을 클릭합니다. 새 REST 전송 엔드포인트 이름으로 RDPCouchbase. 기본값을 유지하고 새 엔드포인트를 사용하도록 설정하세요.

Edit REST Delivery Endpoint

새로 만든 엔드포인트로 이동하여 나머지 소비자 탭을 클릭합니다.

REST 소비자 이름으로 데모 소비자 그리고 활성화 소비자입니다.

REST 서비스를 사용할 원격 호스트 주소를 입력합니다. 전제 조건에 설명된 대로 자체 엔드포인트를 제공하거나 Beeceptor에서 무료 테스트 엔드포인트를 생성하세요.

원격 포트를 구성합니다. 포트 80에 Beeceptor를 사용하고 나머지 기본값은 그대로 유지합니다.

로 이동하여 쿼리 바인딩 탭의 RDPCouchbase REST 전달 지점을 설정하고 최근에 생성된 Q/couchbase/입력 대기열에 대한 바인딩을 추가합니다. 바인딩을 추가합니다. 요청 대상 게시, 를 입력하면 REST 수신기의 URL 경로에 해당합니다. 나는 /콜백.

Solace REST 구성 확인

Solace가 올바르게 구성되었는지, REST 메시지가 Solace에서 소비되고 REST 클라이언트로 전송될 수 있는지 확인하려면 다음 cURL 명령을 실행하세요:

호스트 이름과 자격 증명을 사용자 환경의 구성으로 바꿉니다.

이것으로 Solace 설정이 끝났습니다. 이제 메시지를 수신할 수 있는 토픽과 콜백 기능을 제공하는 REST 구독자가 생겼습니다.

카우치베이스 설정

이벤트 및 데이터 서비스를 실행하는 카우치베이스 노드를 통해 이벤트 함수를 만들 수 있습니다.

설치 여행 샘플 샘플 버킷(여기에서 문서를 참조하세요.). 

라는 이름의 버킷을 만듭니다. rr100 (상주 비율 100%의 경우) 및 범위 이름은 이벤트. 이 범위에서 다음과 같은 이름의 컬렉션을 만듭니다. 메타데이터.

rr100.eventing.metadata 는 이벤트 함수가 메타데이터를 저장하는 데 사용됩니다. 

Couchbase 버전 7 이전에는 메타데이터를 위한 전용 버킷을 만들어야 했습니다. 버전 7에서는 범위 및 컬렉션 지원을 활용하여 대신 이벤트 메타데이터 정보를 위한 전용 컬렉션을 만들 수 있습니다.

이벤트 서비스로 이동하여 다음을 클릭하여 새 이벤트 기능을 만듭니다. 기능 추가.

이벤트 리스너는 호텔 컬렉션의 인벤토리 범위 내에서 여행 샘플 버킷을 추가합니다. 이렇게 하면 문서가 버킷 내에서 변경될 때마다 호텔 컬렉션의 문서에 대한 변경 사항은 가져오지 않는 반면 다른 컬렉션이나 버킷의 문서에 대한 변경 사항은 가져오게 됩니다.

rr100.eventing.메타데이터 버킷은 이벤트 함수 메타데이터를 저장하는 데 사용됩니다.

그리고 curlSolaceRestUrl 는 수신하는 Solace REST 엔드포인트에 대한 URL 별칭을 지정합니다. Solace 설정 중에 만든 토픽을 나타내는 URL 경로를 포함한 전체 URL을 입력합니다. 예를 들면 다음과 같습니다: https://mrd3aaxn3oc4d.messaging.solace.cloud:9443/T/rest/pubsub

Solace 엔드포인트에는 인증이 필요합니다. 다음을 구성합니다. 기본 인증을 클릭하고 자격 증명을 제공합니다. 

(참고: Couchbase 7.0.X에는 cURL 자격 증명의 비밀번호를 잃어버릴 수 있는 버그가 있었습니다. 이벤트 함수 설정을 편집하고 "저장"을 수행하면 비밀번호를 다시 입력하면 이 문제를 방지할 수 있습니다.)

이제 OnUpdate() 자바스크립트 함수를 이벤트 구성으로 설정합니다. 카우치베이스는 문서가 변경될 때마다 이 함수를 트리거합니다. 호텔 컬렉션. 

이 간단한 예에서는 이벤트 서비스의 cURL 지원을 사용하여 모든 문서 변형을 Solace로 보냅니다. 실제 사용 사례에서는 일반적으로 일부 문서 속성을 기반으로 필터링을 적용하고 OnDelete 메서드를 사용하여 문서 삭제를 처리합니다.

샘플 애플리케이션 테스트

이제 샘플 애플리케이션을 테스트할 차례입니다:

  1. 시작하기 evt_sendto_solace 이벤트 리스너
  2. 다음으로 이동합니다. 문서 Couchbase 콘솔에서
  3. 를 선택하고 travel-sample.inventory.hotel 컬렉션을 수집합니다:
  4. 열기 호텔 문서로 이동하여 문서 필드를 편집하고 변경 사항을 저장합니다. 이 문서 변경은 이벤트 리스너가 수신하는 업데이트 이벤트를 트리거합니다.
  5. 이제 이벤트 리스너가 업데이트된 문서를 Solace로 보냅니다.
  6. 이제 Solace REST 소비자가 업데이트된 문서를 받았는지 확인할 수 있습니다. Solace가 REST 소비자에게 문서를 보낸 것을 확인합니다. /콜백 를 대기열 바인딩 중에 지정합니다.

호텔 문서에 대한 문서 변경 사항은 호텔 컬렉션은 이제 Solace에 게시된 후 Solace 구독자에게 전송됩니다.

카우치베이스 서비스는 데이터의 최종적인 일관된 보기를 지원하는 내부 데이터베이스 변경 프로토콜(DCP)에 의존합니다. DCP는 모든 변경 사항을 표시하지는 않지만 가장 최근의 변경 사항을 표시합니다. 예를 들어 다음과 같은 문서가 여행 샘플.inventory.hotel은 매우 빠르게 변이되므로 중간 변이 중 일부가 중복될 수 있으므로 이벤트 서비스에서 모든 변경 사항을 확인하지 못할 수 있습니다.

이 데모에 참여해 주셔서 감사합니다.

결론

이 문서에서는 Couchbase Eventing 서비스를 사용하여 Couchbase와 Solace 이벤트 브로커를 통합하는 방법을 설명합니다.

카우치베이스가 이벤트 중심 아키텍처에 어떻게 원활하게 통합되는지 알아보세요. 이제 보장되고 지속적인 메시징을 통해 Solace 플랫폼의 서비스 품질 측면을 최대한 활용할 수 있습니다.

이 예제의 이벤트 함수 로직은 적절한 오류 처리 없이 기본 cURL POST 요청으로 제한됩니다. 다음과 같이 구현해야 합니다. 오류 및 재시도 로직 프로덕션에 바로 사용할 수 있는 솔루션입니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Marian Puhl, Senior Solutions Engineer

Marian Puhl is a Senior Solutions Engineer at Couchbase in the Nordic region.

댓글 하나

  1. 컬 호출 시 "컬 호출 기능이 비활성화되었습니다."라는 오류 메시지가 표시됩니다. 활성화하는 방법에 대한 문서를 찾을 수 없습니다. 컬 기능은 "설정 -> 쿼리 설정 -> 고급 쿼리 설정 -> 컬 함수 액세스"에서 이미 활성화되어 있습니다. 이것은 Enterprise Edition 7.2.4 빌드 7070에 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.