데이터 연결 스키마 및 커넥터 배포 및 관리

Firebase Data Connect 서비스에는 다음과 같은 세 가지 주요 구성요소가 있습니다.

  • 자체 SQL 스키마가 있는 기본 PostgreSQL 데이터베이스
  • Data Connect 애플리케이션 스키마 (.gql 파일에 선언됨)
  • 여러 커넥터 (.gql 파일에 선언됨)

SQL 스키마는 데이터의 소스이고 Data Connect 스키마는 커넥터가 해당 데이터를 볼 수 있는 방법이며 커넥터는 클라이언트가 해당 데이터에 액세스하는 데 사용할 수 있는 API를 선언합니다.

CLI를 사용하여 Data Connect 서비스를 배포하는 경우 다음을 수행합니다. SQL 스키마를 마이그레이션한 다음 Data Connect 스키마를 업데이트하세요. 각 커넥터를 업데이트해야 합니다

중요한 배포 개념

배포를 완전히 이해하려면 스키마 및 커넥터에 관한 주요 개념을 알아야 합니다.

스키마 배포

Data Connect 스키마 배포는 Cloud SQL 데이터베이스입니다 Data Connect를 사용하면 스키마를 이전할 수 있습니다. 새 데이터베이스를 사용하거나 배포 중에 기존 데이터베이스를 비파괴적으로 조정하기 때문입니다.

Data Connect 스키마 이전에는 strict(엄격) 및 compatible(호환)라는 두 가지 스키마 유효성 검사 모드가 있습니다.

  • 엄격 모드 유효성 검사를 사용하려면 애플리케이션 스키마를 업데이트하기 전에 데이터베이스 스키마가 애플리케이션 스키마와 정확하게 일치해야 합니다. Data Connect 스키마에서 사용되지 않는 테이블이나 열은 데이터베이스에서 삭제됩니다.

  • 호환 모드 유효성 검사를 사용하려면 애플리케이션 스키마를 업데이트하기 전에 데이터베이스 스키마가 애플리케이션 스키마와 호환되어야 합니다. 스키마, 테이블 또는 열을 삭제하는 추가 변경사항은 선택사항입니다.

    호환된다는 것은 스키마 이전이 애플리케이션 스키마에서 참조되는 테이블과 열에만 영향을 미친다는 것을 의미합니다. 운영 가능하지 않은 데이터베이스 요소 수정되지 않은 상태로 유지됩니다. 따라서 배포 후 데이터베이스에 다음과 같은 사용되지 않은 항목이 포함될 수 있습니다.

    • 스키마
    • Tables
를 통해 개인정보처리방침을 정의할 수 있습니다.

커넥터 배포

Data Connect 쿼리 및 변형은 클라이언트 코드로 제출되고 서버에서 실행됩니다. 대신 배포할 때 이러한 Data Connect 작업은 다음과 같이 서버에 저장됩니다. Cloud Functions입니다. 즉, 배포 시 기존 사용자가 손상될 수 있습니다.

배포 워크플로 따르기

로컬 프로젝트에서 Data Connect 프로젝트 모두 작업할 수 있습니다. 디렉터리와 Firebase 콘솔에 있습니다.

권장되는 배포 흐름에는 다음이 포함됩니다.

  1. firebase dataconnect:services:list를 사용하여 현재 배포된 스키마 및 커넥터를 나열합니다.
  2. 스키마 업데이트 관리
    1. firebase dataconnect:sql:diff를 사용하여 Cloud SQL 데이터베이스와 로컬 Data Connect 스키마 간의 SQL 스키마 차이를 확인합니다.
    2. 필요한 경우 dataconnect:sql:migrate를 사용하여 SQL 스키마 마이그레이션을 수행합니다.
  3. firebase deploy를 실행하여 스키마만, 커넥터만 또는 리소스 조합에 대해 스키마 및 연결 배포를 실행합니다.

Data Connect 리소스 배포 및 관리

배포를 실행하기 전에 프로덕션 리소스를 확인하는 것이 좋습니다.

firebase dataconnect:services:list

로컬 프로젝트 디렉터리에서 작업할 때는 일반적으로 firebase deploy 명령어를 사용하여 스키마와 커넥터를 프로덕션에 배포합니다. 양방향 피드백을 제공하세요

deploy 명령어를 사용하면 --only dataconnect 플래그를 통해 프로젝트에 있는 다른 제품의 배포 Data Connect

일반 배포

firebase deploy --only dataconnect

이 일반적인 배포에서 Firebase CLI는 스키마와 커넥터를 배포하려고 시도합니다.

새 스키마가 기존 커넥터를 중단하지 않는지 확인합니다. 브레이킹 체인지를 적용할 때는 권장사항을 따르세요.

또한 Data Connect 스키마를 업데이트하기 전에 SQL 스키마가 이미 이전되었는지 확인합니다. 그렇지 않으면 스키마를 이전하는 데 필요한 단계를 자동으로 안내합니다.

--force 플래그 배포

firebase deploy --only dataconnect --force

커넥터나 SQL 스키마 유효성 검사가 모두 문제가 되지 않는 경우 --force로 명령어를 다시 실행하여 무시합니다.

--force 배포는 여전히 SQL 스키마가 Data Connect 스키마, 비호환성에 대한 경고, 프롬프트

선택한 리소스 배포

더 세밀하게 제어하려면 --only 플래그를 다음과 함께 사용합니다. serviceId 인수. 특정 서비스의 스키마 변경사항만 배포하려면 다음 단계를 따르세요.

firebase deploy --only dataconnect:serviceId:schema

