모바일 앱은 충분히 어렵습니다. 툴킷에 라이브러리를 하나만 추가해도 빌드 프로세스에 시간이 더 걸릴 수 있습니다. 그렇다면 MobileSync란 무엇이며 왜 시간을 투자해야 할까요? 간단히 답하자면 동기화는 모든 단계에서 네트워크 프로그래밍에 대한 관례적인 부담 없이 분산된 데이터에 액세스할 수 있도록 해줍니다. 애플리케이션에서 사용자 데이터를 가져오고 저장하기 위해 네트워크 호출을 하는 경우 다음과 같은 동기화 라이브러리를 사용하면 됩니다. 카우치베이스 라이트 를 사용하면 개발 시간과 좌절감을 줄이는 동시에 더 빠르고 안정적인 사용자 인터페이스와 같은 추가적인 이점을 얻을 수 있습니다.
동기화는 사람마다 다른 의미로 사용됩니다. 아마도 가장 널리 알려진 동기화 시스템은 여러 대의 컴퓨터에서 파일을 동기화하고 공유하는 데 사용되는 Dropbox 클라우드 서비스일 것입니다. Dropbox 용량만 충분하다면 팀원들과 파일을 공유할 수 있는 좋은 방법입니다.
동기화와 일반 클라우드 데이터 스토리지의 차이점은 동기화는 데이터를 사전에 장치로 가져오는 반면, 클라우드 스토리지는 일반적으로 요청에 따라 액세스한다는 점입니다. Dropbox에서는 오프라인 상태에서도 파일을 수정하고 새 파일을 만들 수 있습니다. 다시 연결하면 변경한 내용이 클라우드에 동기화되고 새 파일이 다운로드됩니다. 따라서 사용자(및 애플리케이션 프로그래머)는 네트워크 연결 상태에 대해 걱정할 필요가 없습니다.
모바일 애플리케이션 개발자는 데이터베이스 동기화(예: 카우치베이스 라이트)를 사용하면 각 사용자 입력 작업에 따라 개별 네트워크 요청을 트리거할 필요 없이 로컬에서 구조화된 데이터를 사용할 수 있습니다. 따라서 개발자는 네트워크 API가 아닌 비즈니스 로직에 집중할 수 있습니다.
동기화의 가장 큰 장점은 네트워크 계층을 통한 추상화로 애플리케이션 개발자가 네트워크 연결 상태에 관계없이 데이터와 상호 작용할 수 있다는 점입니다. 이것이 큰 장점이라면 어떤 종류의 앱이 동기화를 사용해야 할까요?
* 최소한의 서버 측 코딩으로 여러 디바이스와 운영 체제에서 사용자 데이터(작성된 콘텐츠, 그림, 게임 데이터 등)를 사용할 수 있어야 하는 경우.
* 사용자가 연결이 끊어졌을 때 데이터를 편집하고 다시 연결할 때 기록 시스템과 조정하기를 원합니다. (항공사 조종사, 자원 추출, 배달, 의료 서비스 등)
* 복잡한 데이터 유형(및 단순한 데이터 흐름)을 가진 애플리케이션. 메시징과 게임 내 분석 기능이 통합된 턴 기반 단어 게임을 하는 경우 동기화를 통해 작업을 간소화할 수 있습니다. 이 사용 사례에 대한 예시 앱이 곧 제공될 예정입니다.
* 잡지 등의 콘텐츠 전송 HTML5 인터랙티브 매거진과 같은 콘텐츠를 제공하는 경우 동기화를 통해 인터랙티브 콘텐츠를 쉽게 추가할 수 있습니다.
이와 같은 앱을 만들고 동기화를 사용하려는 경우 스스로에게 한 가지 질문을 던져야 합니다: "각 사용자에게 어떤 데이터가 중요한지 예측할 수 있는가?"
게임 앱에서는 현재 플레이 중인 게임의 상태와 상대방의 사용자 프로필 데이터, 사진 공유에서는 각 친구의 최근 사진, 파일럿의 경우 오늘 비행에 대한 데이터 등 매우 쉬운 앱도 있습니다.
관계형 데이터베이스를 이미 사용하고 있는 기존 웹 앱은 JSON 문서 저장소를 이미 사용하고 있는 앱보다 동기화를 준비하는 데 더 많은 작업이 필요할 수 있습니다. 또는 앱에서 각 요청의 유효성을 검사하기 위해 복잡한 백엔드 로직을 실행해야 하는 경우 동기화를 활성화하기가 쉽지 않을 수 있습니다. 마찬가지로 동기화는 사용자가 주제에 대한 초기 검색 쿼리에 대해서는 도움이 되지 않습니다. 하지만 앱에 저장된 검색 기능이 있는 경우 동기화를 사용하면 결과 집합을 점진적으로 업데이트하는 데 유용할 수 있습니다.
Couchbase 동기화 기술을 사용하는 대규모 커뮤니티가 있습니다. 메일링 리스트에 가입하여 당사에 대해 알아보세요.또는 시작할 준비가 되었다면 이 튜토리얼을 사용해 보세요.
동기화에서 제가 어려움을 겪고있는 것은 하나의 버킷을 사용하는 경우 해당 버킷 전체가 동기화되어야하지 않습니까?.. (사용자 특정 데이터와 다른 모든 사용자 데이터) 동기화되는 항목에 선택적 필터가 있어야한다고 생각합니다. 사용자 당 버킷은 최소 2,000 명의 사용자를 원하기 때문에 불가능 해 보입니다... 그것을 관리하고 적절한 크기를 조정하는 방법을 알아 내고 싶지 않습니다... 이것을 조사해야합니다 :)
동기화 게이트웨이를 통해 클라이언트는 동기화 대상을 필터링할 수 있습니다. 버킷에 있는 문서는 '채널'에 태그가 지정되고 할당되며, 동기화 연결을 하는 클라이언트는 현재 관심 있는 채널을 지정합니다. 사용자가 볼 수 있는 채널을 제어하는 ACL도 있습니다.
이 모든 기능은 현재 개발 중이며 프리 알파 단계이지만 프로젝트의 README에서 개요를 확인할 수 있습니다:
https://github.com/couchbasela…