중요 참고: 이 블로그 게시물에는 다음과 같은 개발자 미리 보기 CURL 함수에 대한 정보가 포함되어 있습니다. 이벤트. 카우치베이스 서버 6.5에서 CURL 함수가 변경될 예정입니다. 이벤트 서비스와 함께 cURL 사용하기: 업데이트 에서 자세한 내용을 확인하세요.

이벤트는 카우치베이스 서버에서 사용할 수 있는 새로운 서비스입니다. 신시내티 레즈는 이 기능을 사용하여 VIP 고객에게 보다 신속하게 서비스를 제공하고자 합니다. 한 명 이상의 VIP에게 컨시어지가 할당됩니다. VIP가 야구장에 입장하면 컨시어지에게 문자 메시지가 전송됩니다. 그러면 컨시어지는 좌석에서 VIP를 만날 수 있습니다.

개념 증명을 위해 함수(Eventing의 일부)를 사용하여 문자 메시지를 보내는 예제를 만들었습니다. 저는 트윌리오 평가판 계정 를 클릭해 메시지를 보냅니다. I 하지 마십시오. 생산 시스템에서 Twilio를 사용할 계획인지 문자 메시지를 사용할 계획인지 알 수 없었습니다. 하지만 Twilio는 무료이고 쉽게 시작할 수 있기 때문에 개념 증명에 사용하기로 결정했습니다. HTTP API만 있으면 원하는 메시징/알림 서비스를 사용할 수 있습니다.

이벤트 리뷰

여기서 이벤트에 대한 모든 세부 정보를 제공하지는 않겠습니다. 이미 제 동료들이 블로그에 많이 포스팅한 내용입니다. 자세한 내용은 해당 포스팅을 꼭 확인해 보세요:

하지만 간단히 설명하면 이렇습니다: 카우치베이스 함수(Eventing의 일부)를 사용하면 문서 생성/업데이트/삭제에 응답하는 JavaScript 함수를 작성할 수 있습니다. 이러한 함수 내에서 문서를 읽고, 문서를 (다른 버킷에) 쓰고, N1QL 쿼리를 실행하고, 다른 버킷에 curl 함수를 사용하여 HTTP 엔드포인트에 요청할 수 있습니다. 참고: 컬 구조는 아직 개발 중입니다. 이 기능은 개발 목적으로만 사용되며 프로덕션 환경에서는 사용해서는 안 됩니다.

위의 블로그 포스팅을 종합하여 Reds를 위한 이벤트 개념 증명을 만들려고 합니다.

티켓 스캔

첫 번째 단계는 게이트에서 고객의 티켓을 스캔하는 것입니다. 저는 다음과 같은 프로그램을 작성했습니다. 시뮬레이션 를 입력합니다. 그러면 Couchbase의 '티켓' 버킷에 무작위로 '티켓스캔' 문서가 생성됩니다.

티켓을 스캔하기 전에 버킷을 몇 가지 데이터로 미리 채워야 했습니다.

저는 1번부터 9번까지의 고객을 VIP로, 그 외의 고객은 '일반 고객'으로 정했습니다.

재미있는 점: 이 VIP들은 모두 실제 레드삭스 팬입니다!

또한 3명의 컨시어지를 만들어 VIP를 나눠서 관리했습니다.

위의 예에서는 고객 1, 2, 9를 "Matt Groves"에게 배정하고 있습니다. 즉, 조지 클루니, 조쉬 허처슨, 라이언 콜린스가 컨시어지 Matt Groves가 관리하도록 배정된 VIP입니다. (바꾸기 _yourVerifiedNumber Twilio에서 확인한 전화번호로).

또한 문서에 Twilio 자격 증명을 저장하고 있습니다. 이렇게 한 이유는 Couchbase 함수 내부에 자격 증명이 필요하고 거기에 하드 코딩하고 싶지 않았기 때문입니다. 자격 증명 문서는 다음과 같습니다:

새 "티켓 스캔" 문서를 만드는 콘솔 앱을 만들었습니다. 이 앱을 실행할 때 VIP 스캔 또는 "일반 조" 스캔을 만들도록 선택할 수 있습니다.

티켓 스캔 문서에는 고객 문서의 ID, 타임스탬프, 좌석 번호의 세 가지 필드만 포함됩니다.

이벤트 기능

