게시 마이그레이션

툴킷 v0.14를 사용하여 게시 마이그레이션

이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 Shotgun 통합 관리자 안내서를 참조하십시오. 이전 툴킷 설치(2013년 6월 이전 설치)를 실행 중인 경우 더 이상 사용되지 않는 이전 및 현재 방식으로 게시를 만들고 관리하는 것이 가능합니다. 이 문서에서는 현재의 모범 사례에 맞게 설치를 업그레이드하는 방법을 설명합니다.

소개

Core 릴리즈 v0.14는 게시에 사용되는 Shotgun 엔티티에 대한 장기간 논의된 변경 사항을 통해 푸시됩니다. 이 논의는 Shotgun 버전의 여러 가지 표현 지원에 대한 shotgun-dev 메일링 리스트 스레드로 시작되어 리뷰 컨텐츠와 게시 데이터 간의 관계에 대한 논의로 빠르게 확장되었습니다. 현재 커뮤니티 승인 디자인의 방향으로 진행하고 있으며 첫 번째 단계는 공통/일반 게시 엔티티 및 필드 링크를 표준화하여 나중에 Screening Room 개발의 기초를 마련하는 것입니다.

또한 v0.14 릴리즈는 공개 베타로 출시되는 탱크의 제품 이름 변경과 일치합니다. 앞으로 탱크는 Shotgun Pipeline Toolkit(Sgtk)의 임시 이름으로 간주될 것이며 엔티티에 탱크 고유의 이름을 지정하는 것은 장기간 유지되지 않을 것입니다.

v0.14로 시작하는 새 클라이언트는 새 엔티티로 작업하게 됩니다. 기존 게시 데이터가 있는 기존 클라이언트에 대해 Core 릴리즈 v0.14는 클라이언트가 이전 엔티티의 데이터를 새로운 엔티티로 안전하게 전송할 수 있도록 마이그레이션 유틸리티를 제공합니다. 이 문서에는 마이그레이션에 수반되는 작업과 스위치 조정에 사용할 수 있는 모든 옵션이 요약되어 있습니다.

새 엔티티

탱크는 다음 세 개의 엔티티를 사용하며 모두 프로젝트 특정 엔티티입니다.

  • TankPublishedFile
  • TankType
  • TankDependency

이 세 개의 엔티티는 Sgtk에서 사용될, 이에 상응하는 세 개의 공통/일반 엔티티로 대체됩니다.

  • PublishedFile
  • PublishedFileType
  • PublishedFileDependency

그러나 PublishedFileType은 더 이상 프로젝트 특정 엔티티가 아니며 모든 프로젝트에서 사용할 수 있는 전역 유형 세트입니다(기본적으로 파이프라인 단계와 동일한 개념). 모든 프로젝트에서 모든 PublishedFileType을 사용해야 하는 것은 아니지만, 더 이상 여러 프로젝트 또는 모든 프로젝트에서 동일한 유형 레코드를 복제할 필요 없이 동일한 유형 레코드를 재사용할 수 있습니다.

자세한 정보는 모든 새 엔티티 구조 및 관계를 다루고 있는 shotgun-dev 메일링 리스트 스레드에 올라 있는, 승인된 다음 디자인 문서를 참조하십시오.

마이그레이션 개요

다음은 실제 마이그레이션 수행 작업의 개요입니다.

  • 각 TankType의 경우 동일한 'code' 필드를 사용하는 PublishedFileType이 없는 경우 새로 만들고 썸네일을 포함한 모든 필드 메타데이터를 유지합니다.
  • 각 TankPublishedFile의 경우 PublishedFile을 만들고 썸네일을 포함한 모든 필드 메타데이터를 유지합니다.
  • 각 TankDependency의 경우 PublishedFileDependency를 만들고 해당 PublishedFile 레코드에 링크합니다.
  • 기존 PipelineConfiguration을 앞으로 새 엔티티를 사용할 설정으로 변환합니다.

