카우치베이스 라이트 2.8 릴리스 는 즉시 사용 가능한 엔터프라이즈급 P2P 데이터베이스 동기화 솔루션에 대한 지원을 발표했습니다. 이 새로운 기능을 사용하면 클라우드 기반 제어 지점 없이도 Couchbase Lite 지원 모바일 및/또는 비모바일 임베디드 앱 간에 직접 동기화할 수 있습니다.

이 글에서는 이 기능에 대한 개요를 제공하고 두 클라이언트 간에 피어 투 피어 동기화를 얼마나 쉽게 설정할 수 있는지 보여드리겠습니다. 자세한 내용은 문서 페이지에서 플랫폼별 API 및 샘플 코드 스니펫을 확인할 수 있습니다.

첫째, 몇 가지 사용 사례 ...

사용 사례

서로 협업할 수 있는 기능이 필요한 연결되지 않은 환경의 앱 사용자는 피어 투 피어 데이터베이스 동기화에 적합한 대상입니다. 다음은 몇 가지 예시입니다.

  • 현장 앱 :
    건설 현장의 현장 작업자, 재해 복구 지역의 자원봉사자, 광부, 이동 진료소의 의료진은 인터넷 연결 없이도 근거리 통신망을 통해 서로 협업하고 작업을 조정할 수 있습니다.
  • 여행 :
    기내식 주문 업데이트를 담당하는 승무원은 기내에서 다른 승무원에게 자동으로 동기화되는 재고 정보를 업데이트할 수 있습니다. 이렇게 하면 승무원은 마지막 기내식이 제공된 후에는 기내식을 제공하지 않습니다.
  • 호스피탈리티 :
    레스토랑의 식사 주문 워크플로우를 자동화할 수 있습니다. 서버는 고객 테이블 옆을 떠나지 않고도 모바일 디바이스에서 주문을 받아 주방으로 전송하고, 주문 상태를 확인하고, 결제 등을 처리할 수 있습니다.
  • 해양 :
    선박/선박에 탑승한 승무원은 장비 메트릭을 기록하고 다른 승무원과 실시간으로 동기화하여 실시간으로 의사 결정을 내릴 수 있습니다.

일반적인 배포

아래는 연결이 끊긴 환경에서 피어 투 피어 데이터베이스 동기화를 위해 Couchbase를 사용하는 일반적인 배포 예시입니다. 연결이 끊긴 환경 또는 '엣지'는 백엔드 클라우드 기반 서버에 연결하지 않고도 자율적으로 작동할 수 있습니다. 그러나 인터넷에 연결되어 있는 경우, 연결이 끊긴 엣지에서 다음과 같은 변경 사항이 발생할 수 있습니다. 동기화 동기화 게이트웨이를 통해 원격 Couchbase 서버와 연결합니다.

카우치베이스 라이트 클라이언트는 다양한 토폴로지로 구성할 수 있습니다. 한 클라이언트를 기본 제어점 또는 수신기로 지정하고 다른 클라이언트가 지정된 수신기를 통해 서로 통신할 수 있는 스타 토폴로지가 될 수 있습니다. 또는 모든 클라이언트가 동일한 네트워크의 다른 모든 클라이언트에 직접 연결되는 연결된 메시 토폴로지로 클라이언트를 구성할 수도 있습니다.

피어 투 피어 워크플로