이 이벤트 예제의 핵심은 함수입니다. 이 함수를 만들 때는 아래 그림과 같이 "notifyConcierge"라는 함수를 만들었고, "tickets_metadata" 버킷을 사용했습니다. 가장 중요한 것은 "tickets" 버킷의 별칭을 만들어 "src"라고 불렀다는 점입니다. 함수 내에서 이 버킷은 읽기 전용이지만 고객 및 컨시어지 정보와 Twilio 자격 증명을 가져오는 데 필요합니다.

Creating a function in eventing

그리고 전체 함수는 깃허브에서 확인할 수 있습니다.. 다음은 기능에 대한 단계별 분석입니다:

1 - 변경된 문서가 티켓스캔인가요? 그렇다면 계속 진행합니다. 그렇지 않은 경우 이 함수는 이를 무시할 수 있습니다.

2 - 이 티켓을 스캔한 고객이 VIP인가요? 그렇다면 컨시어지의 세부 정보를 확인한 후 계속 진행하세요. 그렇지 않으면 무시하세요. 이 부분의 함수에서 인라인 N1QL을 주목하세요. 이는 카우치베이스 함수에서 사용되는 자바스크립트 특유의 기능입니다.

3 - VIP의 세부 정보를 확인합니다.

4 - Twilio 자격 증명을 받습니다.

5 - 메시지 작성(VIP의 이름, 좌석 번호, 컨시어지 이름 포함). 데이터 는 Twilio의 API를 사용하는 데 필요한 최소한의 정보입니다.

6 - Twilio API를 사용하여 컨시어지에게 문자 메시지를 보냅니다. 컬 구조는 아직 개발 중입니다. 이 기능은 개발 목적으로만 사용되며 프로덕션 환경에서는 사용해서는 안 됩니다.

이벤트 실행 중

이제 티켓 스캔 문서가 생성되거나 수정될 때마다 컨시어지에게 휴대폰으로 알림이 전송됩니다. 다음은 티켓 스캔부터 SMS 알림까지 전체 데모의 예시입니다:

Eventing demonstration using SMS

이 이미지에서는 4개의 티켓 스캔을 생성하고 있습니다. 첫 번째는 VIP용, 다음 두 개는 일반 조스용, 마지막은 VIP용입니다. 두 개의 문자 메시지가 나타납니다. 실제로는 각기 다른 휴대폰에 표시되지만 테스트를 위해 모든 알림을 하나의 번호로 전송하고 있습니다. 참고: 저는 join.me 를 클릭하여 콘솔과 나란히 라이브 Android 화면을 표시합니다.)

문제가 발생하는 경우 다행히도 Couchbase의 함수에서 디버깅을 사용할 수 있다는 점이 다행입니다. 자바스크립트에서 중단점을 설정하고 Chrome과 같은 도구를 사용하여 단계별로 진행할 수 있습니다. 이에 대한 자세한 내용은 이벤트 공지 게시물.

요약

이 기능을 카우치베이스의 이벤트 시스템에서 실행하면 VIP에 대한 새로운 티켓 스캔이 발생할 때마다 문자 메시지 알림이 트리거됩니다. 티켓 스캔 시스템은 데이터가 Couchbase에 저장되는 한 Twilio에 대해 아무것도 알 필요가 없습니다. 또한 다음과 같은 경우 기타 시스템이 티켓 스캔 문서를 만들면 거기서도 SMS가 트리거됩니다. 로직은 다음과 같습니다. 닫기 를 데이터에 추가합니다.

이것으로 신시내티 레즈 시리즈 포스팅을 마무리합니다(현재로서는). 시리즈의 다른 두 게시물은 다음과 같습니다:

아래에 댓글을 남기거나 다음에서 저를 찾아주세요. 트위터 @mgroves. Go Reds!

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 하나

  1. 좋은 블로그 게시물과 블로그 타이밍이 좋았습니다!

  2. 함수에서 오류를 기록/디버깅하는 방법. 기본적으로 작동하지 않는 경우 디버깅할 위치.

    1. Jon Strabala, 수석 제품 관리자, Couchbase 10월 21, 2019에서 3:20 오후

      로깅/디버깅 정보는 다음을 참조하세요. https://docs.couchbase.com/server/6.0/eventing/eventing-debugging-and-diagnosability.html (베타 버전을 사용하는 경우 6.5로 대체).

댓글 남기기