이 블로그 게시물의 계획은 Couchbase Mobile의 동기화 게이트웨이 컴포넌트는 문서에 대한 클라이언트의 액세스 권한 제거를 처리합니다. 동기화 게이트웨이에 대해 조금 작성해 보겠습니다. 채널 를 통해 기초를 다질 수 있습니다. 동기화 게이트웨이와 채널에 이미 익숙하다면 앞부분을 훑어보셔도 됩니다.

동기화 게이트웨이 채널 이해

동기화 게이트웨이의 "접착제" 부분을 카우치베이스 모바일 스택에는 채널이라고 부르는 것에 문서를 할당할 수 있는 기능이 있습니다. 채널은 조직 및 보안 메커니즘의 역할을 합니다.

이 그래픽은 채널이 어떻게 작동하는지 이해하는 데 도움이 될 수 있습니다. 이 그래프는 동기화 게이트웨이가 복제하는 동안 채널에 문서를 공급하는 개념을 개념적으로 보여줍니다.

Symbolic: channels as pipes

동기화 게이트웨이를 통해 채널에 문서를 할당하는 것을 제어합니다. 동기화 기능. 다이어그램의 각 파란색 파이프는 채널을 나타냅니다. 녹색 화살표는 동기화 기능이 개별 문서를 원하는 수만큼 채널에 할당할 수 있다는 개념을 보여줍니다.

이를 통해 관련 문서를 그룹화하여 정보 흐름을 쉽게 정리할 수 있습니다. 예를 들어 앱의 각 사용자에 대한 채널을 만들 수 있습니다. 데이터 모델과 문서를 원하는 대로 변경할 수 있습니다. 각 문서에 사용자 ID를 태그하기만 하면 됩니다.

채널은 매우 유용하기 때문에 기본 동기화 기능에서 자동으로 생성되도록 했습니다. 이 기능은 채널의 존재 여부에 따라 문서를 채널 집합에 할당합니다. 채널 속성을 추가해야 합니다. 다시 말해, 동기화 기능을 제공하지 않으면 동기화 게이트웨이에서 다음과 같은 기능을 사용합니다:

(동기화 함수는 자바스크립트로 작성됩니다. 채널 는 동기화 게이트웨이에서 정의한 함수입니다.)

클라이언트가 채널을 사용하려면 복제를 설정할 때 원하는 채널을 요청하기만 하면 됩니다. 하지만 보안은 어떨까요? 클라이언트가 원하는 채널에 아무 채널이나 액세스할 수 있게 하면 안 됩니다.

동기화 게이트웨이는 인증된 클라이언트에게만 문서를 보냅니다. 이는 채널별로 이루어집니다. 인증된 사용자 ID 또는 사용자에게 할당된 역할을 기반으로 클라이언트를 인증할 수 있습니다.

이 다이어그램은 채널 할당(동기화 게이트웨이에서 수행), 채널 액세스 요청(복제 실행 중 클라이언트가 수행) 및 권한 부여가 결합되어 클라이언트가 가져올 수 있는 문서를 결정하는 방법을 시각적으로 보여줍니다.

Venn diagram showing accessible documents as intersection of Sync Gateway assigned documents, authorized access, and client requested channels

파란색 원은 동기화 기능이 문서를 할당하는 채널을 나타냅니다. 노란색 원은 클라이언트가 요청하는 채널을 나타냅니다. 마지막으로 빨간색 원은 사용자 또는 역할에 액세스 권한이 있는 채널을 나타냅니다. 녹색 부분은 클라이언트가 받게 될 문서를 나타냅니다.

하나, 아니, 두 가지 까다로운 문제

위의 설명은 모두 매우 간단해 보일 수 있습니다. 동기화 게이트웨이와 그 구성 방법에 대해 이해해야 할 것이 꽤 많이 있습니다. 사람들을 당황하게 만드는 두 가지 사례에 대해 이야기하면서 마무리하겠습니다.

읽기 및 쓰기 액세스