피어 투 피어 동기화는 웹소켓 기반이며 IP 기반 네트워크를 통해 작동합니다. 원격 동기화 게이트웨이와 동기화하는 데 사용되는 것과 동일한 프로토콜입니다. 다음은 카우치베이스 라이트와 피어 투 피어 데이터 동기화의 높은 수준의 워크플로입니다. 참여하는 모든 피어는 다음과 같은 역할을 수행합니다. "패시브 피어" 는 일반적인 클라이언트-서버 통신의 서버 및/또는 "활성 피어" 일반적인 클라이언트-서버 통신에서 클라이언트에 비유할 수 있습니다. 앱은 능동적 및 수동적 피어 역할을 모두 수행할 수 있습니다.

  1. 그리고 웹소켓 리스너 는 동기화할 카우치베이스 라이트 데이터베이스와 함께 패시브 피어에서 초기화됩니다. 포트, 네트워크 인터페이스, TLSIdentity 등을 지정하는 기능을 포함하여 여러 가지 구성 가능한 옵션을 사용할 수 있습니다.
  2. 구성 가능한 옵션 중 하나 리스너 는 리스너가 활성 피어에서 자격 증명을 받을 때 호출되는 인증자 콜백 함수입니다. 이 리스너 인증자 콜백 함수는 앱에서 구현해야 하며 클라이언트 자격 증명을 인증하는 로직을 포함해야 합니다.
  3. 패시브 피어는 서비스를 광고합니다. 이 단계는 전적으로 앱 내에서 처리되며 Couchbase Lite는 여기서 역할을 하지 않습니다. 일반적으로 앱은 다음과 같은 플랫폼별 파티 프레임워크를 활용합니다. NSNetService 를 사용해야 합니다. 실제로 배포에 따라 이 단계는 선택 사항일 수 있습니다. 예를 들어, 장치가 고정 IP 주소로 구성되거나 DNS가 지원되는 경우 클라이언트가 잘 알려진 URL에서 수신 대기 중일 수 있습니다.
  4. 활성 피어 또는 클라이언트가 연결할 수동 피어를 찾습니다. 다시 말하지만, 이 단계는 전적으로 앱 내에서 처리되며 Couchbase Lite는 여기서 역할을 하지 않습니다. 일반적으로 앱은 다음과 같은 플랫폼별 파티 프레임워크를 활용합니다. NSNetService 를 사용할 수 있습니다. 물론 리스너 가 잘 알려진 주소에서 수신 중인 경우 이 단계는 선택 사항입니다.
  5. 활성 피어가 연결할 피어를 식별하면 다른 엔드포인트에 대한 복제 연결을 설정해야 합니다. 피어 투 피어 동기화를 위한 리플리케이터는 원격 동기화 게이트웨이에 대한 연결을 설정하는 경우와 똑같은 방식으로 구성됩니다.
  6. 연결 설정의 TLS 핸드셰이크의 일부로 서버 인증서가 인증됩니다. 이 과정은 앱에 투명하게 이루어집니다.
  7. 서버 인증서가 인증되면 클라이언트 자격 증명이 수신자에게 전송되어 인증이 이루어집니다. 카우치베이스 라이트는 기본 인증과 클라이언트 인증서 기반 인증을 모두 지원합니다. 인증.
  8. 수신 자격 증명이 등록되어 있는 리스너 인증자 에서 인증을 받습니다. 인증이 완료되면 피어 간에 통신 채널이 설정됩니다.
  9. 그 후, 데이터베이스에 문서가 변경될 때마다 데이터 변경 사항이 자동으로 다른 쪽 끝으로 동기화됩니다. 데이터 전송 방향은 단방향 또는 양방향으로 구성할 수 있습니다.

동기화 기술의 속성

동기화를 올바르게 수행하는 것은 어렵습니다. 몇 가지 고려해야 할 사항이 있으며, 피어 투 피어 동기화가 어떻게 이루어지는지에 대한 치트 시트가 있습니다. P2P 동기화 관련 문서 자세한 내용

기능 카우치베이스 라이트 피어투피어 동기화
보안 TLS 암호화를 즉시 지원합니다. 인증서 기반 인증. 기본 인증. 앱이 TLS 암호화를 위해 0줄의 코드만 작성하면 됩니다.
네트워크 복원력 기하급수적인 백오프로 재시도합니다. 연속 복제는 무한정 재시도하는 반면, 원샷 복제는 특정 시도 횟수 후 포기합니다.
효율성 델타 동기화 기술을 사용하여 변경된 문서 부분만 동기화하여 데이터 전송 비용을 최적화하세요.
데이터 충돌 기본 제공. 기본적으로 충돌은 사전 정의된 정책을 사용하여 자동으로 해결됩니다. 또한 앱은 충돌을 처리하기 위해 자체 사용자 지정 양방향 병합 기능을 유연하게 지정할 수 있습니다.
개발자 사용 편의성 몇 줄의 코드만으로 피어투피어 동기화를 시작할 수 있습니다. 물론 필요에 따라 사용자 지정할 수 있는 다양한 구성 옵션이 있습니다.
멀티 플랫폼 지원 카우치베이스 라이트는 다양한 모바일 및 비모바일 플랫폼에서 지원됩니다. 피어 투 피어 데이터 동기화 기능을 통해 이기종 플랫폼 간 동기화(예: Android 앱과 iOS 앱 간 동기화)가 가능합니다.
유연한 토폴로지 참여하는 모든 피어는 리스너 또는 리플리케이터 또는 둘 다의 역할을 할 수 있으므로 피어 투 피어 동기화에 참여하는 Couchbase Lite 클라이언트는 스타, 메시 등과 같은 다양한 토폴로지로 구성할 수 있습니다. 선택은 앱의 필요에 따라 달라집니다.

시작하기 코드

저희의 튜토리얼 페이지 에서 피어 투 피어 동기화 기능을 보여주는 완전한 앱을 확인하세요. 하지만 여기서는 동기화를 시작하는 데 필요한 최소한의 코드만 소개하여 앞서 설명한 워크플로우를 얼마나 쉽게 진행할 수 있는지 직접 확인할 수 있도록 하려고 합니다. 이 스니펫은 iOS용이지만 다른 Couchbase Lite 플랫폼에 매핑하는 것은 간단합니다.