원활한 전환을 위해 가능한 모든 조치를 취하고 있으며 관리자(Admin)가 새 엔티티로 프로덕션을 전환하기 전에 마이그레이션을 테스트하는 데 활용할 수 있는 다양한 옵션이 있습니다. 현재로서는 레거시 '탱크' 엔티티를 그대로 유지할 예정이지만 결국에는 사용 중단될 것입니다. 클라이언트는 합리적으로 프로덕션 제약 조건을 부여할 수 있게 되면 바로 새 엔티티로 마이그레이션하는 것이 좋습니다.

또한 동일한 데이터 세트에서 여러 번 안전하게 마이그레이션할 수 있습니다. 마이그레이션은 이미 변환한 내용을 "기억"하고 새 레코드만 선택합니다. 이는 테스트 컨텍스트에서 유용할 수 있습니다. 자세한 정보는 아래 내용을 참조하십시오.

새 엔티티 활성화

마이그레이션을 실행할 준비가 되면 먼저 Shotgun의 사이트 기본 설정(Site Preferences)을 통해 세 개의 새 엔티티를 활성화합니다.

마이그레이션 유틸리티 실행

마이그레이션을 실행하려면 새 'migrate_published_file_entities' 유틸리티를 사용합니다.

> tank migrate_published_file_entities

명령이 스튜디오 레벨에서 실행되면 모든 프로젝트가 마이그레이션됩니다. 예:

> /tank_demo/studio/tank migrate_published_file_entities

명령이 특정 프로젝트 컨텍스트 내에서 실행되면 해당 프로젝트만 마이그레이션됩니다. 예:

> tank_demo/ghosts/tank/tank migrate_published_file_entities

마이그레이션 유틸리티는 새 엔티티가 활성화되었는지 확인한 다음 처리할 레코드의 수를 계산합니다. 예:

NOTE
----
Found 371 entities to migrate

Would you like to continue with the migration? [Yes]/No:

Shotgun 스키마 유효성 확인

마이그레이션 검사의 마지막 초기 확인 단계는 각 엔티티의 스키마를 확인하는 것으로, 레거시 엔티티의 모든 필드가 새 엔티티에 들어 있어, 메타데이터를 전송할 수 있는지 확인하는 것입니다.

레거시 엔티티의 필드가 누락되어 마이그레이션해야 할 경우 새 엔티티에 필드를 만듭니다. 마이그레이션 시 선택할 수 있도록 동일한 필드 이름이 있어야 합니다. 또한 필드 간에 엔티티 또는 기타 제한 사항이 동일해야 합니다.

상태(Status) 필드에 대한 추가 정보

상태(Status) 필드의 허용 가능한 값을 수정하는 것은 매우 일반적인 사례이므로 이 값이 새 엔티티에 올바르게 설정되어 있고 레거시 엔티티에 설정된 값과 일치하는지 확인합니다.

엔진/앱 업데이트

대부분의 엔진 및 앱은 새 엔티티 사용을 결정하는 파이프라인 구성의 설정을 인식하기 위해 새 엔티티를 설명하는 업데이트를 필요로 합니다. 따라서 마이그레이션 시 업데이트를 아직 수행하지 않은 경우 업데이트하라는 메시지가 표시됩니다. 프로젝트에서 마이그레이션을 실행하는 경우 마이그레이션의 일부로 직접 업데이트를 실행할 수 있습니다.

이 단계의 출력 예를 보려면 클릭하십시오.

Update apps before migration?
-----------------------------
It is recommended that you update all of the apps in your Pipeline
Configurations before migrating entities to ensure they are ready to support
the new 'PublishedFile' entity types.

Would you like to update all apps now? [Yes]/No:

모든 프로젝트에서 마이그레이션을 실행하는 경우 유틸리티에서 마이그레이션 종료 옵션을 제공하므로 각 프로젝트에서 '탱크 업데이트'를 실행할 수 있습니다(해당 유틸리티는 단일 프로젝트 기반에서만 실행될 수 있기 때문).

마이그레이션 시작

엔진과 앱을 업데이트했으면 이제 실제 마이그레이션을 실행할 준비가 되었습니다. 위의 순서에 따라 먼저 TankType을 PublishedFileType으로 마이그레이션한 다음 TankPublishedFile/PublishedFile로 이동합니다.

