Firestore로 자동 업그레이드

이 페이지에서는 Cloud Datastore에서 Datastore 모드의 Firestore로의 업그레이드 경로를 설명합니다.

Firestore는 Datastore 모드로 작동할 수 있으며, Cloud Datastore와 하위 호환됩니다. Datastore 모드의 Firestore에서는 Datastore 시스템 동작을 유지하면서 Firestore의 향상된 스토리지 레이어에 액세스할 수 있습니다. Datastore 모드의 Firestore는 다음 Cloud Datastore 제한사항을 제거합니다.

  • 쿼리가 더 이상 eventual consistency를 갖지 않습니다. 대신 eventual consistency를 명시적으로 요청하지 않는 한 strong consistency를 가집니다.
  • 트랜잭션의 쿼리는 더 이상 상위 쿼리일 필요가 없습니다.
  • 트랜잭션이 더 이상 25개의 항목 그룹으로 제한되지 않습니다.
  • 항목 그룹에 대한 쓰기가 더 이상 초당 1회로 제한되지 않습니다.

Datastore 모드에 대한 자세한 내용은 Datastore 모드의 Firestore를 참조하세요.

2021년 6월부터 Cloud Datastore에서 Datastore 모드의 Firestore로 마이그레이션이 시작되었습니다. 마이그레이션은 트래픽이 매우 낮은 데이터베이스에서 시작되며 앞으로 몇 개월에 걸쳐 트래픽이 더 높은 데이터베이스로 확장합니다.

Datastore 모드의 Firestore로 자동 업그레이드

Cloud Datastore를 사용하는 애플리케이션을 관리하는 경우 애플리케이션 코드를 업데이트할 필요가 없습니다. 애플리케이션이 Datastore 모드의 Firestore로 업그레이드되는 일정에 대해 알림이 제공됩니다. 업그레이드에는 다운타임이 필요하지 않습니다.

자동 업그레이드 프로세스에 대한 추가 질문이 있으면 지원 채널 중 하나에 문의하세요.

업그레이드 단계

대략적으로 다음 절차에 따라 Cloud Datastore 데이터베이스를 Datastore 모드의 Firestore로 업그레이드합니다. 이 프로세스에는 애플리케이션 다운타임이 필요하지 않습니다.

  1. Datastore 모드의 새로운 Firestore 데이터 복제본을 기존 Cloud Datastore 데이터베이스에 추가합니다. Datastore 모드의 Firestore에 비동기식으로 항목 쓰기 작업을 복제합니다.

  2. 기존 데이터 및 색인 항목을 Cloud Datastore에서 Datastore 모드의 Firestore로 복사합니다. 복사 후 데이터를 확인합니다.

  3. 항목 읽기를 Datastore 모드의 Firestore로 직접 리디렉션합니다. 먼저 eventual consistency를 가진 읽기를 리디렉션한 후 strong consistency를 가지는 읽기를 리디렉션합니다.

  4. 항목 쓰기 및 트랜잭션 읽기를 Datastore 모드의 Firestore로 직접 리디렉션합니다.

이 프로세스는 다음 단계를 사용합니다.

1. 동기식으로 쓰기 적용

이 단계에서는 쓰기를 Cloud Datastore에 동기식으로 적용합니다. 항목 및 색인에 대한 모든 변경사항이 하나 이상의 복제본에 적용될 때까지 쓰기는 성공을 보고하지 않습니다. 이렇게 하면 쓰기를 동기식으로 적용하는 Datastore 모드의 Firestore 동작이 시뮬레이션됩니다. 또한 커밋한 후 쓰기를 비동기식으로 적용하는 Cloud Datastore의 기본 동작과는 다릅니다.

이 단계는 업그레이드 전에 Datastore 모드의 Firestore에서 동기식 적용의 지연 영향을 표시하기 위한 것입니다. 동기식 쓰기는 마이그레이션 도중 및 마이그레이션 후에 계속 적용됩니다.

활동이 거의 없는 데이터베이스는 이 단계를 건너뜁니다. 이 단계가 데이터베이스 업그레이드에 포함되어 있는지 확인하려면 APPLY_WRITES_SYNCHRONOUSLY 단계의 로그를 검사합니다.

2. 복사 및 확인