패시브 피어

다음 코드 스니펫은 들어오는 피어 연결을 수신 대기하는 수동 피어에서 리스너를 초기화합니다.

활성 피어

다음 코드 스니펫은 다음에 대한 리플리케이터를 초기화합니다. 보안 피어 투 피어 동기화. 원격 엔드포인트에 복제할 때 사용되는 리플리케이터 로직과 동일합니다.

끝입니다! 몇 가지 간단한 단계만 거치면 Couchbase Lite로 안전한 피어투피어 동기화를 시작할 수 있습니다.

2.1의 피어투피어 동기화는 어떻게 되나요?

Couchbase Lite로 작업해 본 적이 있다면 아마도 피어 투 피어 동기화 기능 에 소개된 2.1 릴리스 를 출시했습니다. 2.1 릴리스에서는 다음과 같이 메시지 엔드포인트 연결 앱에서 구현해야 하는 인터페이스 정의. 카우치베이스 라이트 리플리케이터는 이 인터페이스를 통해 앱과 통신하여 동기화해야 하는 데이터 변경 사항을 제공했습니다. 데이터를 수신하는 피어로 전송하는 방법은 전적으로 앱에 달려 있었습니다. 인터페이스를 제공함으로써 앱 개발자는 원하는 통신 프레임워크를 사용할 수 있는 유연성을 확보할 수 있었고, 모든 전송(IP 또는 비IP)에서 사용할 수 있었습니다.

2.8에서는 IP 네트워크를 통한 피어 투 피어 동기화를 위한 기본 구현을 제공하여 작업을 대폭 간소화했습니다. 곧 보시겠지만, 몇 줄의 코드만 입력하면 바로 시작할 수 있습니다. 이 메시지 엔드포인트 연결 인터페이스는 계속 지원됩니다. 따라서 이미 2.1에서 제공된 동기화 솔루션을 구현한 경우에는 새 API를 사용하기 위해 솔루션을 마이그레이션할 필요가 없습니다. 사실, IP 기반이 아닌 네트워크를 통해 동기화하는 경우에는 여전히 이 방법만이 유일한 옵션입니다. 그러나 IP 네트워크를 통해 동기화하는 경우에는 앱 코드를 크게 간소화하고 테스트 및 유지 관리 비용을 절감할 수 있으므로 권장됩니다.

 

다음 단계

Couchbase는 연결이 끊긴 환경에서 클라이언트가 서로 직접 통신할 수 있는 유일한 P2P 데이터베이스 동기화 솔루션입니다.

다음을 수행할 수 있습니다. 카우치베이스 라이트 다운로드 를 클릭하고 기능을 무료로 사용할 수 있습니다.

자세한 내용을 알아보려면 여기에서 자세한 정보를 확인할 수 있습니다.
문서 피어 투 피어
튜토리얼: 피어 투 피어
솔루션 페이지: 피어 투 피어 솔루션
데모로 비디오 연결하기: Couchbase Lite를 사용한 피어 투 피어 동기화

그리고 카우치베이스 포럼 는 질문이 있을 때 연락하기 좋은 곳입니다. 아래에 댓글을 남기거나 다음을 통해 언제든지 문의해 주세요. 트위터 또는 이메일 보내기

 

작성자

게시자 프리야 라자고팔, 제품 관리 부문 선임 이사

프리야 라자고팔은 클라우드 및 엣지용 개발자 플랫폼을 담당하는 Couchbase의 제품 관리 수석 이사입니다. 그녀는 20년 이상 여러 기술 및 제품 리더십 직책을 맡으며 전문적으로 소프트웨어를 개발해 왔으며, 그중 10년 이상은 모바일 기술에 집중했습니다. TISPAN IPTV 표준 대표로서 IPTV 표준 사양에 핵심적인 기여를 했습니다. 네트워킹 및 플랫폼 보안 분야에서 22개의 특허를 보유하고 있습니다.

댓글 하나

  1. 카우치베이스가 안드로이드 플랫폼에서 피어 투 피어 모바일 동기화를 포기한 것으로 알고 있습니다. 문서를 살펴 보았지만 작동하도록 할 수 없었습니다. 유일한 데모 예제는 Ios와 Xamarin입니다. 양방향 통신에 대한 간단한 데모 예제를 안드로이드 커뮤니티에 제공하는 것이 왜 그렇게 구현이 간단한지 모르겠습니다. 이제 카우치베이스를 포기할 준비가 되었습니다.

댓글 남기기