이 마이그레이션은 시간이 오래 걸릴 수 있습니다. 400개 이하 레코드의 예제 마이그레이션에 2분이 걸렸습니다. 초당 약 3-4개 레코드입니다. 썸네일의 경우 이전 레코드에서 새 레코드로 개별적으로 전송해야 하기 때문에 마이그레이션 시 가장 큰 성능 병목 현상이 발생합니다. 대역폭 또한 특히 썸네일에서 중요한 역할을 하므로 시간을 잘 배정해야 합니다.

이 단계의 출력 예를 보려면 클릭하십시오.

----------------------------------------------------------------------------
                           STARTING THE MIGRATION
----------------------------------------------------------------------------

Step 1. Migrating entities of type 'TankType'
---------------------------------------------
  Migrating entities...
  [####################] 100% - 1-24 of 24 'TankType' entities
  Updating internal entity links...
  Updating external links from other entity types...

Step 2. Migrating entities of type 'TankPublishedFile'
------------------------------------------------------

  Migrating entities...
  [####################] 100% - 301-347 of 347 'TankPublishedFile' entities
  Updating internal entity links...
  Updating external links from other entity types...
  [####################] 100% - 201-216 of 216 'Note' entities
  [####################] 100% - 51-70 of 70 'Version' entities

All entities migrated successfully.

파이프라인 구성 업데이트

마이그레이션의 마지막 단계는 사용할 엔티티를 지정하는 설정을 전환하도록 프로젝트의 파이프라인 구성을 업데이트하는 것입니다. 파이프라인 구성이 변환되지 않으면 마이그레이션이 성공적으로 완료된 경우에도 레거시 엔티티가 계속 사용됩니다.

마이그레이션 시 업데이트할 파이프라인 구성을 선택할 수 있습니다. 기본값은 all이지만, 테스트 중인 경우 자체 파이프라인 구성만 업데이트할 수도 있으므로 새 파이프라인 구성을 테스트하는 동안 프로덕션에서는 레거시 엔티티를 유지할 수 있습니다.

이 단계의 출력 예를 보려면 클릭하십시오.

Step 3. Updating pipeline configurations
----------------------------------------

In order to fully switch to the new entity types, all Pipeline Configurations
for the 'The Ghosts of Pere Lachaise' project need to be updated.
If you are still testing the migration then you can choose to only update the
current Pipeline Configuration.

Which Pipeline Configurations would you like to update? [All]/Current/None:

Updating pipeline configuration 'Primary' for project 'The Ghosts of Pere
Lachaise' (1 of 1)
 - Updating published entity type in
'/tank_demo/ghosts/tank/config/core/pipeline_configuration.yml'
 - Processing environment file
'/tank_demo/ghosts/tank/config/env/shotgun_tankpublishedfile.yml'

All Pipeline Configurations were updated successfully.

요약

마지막으로 마이그레이션 시 건너뛴 오류 또는 단계를 표시합니다. 예를 들어 엔진 및 앱 업데이트를 실행하지 않은 경우, 모든 파이프라인 구성을 업데이트하지 않은 경우 등에 알림이 표시됩니다.

이 단계의 출력 예를 보려면 클릭하십시오.

----------------------------------------------------------------------------
                     Migration completed successfully.
----------------------------------------------------------------------------
The next steps you should take are:
1. Run the 'tank updates' command to update your apps - you skipped this step
at the beginning!
2. Update any of your own apps or hooks that explicitly use the old
'TankPublishedFile', 'TankType' or 'TankDependency' entity types
3. Migrate entities for all other projects that have not been migrated yet
4. Ensure everything works as expected.

NOTE
----
You can safely run this migration command again if needed.  It will only
create new entities where they weren't migrated previously, otherwise it will
just update the existing ones.

Finally, if you have any problems with this migration, please contact: support@shotgunsoftware.com

새 프로젝트

새 프로젝트를 시작할 때 setup_project 유틸리티는 새 엔티티의 사용 가능 여부를 탐지하여 사용 가능한 경우 기본적으로 새 엔티티를 사용합니다.

관리자(Admin)별 테스트

마이그레이션 유틸리티는 전체 전환을 수행하기 전에 테스트 컨텍스트에서 관리자(Admin)가 실행하도록 디자인되었습니다. 프로덕션에서 탱크를 사용 중이거나 이에 친숙한 클라이언트의 경우 반드시 테스트 마이그레이션(또는 마이그레이션)을 실행하는 것이 좋습니다. 모든 프로젝트를 꼭 한 번에 마이그레이션해야 할 필요는 없습니다. 이 섹션에서는 사용 가능한 옵션 중 일부를 살펴봅니다.

마이그레이션 재실행

위에서 언급했다시피 마이그레이션은 여러 번 실행할 수 있습니다. 이를 전제로 염두에 두어야 할 몇 가지 중요 사항이 있습니다.

  • 오류가 있는 경우 마이그레이션은 오류 지점을 파악하여 중단된 부분부터 시작하므로 이미 성공적으로 처리된 항목은 다시 만들 필요가 없습니다.
  • 커스텀 필드가 누락된 경우, TankPublishedFile에 추가 필드가 있지만 PublishedFile에 해당 필드를 만들지 않고 동시에 마이그레이션에서 해당 단계를 건너뛰었다면 일치하는 필드를 만든 후 마이그레이션을 재실행할 수 있으며 해당 필드의 메타데이터는 전송됩니다.
  • 라이브 프로젝트에서 마이그레이션을 실행할 수 있지만 복제된 자체 파이프라인 구성만 변환할 수 있고 해당 시점의 모든 게시가 전송되어 테스트할 수 있습니다. 테스트 단계에서 레거시 엔티티가 포함된 추가 게시를 만들 경우 마이그레이션을 재실행하여 중간 레코드를 선택하고 나머지 파이프라인 구성을 변환할 수 있습니다.

파이프라인 구성 변환 취소

마이그레이션을 실행했지만 나중에 문제가 발생하면 파이프라인 구성의 설정을 실행 취소하여 레거시 엔티티를 사용하도록 되돌릴 수 있습니다. 전달할 수 있는 --backout 플래그가 있어 이전 설정으로 전환됩니다.

> tank migrate_published_file_entities --backout

이 플래그에 대해 알아야 할 두 가지 중요한 사항이 있습니다.

  • 엔티티 마이그레이션 실행을 취소하지 않으며 마이그레이션된 모든 엔티티는 사용 중지되지 않습니다.
  • 새 PublishedFile 엔티티를 레거시 TankPublishedFile 엔티티 유형으로 다시 마이그레이션하지 않습니다.

이 플래그는 다른 셸 엔진 명령 및 플래그와 동일한 계층 구조를 따릅니다. 따라서 고유의 파이프라인 구성, 프로젝트의 모든 파이프라인 구성 등을 취소할 수 있습니다.

마무리 작업

마이그레이션에 만족하면 마지막 단계는 레거시 탱크 엔티티를 비활성화하는 것입니다. 이러한 엔티티는 Shotgun 사이트 기본 설정(Site Preferences)의 일반적인 "엔티티(Entities)" 섹션에 나타나지 않습니다. 이 단계는 이러한 엔티티를 다른 용도로 재사용하지 않도록 하는 것이므로 해당 엔티티를 사용 중지할 수 있습니다. 레거시 탱크 엔티티를 비활성화하려면 "고급(Advanced)" 섹션으로 이동하여 전환을 찾아 No로 설정합니다.

마지막으로 레거시 TankPublishedFile을 표시하는 상세 정보 페이지 탭을 제거해야 합니다. Shotgun 사이트 기본 설정(Site Preferences)에서 레거시 탱크 엔티티를 비활성화하면 레이아웃에서 제거되지 않기 때문입니다. 상세 정보 페이지에서 디자인 모드로 이동하여 레거시 탭을 삭제하고 새 엔티티를 위한 새 탭을 만듭니다. 전역 기본 레이아웃에 새 엔티티가 있는지도 확인합니다.

팔로우

0 댓글

댓글을 남기려면 로그인하세요.