이 단계는 마이그레이션 시작을 나타냅니다. Datastore 모드의 Firestore 복제본을 도입하고 다음 단계를 수행합니다.

  1. 저널

    또한 Cloud Datastore에 대한 항목 쓰기 작업은 사이드 채널을 통해 Datastore 모드의 Firestore 복제본으로 이동하기 시작합니다. 이 작업은 Cloud Datastore 기존 복제 시스템의 일부로 수행됩니다. 이러한 쓰기 작업은 쓰기 지연 시간에 영향을 미치지 않습니다. Datastore 모드의 Firestore 복제본은 이러한 쓰기 작업을 버퍼링하여 복사 단계 후에 적용합니다.

  2. 복사

    Datastore 모드의 Firestore 복제본에서 기존 데이터 및 색인 항목의 오프라인 사본을 만듭니다. 복사 단계는 Cloud Datastore 작업에 영향을 주지 않습니다. 이 단계는 며칠 정도 걸릴 수 있습니다.

  3. 드레이닝 업무 일지

    업무 일지 단계의 읽기를 오프라인 사본의 데이터에 적용합니다.

  4. 데이터 확인

    Cloud Datastore의 데이터와 비교하여 Datastore 모드의 Firestore 데이터를 다시 확인합니다.

3. eventual consistency를 가진 읽기 리디렉션

Datastore 모드의 Firestore에서 eventual consistency를 가진 읽기(상위 필터가 없는 쿼리)를 제공합니다. 이 시점에도 읽기에 대한 Cloud Datastore 시맨틱스가 계속 적용됩니다.

  • 상위 쿼리는 strong consistency를 가집니다.
  • 상위 쿼리가 아닌 쿼리는 eventual consistency를 가집니다.
  • Lookup은 strong consistency를 가집니다. 단, eventual consistency를 위해 명시적으로 구성된 경우는 예외입니다.

Datastore 모드의 Firestore는 계속해서 Cloud Datastore 데이터의 복제본으로 작동합니다.

4. strong consistency를 가진 읽기 리디렉션

Datastore 모드의 Firestore에서 strong consistency를 가진 읽기(비트랜잭션)를 제공합니다. 읽기에 대한 Cloud Datastore 시맨틱스는 계속 적용됩니다. 이제 Firestore에서 직접 읽기가 시작되더라도 Firestore는 Cloud Datastore를 사용하여 strong consistency를 가진 읽기에 대해 최신 상태를 유지합니다.

5. 쓰기 리디렉션

항목 쓰기 및 트랜잭션 읽기를 Datastore 모드의 Firestore로 리디렉션합니다. 동일한 항목을 동시에 수정하면 트랜잭션이 계속 중단됩니다. 동일한 항목 그룹 내의 여러 항목을 동시에 수정해도 트랜잭션이 중단되지 않습니다.

이 단계가 시작될 때 Datastore 모드의 Firestore는 여전히 Cloud Datastore를 사용하여 쓰기가 수행되기 전에 최신 상태를 유지합니다. 모든 이전 쓰기가 적용되도록 하는 최종 패스 이후, Datastore 모드의 Firestore가 Cloud Datastore 컨설팅을 중지합니다.

6. 마이그레이션 완료

읽기에 대한 Datastore 모드의 Firestore 시맨틱스가 적용됩니다. 모든 쿼리는 strong consistency를 가집니다.

가격은 그대로 유지되지만 결제에 Firestore SKU가 포함됩니다. App Engine 할당량 페이지에 Cloud Datastore 사용량 대신 Firestore 사용량이 표시됩니다.

트랜잭션

Cloud Datastore 데이터베이스는 Datastore 모드의 Firestore에서 트랜잭션에 낙관적 동시 실행을 사용합니다. 낙관적 동시 실행은 Cloud Datastore의 기존 트랜잭션 동작을 보존합니다.

활동이 거의 없는 이전에 마이그레이션된 데이터베이스는 낙관적 동시 실행 대신 Datastore 모드의 Firestore에서 비관적 잠금을 사용하여 마이그레이션되었습니다.

마이그레이션 도중 또는 마이그레이션 후에 데이터베이스의 동시 실행 모드를 확인하려면 로그에서 PREPARE 단계를 검사합니다.

로깅 및 진행률 알림

업그레이드 프로세스는 Cloud Logging을 사용하여 진행 상황 업데이트를 게시합니다. 로그 탐색기, Cloud Logging API 또는 Cloud SDK를 사용하여 로그를 볼 수 있습니다.

업데이트는 datastore.googleapis.com 로깅 서비스 이름의 두 로그에 게시됩니다.

로그 이름 모니터링 리소스 페이로드
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

migration_state 로그는 업그레이드의 전체 상태가 변경되면 업데이트됩니다(RUNNINGCOMPLETE).

migration_progress 로그는 업그레이드가 새 단계(PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS, REDIRECT_WRITES)로 이동할 때마다 업데이트됩니다.

업그레이드가 진행되는 동안 알림을 받으려면 두 로그를 기반으로 로그 기반 측정항목을 만들고 해당 측정항목을 기반으로 알림을 만들면 됩니다.

Cloud Monitoring 측정항목

Datastore 데이터베이스에 사용할 수 있는 Cloud Monitoring 측정항목은 업그레이드 프로세스 내내 동일합니다. 사용 가능한 Datastore 측정항목을 참조하세요.