개발자 커뮤니티는 다음과 같이 상당한 우려를 표명했습니다. MongoDB Atlas의 사용 중단 발표 의 엣지 및 모바일 기능에 대해 설명합니다. 이전에는 post에서 오프라인 우선 데이터 동기화 요구 사항을 지원하기 위한 강력한 대안으로 Couchbase Mobile이 적합한 이유를 살펴보았습니다.
이 게시물에서는 MongoDB Atlas 장치 동기화에서 Couchbase로의 일반적인 마이그레이션이 어떻게 이루어지는지에 대한 기술 개요를 제공합니다. 다음 사항에 중점을 두겠습니다. 카펠라의 완전 관리형 DBaaS 솔루션에서 논의된 개념은 다음과 같은 자체 관리형 배포에도 동일하게 적용됩니다. 카우치베이스 서버 그리고 카우치베이스 모바일.
마이그레이션 고려 사항
MongoDB 장치 동기화(Realm) 애플리케이션을 Capella 앱 서비스로 마이그레이션할 계획이라면 클라우드 서버 측 구성 요소와 모바일 애플리케이션 측면을 모두 고려하여 전체론적인 접근 방식을 취하는 것이 중요합니다.
참고: 아래 나열된 항목은 규범적인 것이 아니라 일반적인 고려 사항을 나타냅니다. 각 애플리케이션은 고유하므로 애플리케이션의 특정 요구 사항을 충족하도록 마이그레이션 프로세스를 사용자 지정해야 합니다.
다음부터 시작할 수 있습니다. 카우치베이스 카펠라의 무료 티어에는 호스팅 데이터 동기화 솔루션인 Capella 앱 서비스가 포함되어 있습니다. 마이그레이션의 유효성을 검사하고 프로덕션 배포 준비가 완료되면 다음 중 하나로 업그레이드할 수 있습니다. 유료 티어.
1. 데이터 모델링
MongoDB와 Couchbase는 모두 문서 데이터베이스이며 데이터를 JSON 형식으로 저장합니다. 하지만 MongoDB는 BSON이라는 바이너리 인코딩 형식으로 JSON 문서를 표현합니다. 확장 JSON 사양. 따라서 나중에 살펴보겠지만 Couchbase는 확장 JSON 형식의 문서로 작업할 수 있지만, 일반 JSON 문서로 작업하는 것이 더 간단합니다.
이 기회를 활용하여 마이그레이션한 애플리케이션에 적합한 데이터 모델과 이를 구성할 수 있는 방법을 결정하세요. 버킷, 범위 및 컬렉션. 예를 들어, 속성 이름을 건너뛰거나 변경할 수 있는데, 이는 Couchbase에서는 매우 사소한 작업입니다. 이벤트 서비스 기능.
2. 카펠라 클러스터 구성
배포 카펠라 클러스터 를 클릭하고 애플리케이션의 필요에 따라 구성하세요. 구성에는 최소한 쿼리, 검색 등과 같은 관련 서비스 설치, 클러스터 액세스 자격 증명 설정 및 IP 주소 허용 목록 설정. 허용된 IP 주소를 설정하는 것은 일반적으로 테스트 또는 평가 목적으로만 필요합니다. 프로덕션 환경에서는 다음과 같이 사설 네트워크를 통해 클러스터 액세스를 구성할 가능성이 높습니다. VPC 피어링 또는 비공개 링크.
3. 데이터 마이그레이션
MongoDB Atlas 클러스터에서 Capella 클러스터로 데이터를 마이그레이션하려면 몇 가지 옵션이 있습니다. 일회성 오프라인 데이터 마이그레이션을 수행할지 아니면 더 복잡한 온라인 데이터 마이그레이션을 선택할지에 따라 선택이 달라집니다. 온라인 데이터 마이그레이션은 특히 전환 중에 둘 다 애플리케이션을 활발하게 서비스하는 경우, 일반적으로 MongoDB Atlas와 Couchbase Capella 클러스터 간에 양방향 데이터 동기화가 필요합니다.
다음은 몇 가지 일반적인 옵션입니다:
내보내기/가져오기 유틸리티 사용 - 내보내기 를 사용하여 몽고DB 컬렉션을 카펠라로 가져오고 cbimport 도구를 사용하세요. 데이터가 확장 JSON 형식인 경우 다음을 사용하여 데이터 변환을 수행해야 합니다. 이벤트 서비스 기능 를 입력해야 합니다. 데이터가 JSON으로 되어 있더라도 대상 데이터 모델이 원본과 동일하지 않은 경우 데이터 변환을 실행해야 할 수 있습니다. 이 접근 방식은 일회성 데이터 마이그레이션에 이상적입니다.
엔터프라이즈 데이터 마이그레이션 도구 사용 - 다음과 같은 엔터프라이즈급 도구를 활용하세요. MOLO7의 Couchbase용 GlueSync 를 사용하여 데이터를 마이그레이션하세요. GlueSync와 같은 도구는 핫 마이그레이션과 콜드 마이그레이션을 포함한 데이터 마이그레이션을 강력하고 확장 가능한 방식으로 지원합니다. 여기를 확인하세요. 비디오 의 기능에 대한 개요와 마이그레이션을 지원하는 방법을 확인하세요.
오픈 소스 툴링 - 오픈 소스 커뮤니티에서 지원하는 Couchbase 유틸리티를 사용해 보세요, cbmigrate를 사용하여 데이터를 마이그레이션할 수 있습니다. 이 도구는 간단한 데이터 마이그레이션에 적합합니다. 이 도구는 다음을 위해 널리 사용되는 Couchbase IDE 확장에 통합되어 있습니다. VSCode 그리고 JetBrains. 따라서 이러한 IDE를 사용하여 애플리케이션을 빌드하는 개발자라면 이 옵션을 고려해야 합니다.
데이터가 마이그레이션되면 다음을 수행해야 할 수 있습니다. 적절한 인덱스 생성 를 클릭합니다.
4. 카펠라 앱 서비스 구성
앱 서비스 는 오프라인 우선 데이터 동기화를 담당하는 관리형 백엔드 서비스입니다. 클러스터를 설정한 후에는 App 서비스를 배포하여 구성된 클러스터에 연결해야 합니다. 앱 서비스의 설정은 애플리케이션의 특정 요구 사항에 따라 크게 달라집니다.
시간을 내어 애플리케이션의 요구 사항을 평가하고 애플리케이션이 올바르게 구성되었는지 확인하세요.
이 단계에 사용할 수 있는 자동 마이그레이션 도구는 없습니다. 하지만 저희가 도와드리겠습니다. 자동 마이그레이션 도구는 간단한 시작 가이드에서 샘플 데이터 세트를 사용하여 중요한 구성 측면을 다룹니다. 이 가이드는 핵심 개념에 익숙해지는 데 도움이 되며, 이를 애플리케이션에 맞게 조정할 수 있습니다.
앱 엔드포인트 배포
An 앱 엔드포인트 는 Capella 앱 서비스 내에서 애플리케이션을 나타냅니다. 모바일 애플리케이션이 데이터를 동기화할 엔드포인트를 나타냅니다. 앱 서비스 클러스터에 하나 이상의 앱 엔드포인트를 구성해야 합니다. 각 앱 엔드포인트는 버킷, 범위 및 해당 범위 내의 컬렉션의 고유한 하위 집합과 연결됩니다.
앱 엔드포인트 구성
인증 메커니즘 설정 기본적으로 모든 앱 엔드포인트는 기본 인증을 사용하여 보호됩니다. 다음 옵션을 설정할 수 있습니다. 고급 인증 메커니즘.
모바일 앱 사용자(및 역할) 구성 - 모바일 앱 사용자(및 역할) 구성 하나 이상의 애플리케이션 사용자 및 선택적으로 역할을 지정할 수 있습니다. 이들은 앱 서비스와 데이터를 동기화하도록 인증된 사용자입니다. 프로덕션 앱에서는 일반적으로 관리자 REST API 를 사용하여 사용자를 구성하거나, 사용자 자동 등록 기능을 구성한 경우 인증을 위한 OIDC(Open ID Connect).
액세스 제어 설정 - 액세스 제어 설정 이는 앱 엔드포인트 구성에서 가장 중요한 요소 중 하나입니다. 여기에서 JavaScript 함수를 지정하여 사용자의 액세스 수준(읽기/쓰기)을 정의합니다. 액세스 제어는 "" 라는 독특하고 강력한 개념을 통해 가능합니다.채널." 기본적으로 컬렉션 내의 모든 문서는 컬렉션과 같은 이름을 공유하는 채널에 연결됩니다. 따라서 컬렉션 이름이 같은 채널에 대한 액세스 권한이 부여된 사용자는 자동으로 해당 컬렉션의 모든 문서에 대한 읽기 권한을 얻게 됩니다. 저희의 문서 를 클릭하여 액세스 제어 및 유효성 검사에 대해 자세히 알아보세요.
앱 엔드포인트를 구성했으면 다음을 수행할 준비가 된 것입니다. 연결하기 를 클릭하고 카우치베이스 라이트 지원 애플리케이션에서 데이터를 동기화합니다.
5. Realm 애플리케이션 마이그레이션
백엔드가 설정되었으므로 이제 Realm SDK 애플리케이션을 다음 주소로 마이그레이션할 차례입니다. 카우치베이스 라이트. Realm은 객체 지향 데이터베이스인 반면, MongoDB는 JSON 문서 저장소이므로 BSON 문서를 Realm 객체로 변환해야 합니다. 반면, Couchbase Lite는 모든 기능을 갖춘 임베디드 JSON 문서 저장소로, 변환이 필요 없습니다.
Realm 앱을 마이그레이션하려면 애플리케이션의 모델 레이어(또는 데이터 액세스 레이어)를 다시 작성하여 해당 언어로 Couchbase Lite의 SDK를 사용해야 합니다.
저희의 비교 가이드 를 참조하여 MongoDB 장치 동기화 SDK와 Couchbase Lite를 비교하세요. 다음은 몇 가지 언어별 가이드입니다:
6. 서버 측 SDK 애플리케이션 마이그레이션
백엔드 또는 서버 측 애플리케이션이 하나 이상 있는 경우 해당 애플리케이션도 마이그레이션해야 합니다. 당사는 다음을 제공합니다. SDK 는 다양한 프로그래밍 언어를 지원하며, 백엔드 애플리케이션이 클러스터에 쉽게 연결하고 상호 작용할 수 있도록 하는 최신의 관용적 API를 제공합니다. 마이그레이션하는 동안 MQL(MongoDB 쿼리 언어)로 작성된 원래 쿼리를 다음과 같이 변환하여 대폭 간소화할 수 있습니다. SQL++!
SQL++는 데이터베이스에 대한 배경 지식이 있는 사람이라면 누구에게나 매우 친숙할 것이지만, 다음과 같이 더욱 간단하게 만들었습니다. CapellaIQ는 자연어(NLP)로 쿼리를 생성하는 데 도움이 되는 AI 어시스턴트입니다.
IDE 환경 내에서 Capella로 작업하려면 다음을 활용할 수 있습니다. IDE 플러그인.
7. 에코시스템과의 통합 설정
카우치베이스는 다양한 커넥터 및 모니터링 도구, 퍼블릭-서브 시스템 등 사용자 환경의 다른 하위 시스템 및 서비스와의 통합을 가능하게 하는 도구를 지원합니다. 따라서 MongoDB 애플리케이션이 다른 하위 시스템과 상호 작용하는 경우, Couchbase로 전환할 때 이러한 연결을 다시 구성해야 합니다.
마이그레이션 샘플: 영역에서 앱 서비스로의 마이그레이션
하지만 잠깐만요... 더 있습니다! 그 증거는 푸딩에 있습니다.
저희는 Todo 샘플 Realm 모바일 애플리케이션을 가져와서 이를 Capella 앱 서비스로 마이그레이션했습니다. 이 과정에서 Couchbase Lite가 Realm 앱에서 지원하는 것과 동등한 기능을 제공하는 방법에 대한 자세한 단계별 가이드를 제공합니다. 또한 엔드투엔드 작업 시스템을 갖출 수 있도록 필요한 구성으로 Capella 클러스터 및 App Services를 설정하는 과정을 안내합니다.
다음은 세 가지 인기 언어로 된 샘플 앱의 마이그레이션 단계에 대한 링크입니다:
리소스
마이그레이션 경험에 대한 여러분의 의견을 듣고 싶습니다. 질문이나 피드백이 있으시면 아래에 댓글을 남기거나 다음 연락처로 문의해 주세요. 불화 또는 포럼.
다음은 이 게시물에 언급된 유용한 리소스에 대한 직접 링크입니다:
감사
덕분에 아론 라보 SDK 비교 가이드와 샘플 앱에 대한 공헌에 감사드립니다.