Device Sync 모드 마이그레이션
이 페이지의 내용
Atlas App Services 앱에는 파티션 기반 동기화 및 Flexible Sync 의 두 가지 Realm Mobile Sync 모드 중 하나가 있을 수 있습니다. 파티션 기반 동기화는 이전 모드이므로 Flexible Sync로 마이그레이션하는 것을 고려해야 합니다.
파티션 기반 동기화를 사용하는 App Services App을 Flexible Sync로 마이그레이션하는 작업은 자동으로 진행됩니다. SDK 버전을 업그레이드하는 것 외에 동기화 모드를 마이그레이션할 때 클라이언트 앱 코드를 변경할 필요는 없습니다.
마이그레이션으로 인해 파티션 기반 동기화 클라이언트가 Flexible Sync 백엔드 와 통신하게 됩니다. 결국 파티션 기반 동기화 대신 Flexible Sync를 사용하도록클라이언트 앱 코드를 마이그레이션하는 것이 좋습니다.
요구 사항:
App Services App:
현재 파티션 기반 동기화 사용
연결된 Atlas cluster:
Flexible Sync 호환성을 위해 MongoDB 5.0 이상 사용
스토리지 자동 확장활성화
M10+ 클러스터 계층 되기
시간 기반 oplog 설정 활성화
클라이언트 앱:
최소 Atlas Device SDK 버전:
Swift SDK v10.40.0 이상
코틀린 SDK (Kotlin SDK) v1.9.0 이상 버전
Node.js SDK v11.10.0 이상
React Native SDK v11.10.0 이상
.NET SDK v11.1.0 이상
Java SDK v10.16.0 이상
클라이언트 재설정 핸들러 를 구성합니다.
마이그레이션하기 전에 알아야 할 사항
앱의 동기화 모드를 마이그레이션하려면 클라이언트 앱과 앱의 백엔드 모두에 영향을 미치는 변경 사항이 포함됩니다. 그 영향을 알고 미리 계획해야 합니다.
최소 SDK 버전 요구 사항을 충족하지 않는 클라이언트 앱은 마이그레이션 후 동기화할 수 없습니다.
마이그레이션에 걸리는 시간은 마이그레이션해야 하는 데이터의 양에 직접적으로 비례합니다. 데이터가 많을수록 마이그레이션하는 데 시간이 더 오래 걸립니다.
Flexible Sync에서 지원하지 않으므로 마이그레이션 후에는 진행률 알림이 작동하지 않습니다.
파티션 기반 동기화 백엔드에 연결된 클라이언트 앱은 백엔드가 Flexible Sync로 마이그레이션된 후 클라이언트 재설정을 경험하게 됩니다. 클라이언트 재설정 전에 보류 중인 변경 사항이 손실되지 않도록 복구가 활성화된 클라이언트 재설정 처리기를 사용해야 합니다.
파티션 기반 동기화 클라이언트에서 개발 모드 를 사용하여 마이그레이션된 Flexible Sync 백엔드에서 새 테이블을 만들면 예기치 않은 동작이 발생할 수 있습니다.
마이그레이션 단계
App Services UI에서 마이그레이션 단계를 확인할 수 있습니다. 동기화 모드 마이그레이션에는 세 가지 단계가 있습니다.
파티션 기반 동기화 메타데이터 동기화
이 단계에서 클라이언트 앱은 앱의 백엔드에 연결할 수 있지만 로컬 쓰기는 동기화되지 않습니다. 동기화되지 않은 변경 사항을 복구하는 클라이언트 재설정 처리기 가 없는 경우 이러한 쓰기는 손실됩니다.
클라이언트는 동기화된 collection에 대한 업데이트를 받지만 업로드를 보내거나 업로드 확인을 받을 수는 없습니다.
Flexible Sync 메타데이터 빌드
클라이언트는 이 단계에서 연결할 수 없습니다. 이 단계의 기간은 동기화된 collection의 데이터 양에 직접적으로 비례합니다.
마이그레이션 완료
Manage Sync Migration 마이그레이션이 커밋되거나 되돌리지 않은 경우 Realm Mobile Sync 페이지에 나타납니다.
마이그레이션이 완료된 후 마이그레이션 후 섹션에서 파티션 기반 동기화 클라이언트가 Flexible Sync 백엔드와 상호 작용하는 방식에 대한 자세한 내용을 확인하세요.
파티션 기반 동기화를 Flexible Sync로 마이그레이션
파티션 기반 동기화에서 Flexible Sync로의 마이그레이션을 시작한 후에는 프로세스가 대부분 자동으로 진행됩니다. 그러나 마이그레이션의 중요한 부분은 사용자가 제어할 수 있습니다.
마이그레이션 중에 취소할 수 있습니다. 마이그레이션 후 되돌리거나 수동으로 마이그레이션을 커밋할 수 있습니다.
마이그레이션 시작
마이그레이션 을 시작하기 전에 마이그레이션 단계 와 영향을 알고 있어야 합니다.
마이그레이션은 일반적으로 Realm Mobile Sync를 종료 했다가 다시 활성화하는 것과 유사한 효과가 있습니다. 마이그레이션에는 몇 가지 추가 효과가 있습니다.
App Services UI 에서 모든 구성 페이지는 읽기 전용입니다. 예시: 규칙, 스키마, 함수 및 트리거 화면.
앱에 일정 기간 읽기 전용 동기화가 발생한 후 일정 기간 다운타임이 발생합니다.
새로운 Flexible Sync 구성은 클라이언트 최대 오프라인 시간 을 30일로 설정합니다.
Realm Mobile Sync 메타데이터에 사용되는 Atlas cluster의 스토리지가 일시적으로 두 배로 늘어납니다. 파티션 기반 동기화 메타데이터와 Flexible Sync 메타데이터는 일시적으로 공존해야 합니다. 동기화된 데이터의 크기에 따라 마이그레이션할 때마다 청구에 영향을 미칠 수 있습니다. 중복된 메타데이터는 마이그레이션이 롤백되거나 커밋된 후 제거됩니다.
파티션 기반 동기화에서 Flexible Sync로 마이그레이션하려면 다음을 수행하세요.
Device Sync 화면으로 이동합니다.
App Services UI 왼쪽 탐색 메뉴에서 Device Sync 를 클릭합니다. Dashboard 탭 이 기본값 표시됩니다.
0}Configuration 탭을 선택합니다.
Start migration를 클릭합니다.
클릭하여 확대마이그레이션 프로세스 에 대한 정보를 검토한 다음 Next: Migration Requirements 을(를) 클릭합니다.
마이그레이션 요구 사항을 충족하는지 확인한 다음 Start Migration 을 클릭합니다.
참고
일시적인 동기화 중단
클라이언트는 마이그레이션이 완료될 때까지 로컬 쓰기를 동기화할 수 없습니다.
마이그레이션이 완료되면 파티션 기반 동기화 클라이언트 앱은 클라이언트 재설정을 Go합니다. 그런 다음 App의 Flexible Sync 백엔드와 통신할 수 있습니다. Flexible Sync를 비활성화했다가 다시 활성화할 수 있으며 클라이언트 앱은 여전히 백엔드와 통신합니다.
파티션 기반 동기화 를 다시 활성화하면 '마이그레이션됨' 상태가 사라집니다. 즉, 파티션 기반 동기화 클라이언트 앱으로 백엔드 에서 Flexible Sync를 사용하려면 또 다른 마이그레이션 을 수행해야 합니다.
권한 및 규칙 마이그레이션
파티션 기반 동기화 규칙에 App Services 규칙에 직접적으로 상응하는 규칙이 있는 경우 앱의 권한 및 규칙이 자동으로 마이그레이션됩니다. 이는 이전에 정의된 App Services 규칙을 재정의합니다.
위의 4단계에서는 권한과 규칙을 자동으로 마이그레이션할 수 있는지 확인합니다. App Services UI의 Review Migration Process 단계에서 Rules & Permissions 을 찾습니다.
일부 파티션 기반 동기화 규칙 전략은 App Services 규칙으로 직접 변환할 수 없습니다. 다음과 같은 권한을 수동으로 마이그레이션해야 할 수도 있습니다.
%function
연산자를 사용하세요.함수 규칙 은 Flexible Sync와 호환되지 않으므로 마이그레이션할 수 없습니다.
%or
,%not
,%nor
,%and
확장을 사용합니다.이러한 권한은 작동할 수 있지만, 예상되는 동작을 확인하기 위해 테스트해야 하는 미묘한 차이가 있습니다. Testing new permissions won't work on the App you are migrating. 대신 새 Flexible Sync 앱을 만들어 수동으로 마이그레이션된 권한을 테스트하세요. 그런 다음 테스트를 거친 권한을 마이그레이션하려는 앱에 적용합니다.
지원되는 모든 확장은 Flexible Sync 호환 확장 목록을 참조하세요.
권한 작업 방법에 대한 자세한 내용은 Device Sync 권한 가이드를 참조하세요.
마이그레이션 취소
마이그레이션이 진행 중인 동안 언제든지 취소할 수 있습니다. 이렇게 하면 앱의 파티션 기반 동기화가 마이그레이션이 시작되기 전의 모든 설정으로 반환됩니다.
마이그레이션을 취소하면 향후 마이그레이션 시도부터 처음부터 다시 시작해야 합니다.
마이그레이션을 취소하려면 다음을 수행합니다.
Device Sync 화면으로 이동합니다.
App Services UI 왼쪽 탐색 메뉴에서 Device Sync 를 클릭합니다. Dashboard 탭 이 기본값 표시됩니다.
0}Configuration 탭을 선택합니다.
알림 배너에서 Cancel Migration 을 클릭합니다.
클릭하여 확대이렇게 하면 마이그레이션이 취소됩니다. 나중에 Flexible Sync를 활성화하려면 다시 마이그레이션해야 합니다.
마이그레이션 커밋
마이그레이션이 완료되면 평가 상태가 됩니다. 마이그레이션을 수동으로 커밋하여 영구적으로 설정하거나 마이그레이션을 되돌려 앱을 파티션 기반 동기화로 되돌릴 수 있습니다.
마이그레이션 을 커밋 하거나 되돌리지 않으면 최소 oplog window 에 따라 자동으로 커밋 됩니다. 예를 예시 최소 oplog window 가 48 시간인 경우 마이그레이션 을 되돌릴 수 있는 시간은 48 시간입니다.
마이그레이션이 커밋되면 이전 파티션 기반 동기화 메타데이터가 삭제되며 마이그레이션을 되돌릴 수 없습니다.
마이그레이션을 수동으로 커밋하려면 다음을 수행합니다.
Device Sync 화면으로 이동합니다.
App Services UI 왼쪽 탐색 메뉴에서 Device Sync 를 클릭합니다. Dashboard 탭 이 기본값 표시됩니다.
0}Configuration 탭을 선택합니다.
페이지 상단에서 Manage migration 드롭다운을 클릭한 다음 Delete Partition-Based Sync metadata 을 선택합니다.
메타데이터 삭제 를 확인하고 Flexible Sync 마이그레이션 을 커밋 합니다.
중요
삭제한 후에는 파티션 기반 동기화 메타데이터 를 복구할 수 없습니다.
마이그레이션 되돌리기
마이그레이션이 완료된 후 커밋되기 전에 되돌릴 수 있습니다.
완료된 마이그레이션은 최소 oplog window 에 따라 자동으로 커밋됩니다. 최소 oplog window를 조정하여 마이그레이션을 되돌리는 데 걸리는 시간을 늘리거나 줄일 수 있습니다.
커밋된 마이그레이션은 되돌릴 수 없습니다.
마이그레이션 취소와 마찬가지로 마이그레이션을 되돌리면 향후 마이그레이션 시도부터 처음부터 다시 시작해야 합니다.
마이그레이션을 되돌리려면 다음을 수행합니다.
Device Sync 화면으로 이동합니다.
App Services UI 왼쪽 탐색 메뉴에서 Device Sync 를 클릭합니다. Dashboard 탭 이 기본값 표시됩니다.
0}Configuration 탭을 선택합니다.
Manage Sync 섹션에서 Manage migration 드롭다운을 클릭한 다음 Revert back to Partition-Based Sync 을 선택합니다.
이렇게 하면 마이그레이션 이 되돌아갑니다. 나중에 Flexible Sync를 활성화 하려면 다시 마이그레이션 해야 합니다.
백엔드 마이그레이션 후
마이그레이션된 백엔드 는 객체 모델의 파티션 키 필드 를 사용하여 파티션 파티션 기반 동기화 클라이언트 객체를 백엔드 의 Flexible Sync 객체에 매핑합니다. 객체 모델에 파티션 키 필드 가 없는 경우 백엔드 는 파티션 기반 동기화 클라이언트 가 생성하는 모든 객체 에 파티션 키 필드를 자동으로 삽입합니다.
다음은 주입된 필드의 몇 가지 다른 특성입니다.
삽입된 필드는
<yourPartitionKey> == <yourPartitionValue>
구조를 따릅니다. 필드 키는 이전 파티션 기반 동기화 백엔드 구성에서 파생됩니다. 이 값은 현재 파티션 기반 동기화 클라이언트 구성에서 파생됩니다.삽입된 필드는 객체를 생성한 클라이언트와 다시 동기화되지 않습니다. 즉, 원본 클라이언트는 삽입된
partitionKey
필드를 읽을 수 없습니다.
파티션 기반 동기화 클라이언트 는 partitionKey == partitionValue
이 있는 각 테이블에 대해 동기화 구독을 자동으로 생성합니다. 이 작업은 클라이언트 앱 을 Flexible Sync 마이그레이션 할 때까지 계속됩니다.
클라이언트 앱 을 Flexible Sync로 마이그레이션한 후 백엔드 는 파티션 키 필드 삽입을 중지합니다. 클라이언트 앱 이 동기화 구독을 관리하기 위해 파티션 키 필드 를 사용하는 경우 객체 모델에 파티션 키 필드 를 추가해야 합니다.
그렇지 않으면 새 버전의 앱에서 생성된 객체가 이전 버전의 클라이언트 앱 코드를 사용하는 클라이언트와 동기화되지 않습니다.
클라이언트 앱을 Flexible Sync로 마이그레이션
앱의 백엔드 를 Flexible Sync로 마이그레이션한 후에는 클라이언트 앱 을 Flexible Sync 마이그레이션 하는 것이 좋습니다. 클라이언트 앱 을 Flexible Sync 마이그레이션 하면 클라이언트 는 앱 데이터 모델 의 각 객체 모델 에 대한 동기화 구독 자동 생성을 중지합니다.
또한 모든 동기화 구독을 제거한 다음 데이터에 대한 새 구독을 만드는 것이 좋습니다. 이는 마이그레이션 후 동기화되는 데이터를 제어하는 가장 명확한 방법입니다.
개별 구독을 제거하려는 경우 자동으로 생성된 구독은 flx_migrated_
+ 객체 모델 이름과 같은 특정 명명 형식을 사용합니다. 예를 들어 Person
객체 모델의 구독 이름은 flx_migrated_Person
가 됩니다.
자동으로 생성된 구독을 제거하고 다시 생성하고 싶지 않은 경우 그대로 유지할 수 있습니다. 그러나 이러한 구독은 클라이언트 코드에서 생성되지 않기 때문에 클라이언트 코드를 유지 관리하고 확장하기가 더 어려워질 수 있습니다.
파티션 기반 동기화에서 Flexible Sync로 마이그레이션한 후 클라이언트 코드를 업데이트하는 방법에 대한 자세한 내용은 다음을 참조하세요.
- React Native SDK
- 파티션 기반 동기화에서 Flexible Sync로 마이그레이션 - React Native SDK