Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

원격 구성 템플릿 및 버전 관리

원격 구성 템플릿은 Firebase 프로젝트에 사용하기 위해 만든 JSON 형식 매개변수 및 조건의 서버 측 집합입니다. 매개변수조건 탭에 템플릿 콘텐츠가 그래픽 형식으로 표시되는 Firebase Console을 사용하여 템플릿을 수정하고 관리할 수 있습니다. Remote Config backend API를 사용하여 구성을 수정하고 관리할 수도 있습니다.

다음은 템플릿 파일의 예시입니다.

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

매개변수를 업데이트할 때마다 원격 구성은 새 버전의 원격 구성 템플릿을 만들고 필요에 따라 이전 템플릿을 검색하거나 롤백할 수 있는 버전으로 저장합니다. 버전 번호는 원격 구성에서 저장한 초깃값부터 순차적으로 증가합니다. 모든 템플릿에는 표시된 대로 특정 버전에 대한 메타데이터가 포함된 version 필드가 있습니다.

Firebase Console 또는 Remote Config backend API를 사용하면 다음과 같은 버전 관리 작업을 수행할 수 있습니다.

  • 저장된 모든 템플릿 버전 나열
  • 특정 버전 검색
  • 특정 버전으로 롤백

원격 구성 템플릿을 관리할 때 만료 기준에 유의하세요. 작성 시간에서 90일 또는 총 저장 버전 수는 300개로 제한됩니다. 이러한 제한과 상관없이 템플릿을 저장하거나 롤백하려면 수동으로 저장하고 보관합니다. 앱에서 현재 사용 중인 활성 원격 구성 템플릿의 경우 만료되지는 않지만 작성한 지 90일 넘게 활성화되어 있고, 업데이트 버전으로 교체되면 만료되기 때문에 다시 검색할 수 없습니다.

Firebase Console에서 원격 구성 템플릿 버전 관리

Firebase Console에서 제공하는 그래픽 인터페이스를 통해 템플릿 버전을 나열하고 템플릿 세부정보를 확인하고 필요에 따라 롤백할 수 있습니다. 이러한 작업을 수행하려면 다음 안내를 따르세요.

  1. 매개변수 탭의 오른쪽 상단에 표시된 '시계' 아이콘을 선택합니다. 그러면 Change history(변경 내역) 페이지가 열리고 저장된 모든 템플릿 버전이 오른쪽에 있는 목록 메뉴에 나열됩니다.

  2. 세부정보 창에는 기본적으로 현재 활성 템플릿이 표시됩니다. 목록에서 다른 버전에 대한 세부정보를 보려면 오른쪽 메뉴에서 해당 버전을 선택하세요.

    저장된 각 버전에 표시되는 세부정보에는 변경사항이 Console, REST API, 롤백 중 어디에서 시작되었는지 또는 템플릿 강제 저장으로 변경사항이 추가로 적용되었는지 여부에 관한 정보가 포함되어 있습니다.

  3. 선택되지 않은 버전의 컨텍스트 메뉴로 마우스를 이동하고 선택한 버전과 비교를 선택하여 현재 선택한 버전 및 다른 저장된 버전 간의 차이를 자세히 확인할 수 있습니다.

  4. 롤백 가능한 이전 템플릿 버전의 경우 해당 버전으로 롤백하기 위한 옵션 버튼이 페이지 오른쪽 상단에 표시됩니다. 해당 버전으로 롤백하고 모든 앱과 사용자에 대해 해당 값을 즉시 사용하려는 경우에만 이 버튼을 클릭하고 확인합니다.

백엔드 API로 원격 구성 템플릿 버전 관리

이 섹션에서는 REST API 및 Firebase Admin SDK를 사용하여 원격 구성 템플릿의 버전을 관리하는 방법을 설명합니다. 템플릿을 프로그래매틱 방식으로 만들고 수정하고 저장하는 방법에 대한 자세한 내용은 프로그래매틱 방식으로 원격 구성 수정을 참조하세요.

원격 구성 템플릿의 저장된 모든 버전 나열

Remote Config backend API를 사용하면 원격 구성 템플릿의 모든 저장된 버전 목록을 검색할 수 있습니다. 예를 들면 다음과 같습니다.

Node.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

REST

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>:listVersions

응답에는 업데이트 시간, 템플릿을 만든 사용자, Firebase Console 또는 REST API를 통해 만들었는지 여부 등 저장된 모든 버전의 메타데이터가 포함됩니다. 버전 요소의 예시는 다음과 같습니다.

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

원격 구성 템플릿의 특정 버전 검색

Remote Config backend API를 사용하면 원격 구성 템플릿의 저장된 버전을 검색할 수 있습니다. 인수 없이 getTemplate()을 전달하여 템플릿의 최신 버전을 검색하거나 getTemplateAtVersion()을 사용하여 특정 버전을 검색할 수 있습니다. 예를 들면 다음과 같습니다.

Node.js

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

REST

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6</pre>

URL 매개변수 ?version_numberGET 작업에만 유효하며 업데이트의 버전 번호를 지정하기 위해 사용할 수 없습니다. ?version_number 매개변수를 사용하지 않는 유사한 get 요청은 현재 활성 상태인 템플릿을 검색합니다.

원격 구성 템플릿의 저장된 특정 버전으로 롤백

Remote Config backend API를 사용하면 저장된 버전의 템플릿으로 롤백할 수 있습니다. 예를 들면 다음과 같습니다.

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

REST

저장된 원격 구성 템플릿으로 롤백하려면 커스텀 메서드 :rollback과 요청 본문에서 적용할 특정 버전으로 HTTP POST를 실행합니다. 예를 들면 다음과 같습니다.

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'</pre>

응답에는 현재 저장된 활성 템플릿의 콘텐츠와 새 버전 메타데이터가 포함됩니다.

이 롤백 작업은 실제로 새 번호가 지정된 버전을 만듭니다. 예를 들어 버전 10에서 버전 6으로 롤백하면 버전 6의 새 사본이 실제로 만들어지는데 이 사본은 버전 번호가 11이라는 점만 버전 6의 원본과 다릅니다. 원본인 버전 6이 아직 만료되지 않았다고 가정하면 버전 6은 그대로 저장되고 버전 11이 활성 템플릿이 됩니다.