Firestore로 자동 업그레이드

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

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

  • 쿼리는 더 이상 eventual consistency 대신 strong consistency를 가집니다.
  • 트랜잭션의 쿼리는 더 이상 상위 쿼리일 필요가 없습니다.
  • 트랜잭션이 더 이상 25개의 항목 그룹으로 제한되지 않습니다.
  • 항목 그룹에 대한 쓰기가 더 이상 초당 1회로 제한되지 않습니다.
  • 이제 트랜잭션은 낙관적 동시 실행 대신 비관적 잠금을 사용합니다.

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

2021년부터 Google Cloud는 기존 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. 복사 및 확인

이 단계에서는 Datastore 모드의 Firestore 복제본을 소개하고 다음 단계를 수행합니다.

  1. 저널

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

  2. 복사

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

  3. 드레이닝 업무 일지

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

  4. 데이터 확인

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

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

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

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

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

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

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

4. 쓰기 리디렉션

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

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

5. 마이그레이션 완료

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

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

기존 애플리케이션 테스트

Cloud Datastore를 사용하는 기존 앱의 경우 다음을 수행하여 Datastore 모드의 Firestore로 앱 동작을 테스트할 수 있습니다.

  1. 새 프로젝트를 만듭니다. 이 프로젝트에서 Datastore 모드의 Firestore 데이터베이스를 만듭니다.
  2. 관리형 내보내기 서비스를 사용하여 애플리케이션 데이터의 일부를 Cloud Storage로 내보냅니다.
  3. 관리되는 가져오기 서비스를 사용하여 애플리케이션 데이터를 새로운 프로젝트로 가져옵니다.
  4. 테스트할 앱 로직을 새 프로젝트에 복사하거나, 새 프로젝트에 대하여 앱 동작을 시뮬레이션합니다.