Firebase 마이그레이션을 진행해보자

GonnabeAlright·2022년 2월 26일
0
post-thumbnail

12월 21일 이미 진행된 프로젝트에서 운영서버와 개발서버가 분리되지 않고 한 가지 서버에서 운영과 배포를 동시에 진행하고 있었기 때문에 운영서버와 개발서버의 분리 필요성을 느껴 개발서버를 새로 생성하고 운영서버에 있던 데이터를 새로 생성된 개발서버로 옮기는 마이그레이션 작업을 진행했습니다.

위 상황에서 A를 기존에 운영되고 있던 운영서버라고 지칭하고 B를 개발서버로 사용하기 위해 새로 생성한 개발서버로 지칭하겠습니다. 즉, A에서 B로 데이터를 옮기는 과정이 진행되는 것입니다. 진행 과정을 이해가 쉽도록 A 콘솔과 B 콘솔로 나누겠습니다.

하단 데이터 마이그레이션은 Firestore 간의 데이터 마이그레이션 작업입니다 !

A: 데이터를 주는 클라우드 (Firestore)
B: 데이터를 받는 클라우드 (Firestore)

A console

  1. Google Cloud Platform 콘솔로 이동
  2. 버킷 생성
  3. 생성된 버킷에 액세스 수정 -> 주 구성원 추가(역할: 저장소 관리자)
    Tip: [데이터 받는 project ID]@appsport.gserviceaccount.com
  4. 내보내기 (콘솔화면에서 내보내기 클릭)
  • ✅ 버킷이 생성된 Region과 데이터를 받는 프로젝트(데이터베이스)의 위치가 동일한 Region이어야 합니다. 따라서 프로젝트의 Region을 확인한 후 해당 Region에 버킷을 생성하세요 !

B console

  1. open the command line
  2. Google Cloud SDK 경로 이동 C:\Users\user\AppData\Local\Google\Cloud SDK
  • ✅ Google Cloud SDK Shell에서 Shell의 기본 경로가 됩니다.
  1. gcloud config set project [데이터 받는 project ID]
  2. gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

하단 세부설명을 참고하여 진행해주시면 보다 원할하게 마이그레이션을 진행하실 수 있습니다 !!

세부설명

1. Google Cloud Platform

버킷을 생성하기 위해 GCP에서 왼쪽 최상단 탭을 클릭한 뒤, Cloud Storage > 브라우저로 이동합니다.

2. 버킷 만들기

  • 버킷명을 작성하고 Standard, 세분화된 액세스 제어를 옵션으로 하여 버킷을 생성합니다.

3. 액세스 수정 ➡️ 주 구성원 추가


  • ✅ 역할은 저장소 관리자를 선택하고 데이터를 받는 프로젝트의 IAM계정을 추가합니다. 이후 한 번 더 액세스 수정을 클릭하여 또 다른 구성원을 추가하는데 여기서 구성원 계정은 가져오기/내보내기 창에서 중앙에 보면 가져오기/내보내기 작업 실행 계정이 보이는데 이 계정에도 동일하게 저장소 관리자를 역할을 부여해줍니다. 액세스 수정 작업을 완료하지 않으면 권한이 없기 때문에 Permission Denied 오류가 발생하니 꼭 진행해주셔야 합니다!

4. 데이터 내보내기

  • 생성한 버킷을 클릭하고 내보내기를 클릭하면 해당 버킷에 마이그레이션하려는 데이터가 저장됩니다.
  • ✅ 옵션으로는 소스: 하나 이상의 컬렉션 그룹 내보내기 (모두 선택)을 클릭하고 대상위치는 내가 만든 버킷으로 설정해줍니다. 모두 선택을 할 경우 Firebase의 모든 도큐먼트를 마이그레이션하는 것이므로 원하는 도큐먼트만 마이그레이션하고 싶다면 해당 도큐먼트 ID만 클릭하시면 됩니다 ! 모든 데이터가 버킷 안에 담길 때까지 잠시동안 대기해줍니다.

6. config

C:₩User:₩user₩AppData₩Local₩Google₩Cloud SDK>
gcloud config set project my-project
  • ✅ Firebase 콘솔창에서 톱니바퀴 모양을 클릭한 뒤, 프로젝트 설정을 누르면 프로젝트 ID를 확인할 수 있습니다.

7. 데이터 가져오기

C:₩User:₩user₩AppData₩Local₩Google₩Cloud SDK>
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]
  • 모든 데이터가 해당 프로젝트로 이동될 때까지 기다려줍니다. bash 창보다 콘솔창에서 확인완료 여부를 더 빨리 확인할 수 있으므로 bash창을 보고 기다리는 것보다 콘솔창을 보고 기다려주시는 것을 추천드립니다.
  • finish가 되었다면 Firebase 콘솔창으로 이동하여 Firestore를 확인하면 모든 도큐먼트가 마이그레이션 되었음을 확인하실 수 있습니다 ! 수고하셨습니다 😃

✅ EXPORT_PREFIX 확인

0개의 댓글