여기서 클라이언트와 동기화 게이트웨이의 관계가 대칭적이지 않다는 점에 유의하세요. 동기화 게이트웨이는 채널에 따라 문서를 공급하는 작업을 처리합니다. 클라이언트는 그렇지 않습니다. 이로 인해 클라이언트가 당길 수 없는 문서를 푸시(쓰기)할 수 있다는 이상한 결과가 발생합니다(읽기)! (복제가 일어나고 있음을 나타내고 데이터 흐름의 방향을 나타내기 위해 푸시 및 풀이라고 합니다.)

기본 동기화 기능을 사용 중이고 사용자 ID를 기준으로 가져오기 권한을 부여한다고 가정해 보겠습니다. 사용자 Alice가 문서를 만들고 "Bob"을 채널 속성을 추가합니다. 앨리스가 문서를 동기화 게이트웨이로 푸시하면 더 이상 문서를 가져올 수 없습니다. 동기화 게이트웨이가 새 수정본을 Bob의 채널에 할당합니다. 앨리스는 문서를 가져올 수 없지만 밥은 가져올 수 있습니다.

액세스 권한 분실

또 다른 엣지 케이스가 있습니다. 클라이언트가 문서에 대한 액세스 권한을 잃으면 어떻게 될까요? 방금 살펴본 것처럼 클라이언트가 원인을 제공했을 수도 있습니다.

카우치베이스 모바일은 다중 버전 동시성 제어라는 기능을 사용하여 오프라인 사용과 정교한 동기화로 인해 발생하는 모든 뉘앙스를 처리합니다. 액세스 권한을 잃는 것은 문서가 삭제되는 것과는 다릅니다. 또한 클라이언트에 이미 이전 버전이 있을 수도 있습니다.

카우치베이스는 문서의 특별 수정본을 생성하여 이를 처리합니다. 이 수정본은 내용이 없는 수정본입니다. 하지만 삭제된 문서를 표시하는 툼스톤과 달리 이 종류는 문서가 제거된 것으로 표시합니다. (이는 문서 메타데이터에 표시됩니다.)

대부분의 경우 Couchbase Lite는 문서가 존재하지 않는 것처럼 작동합니다. 예를 들어 쿼리에 표시되지 않습니다. 하지만 여전히 검색할 수 있는 방법이 있습니다. 문서가 제거되었는지 확인하려면 해당 문서의 .isGone() 메서드를 호출합니다. (참고로 툼스톤은 Couchbase Lite와 같은 클라이언트가 복제 중에 툼스톤을 가져올 때만 생성됩니다.)

마무리

동기화 게이트웨이는 그 자체로 다재다능한 소프트웨어입니다. 오프라인 사용을 완벽하게 지원하는 데이터 플랫폼에서 발생하는 몇 가지 까다로운 문제를 해결하는 데 핵심적인 역할을 하는 Couchbase Mobile의 핵심 구성 요소입니다.

몇 가지 중요한 팁과 함께 동기화 게이트웨이(채널)의 한 가지 측면을 맛보셨기를 바랍니다. 동기화 게이트웨이를 최대한 활용하려면 시간을 내어 다음을 살펴보세요. 문서.

포스트 스크립트

더 많은 리소스를 확인하세요. 개발자 포털 트위터에서 팔로우하세요 카우치베이스 개발.

질문에 대한 답변을 게시할 수 있습니다. 포럼. 그리고 다음에도 적극적으로 참여합니다. 스택 오버플로.

다음 주소에서 저를 개인적으로 팔로우할 수 있습니다. 호드그릴리

작성자

게시자 호드 그릴리, 개발자 옹호자, 카우치베이스

호드 그레이리는 실리콘밸리에 거주하는 카우치베이스의 개발자 옹호자입니다. 그는 소프트웨어 엔지니어 및 엔지니어링 관리자로서 20년 이상의 경력을 보유하고 있습니다. 그는 전산 물리학 및 화학, 컴퓨터 및 네트워크 보안, 금융, 모바일 등 다양한 소프트웨어 분야에서 일해 왔습니다. 2016년 카우치베이스에 합류하기 전에는 삼성에서 모바일 개발자 관계를 이끌었습니다. 컬럼비아 대학교에서 화학 물리학 박사 학위를 받았습니다.

댓글 남기기