지정된 커넥터 및 서비스의 모든 리소스를 배포할 수도 있습니다.

firebase deploy --only dataconnect:serviceId:connectorId

마지막으로 단일 서비스에 스키마와 모든 커넥터를 배포할 수 있습니다.

firebase deploy --only dataconnect:serviceId

배포 롤백

수동으로 롤백하려면 이전 버전의 코드를 확인하고 배포할 수 있습니다 원래 배포에 파괴적인 브레이킹 체인지가 포함된 경우 삭제된 데이터를 완전히 복구하지 못할 수도 있습니다.

데이터베이스 스키마 마이그레이션

빠르게 프로토타입을 제작하고 스키마를 실험하며 스키마 변경사항이 파괴적이라는 것을 알고 있다면 Data Connect 도구를 사용하여 변경사항을 확인하고 업데이트가 실행되는 방식을 감독할 수 있습니다.

SQL 스키마 변경사항 비교

다음과 같이 변경사항을 확인할 수 있습니다.

firebase dataconnect:sql:diff

쉼표로 구분된 서비스 목록을 전달할 수 있습니다.

이 명령어는 서비스의 로컬 스키마를 해당 Cloud SQL 데이터베이스의 현재 스키마와 비교합니다. 차이가 있는 경우 이 차이를 수정하기 위해 실행할 SQL 명령어

변경사항 적용

만족스럽고 Cloud SQL 스키마에 변경사항을 배포할 준비가 되면 firebase dataconnect:sql:migrate 명령어를 실행합니다. 목표: 변경사항을 승인하라는 메시지가 표시됩니다.

firebase dataconnect:sql:migrate [serviceId]

대화형 환경에서는 SQL 이전 문 및 작업 메시지가 표시됩니다.

엄격 모드 또는 호환 모드로 이전

새 프로젝트에서는 기본 스키마 유효성 검사 모드가 사용됩니다. 적용됩니다. migrate 명령어의 동작은 애플리케이션 스키마에 필요한 모든 데이터베이스 스키마 변경사항을 적용한 다음 스키마, 테이블 또는 열을 삭제하여 데이터베이스 스키마가 애플리케이션 스키마와 정확하게 일치하도록 하는 선택적 작업을 승인하라는 메시지를 표시합니다.

dataconnect.yaml 파일을 수정하여 이 동작을 조정할 수 있습니다. schemaValidation 키의 주석 처리를 삭제하고 다음과 같이 COMPATIBLE를 선언합니다. 마이그레이션에 필요한 변경사항이 적용됩니다

schemaValidation: "COMPATIBLE"

또는 모든 스키마 변경사항이 적용되고 데이터베이스 스키마가 애플리케이션 스키마와 일치하도록 동작을 STRICT로 설정합니다.

schemaValidation: "STRICT"

자세한 내용은 Data Connect CLI 참조를 확인하세요.

스키마 및 커넥터 관리 권장사항

Firebase에서는 Data Connect에서 따라야 할 몇 가지 권장사항을 추천합니다. 살펴보겠습니다

브레이킹 체인지 최소화

  • Firebase에서는 Data Connect 스키마 및 커넥터 파일을 소스 제어에 유지하는 것이 좋습니다.
  • 가능하면 중단을 야기하는 변경사항을 피하세요. 중단 변경의 일반적인 예는 다음과 같습니다.
    • 스키마에서 필드 삭제
    • 스키마에서 null 허용 필드를 null 비허용으로 만들기(예: Int -> Int!)
    • 스키마에서 필드 이름 바꾸기
  • 스키마에서 필드를 삭제해야 하는 경우 영향을 최소화하기 위해 필드를 여러 배포로 분할하는 것이 좋습니다.
    • 먼저 커넥터의 필드에 대한 참조를 삭제하고 있습니다.
    • 그런 다음 새로 생성된 SDK를 사용하도록 앱을 업데이트합니다.
    • 마지막으로 스키마 .gql 파일에서 필드를 삭제하고 SQL을 마이그레이션합니다. 한 번 더 배포합니다

새 데이터베이스를 사용할 때 엄격 모드 사용

새 데이터베이스에서 Data Connect를 사용 중이며 현재 애플리케이션 스키마를 개발하고, 데이터베이스 스키마가 그대로 유지되므로 애플리케이션 스키마와 정확히 일치하는 dataconnect.yamlschemaValidation: "STRICT"

이렇게 하면 선택적 변경사항도 적용됩니다.

데이터베이스에 프로덕션 데이터가 있는 경우 호환 모드를 사용합니다.

프로덕션 데이터가 포함된 데이터베이스를 변경하는 경우 기존 데이터가 삭제되지 않도록 호환 모드에서 스키마 이전을 실행하는 것이 좋습니다. schemaValidation: "COMPATIBLE"를 지정할 수 있습니다. dataconnect.yaml

호환 모드에서는 필요한 스키마 마이그레이션 변경사항만 데이터베이스에 적용됩니다.

  • DROP SCHEMA, DROP TABLE, DROP COLUMN는 선택사항으로 간주됨 데이터베이스 스키마가 있더라도 계획에 대해 생성되지 않습니다. 애플리케이션 스키마에 정의되지 않은 스키마, 테이블 또는 열이 포함되어 있습니다.
  • 데이터베이스 테이블에 애플리케이션 스키마에 포함되지 않은 null이 아닌 열이 포함된 경우 NOT NULL 제약 조건이 삭제되므로 정의된 커넥터를 사용하여 데이터를 계속 테이블에 추가할 수 있습니다.

다음 단계