상위 이슈: #740
배경
각 workflow가 올바른 plist를 선택하는 것만으로는 Auth, FCM, Functions, Firestore, Crashlytics와 Analytics가 같은 Firebase project에 연결됐다고 단정할 수 없다. staging과 prod는 모두 database ID (default)를 사용하므로 database ID만으로 환경 격리를 판별할 수도 없다.
기존 단일 project의 named database와 staging 자원을 제거하기 전에 전체 동작과 rollback 절차를 확인해야 한다.
목표
TestFlight와 App Store의 Firebase 연결이 project 단위로 완전히 분리됐음을 검증하고 장애 시 복구 절차를 확정한다.
검증 항목
rollback 작업
제외 범위
- Firebase 함수 또는 데이터 삭제
- 기존 단일 project staging 자원 제거
- Auth 사용자 또는 Firestore 데이터 이전
- 실제 rollback 실행
완료 조건
- TestFlight와 App Store 사이에 Firebase 자원 교차 사용이 없음
- 두 환경은 각 Firebase project의
(default) Firestore와 공통 api만 사용함
- staging 장애가 prod 앱에 영향을 주지 않음
- prod 전환 실패 시 검증 가능한 복구 경로가 있음
- 결과가 opficdev/DevLog_Firebase#54의 기존 named database와 staging 자원 제거 판단 근거로 연결됨
의존 관계
상위 이슈: #740
배경
각 workflow가 올바른 plist를 선택하는 것만으로는 Auth, FCM, Functions, Firestore, Crashlytics와 Analytics가 같은 Firebase project에 연결됐다고 단정할 수 없다. staging과 prod는 모두 database ID
(default)를 사용하므로 database ID만으로 환경 격리를 판별할 수도 없다.기존 단일 project의 named database와 staging 자원을 제거하기 전에 전체 동작과 rollback 절차를 확인해야 한다.
목표
TestFlight와 App Store의 Firebase 연결이 project 단위로 완전히 분리됐음을 검증하고 장애 시 복구 절차를 확정한다.
검증 항목
PROJECT_ID가 서로 다름GOOGLE_APP_ID가 서로 다름opfic.DevLog임APP_ENVIRONMENT=staging을 사용함APP_ENVIRONMENT=prod를 사용함FIRESTORE_DATABASE_ID=(default)를 사용함FUNCTION_API_BASE_URL이 stagingPROJECT_ID의 공통api를 가리킴FUNCTION_API_BASE_URL이 prodPROJECT_ID의 공통api를 가리킴aud와iss가 해당 Firebase project와 일치함(default)database를 사용함stagingApi또는prodApiURL이 남아 있지 않음rollback 작업
devlog-c87b6/staging과stagingApi경로로 되돌리는 절차를 기록함devlog-c87b6/prod와prodApi경로로 되돌리는 절차를 기록함제외 범위
완료 조건
(default)Firestore와 공통api만 사용함의존 관계