Professional Services EM スコーピング - マイグレーション

マイグレーションのスコーピングプロセスについて説明します。

セールス向け情報 - SaaS へのマイグレーションのポジショニング

マイグレーションスコーピングの詳細

このページでは、GitLab、Bitbucket Server、または GitHub(Enterprise または .com)から、宛先 GitLab インスタンス(セルフマネージドまたは SaaS)へのマイグレーションのスコーピングについて説明します。これらのマイグレーションでは、通常、自動化ツールである Congregate を使用します。他の SCM システムからのマイグレーションや、GitLab 以外の CI/CD マイグレーションは、このマイグレーションツールの対象外であり、別途スコーピングする必要があります。

services calculator を使用して、SA、CSM/CSM がスコーピング Issue を作成し、エンゲージメントマネージャーと協力して顧客向けのサービス見積りを反復・改善できます。この Issue では、SCM マイグレーションスコーピング質問に追加コンテキストを含めており、以下でプレビューできます。

SCM マイグレーションスコーピング質問顧客の回答回答例質問する理由
ソース SCM システムto-doBitbucket Server、GitLab セルフマネージドGitLab PS には、最も一般的なソースシステムのマイグレーションを促進する自動化があります。マイグレーション時間を正確にスコーピングするために、データがどのシステムから来ているかを把握する必要があります。
宛先 GitLab デプロイメント(SaaS、セルフマネージド(HA)、セルフマネージド(シングルノード))to-doSaaSマイグレーション中に必要となるデータのスループットを処理するのに十分な強さの宛先システムデプロイメントを保証するために質問します。
ソース GitLab バージョン(最新の 2 つ前以内である必要あり)to-do13.4マイグレーションサービスは、プロジェクトのインポート/エクスポート API を含む多くの GitLab API を活用します。こちらにドキュメント化された 特定の互換性ガイドラインがあります。
宛先 GitLab バージョン(ソースの 2 マイナーバージョン以内である必要あり)to-do14.1マイグレーションサービスは、プロジェクトのインポート/エクスポート API を含む多くの GitLab API を活用します。こちらにドキュメント化された 特定の互換性ガイドラインがあります。
ユーザーの総数**to-doBB = 225、GLSM = 775データ要素が適切に関連付けられることを保証するため、データのマイグレーションの前提となるステップとしてユーザーをマイグレーションします。これはマイグレーションエンゲージメントにおける個別のタスクであり、ユーザー数を入力としてスコーピングする必要があります。
ポートフォリオ総数(ステークホルダー代表を伴う)to-do6マイグレーション中に必要となる調整量を特定するためのプロキシメトリックとして総ポートフォリオを使用します。物事をスムーズに進めるために、各ポートフォリオリーダーがマイグレーションプロセスを理解し、賛同する必要があります。この調整時間はマイグレーションエンゲージメントに組み込まれています。
Git リポジトリの総数to-doBB = 1,234; GL = 4321工数日数を見積もるために、マイグレーションされるリポジトリの総数を把握する必要があります。注: Bitbucket プロジェクトには複数の git リポジトリを含めることができます。リポジトリの総数が必要です。
5GB を超える GitLab リポジトリの総数to-doBB N/A、GL = 3GitLab セルフマネージドから GitLab.com へのマイグレーションにのみ適用されます。5GB を超えるリポジトリは、Cloudflare の 5 GB 制限のため手動でマイグレーションする必要があります。プロジェクトサイズの合計ではなく、リポジトリサイズのみを気にすることに注意してください。
CI/CD システムto-doJenkins顧客が IT オペレーションを再開できるよう、新しい SCM システムへのパイプラインジョブの再ポイントにかかる時間を見積もるために、どの CI/CD システムが使用されているかを把握する必要があります。
CI/CD ジョブの総数(CI/CD ジョブはマイグレーションされなくてもカットオーバーが必要)to-do4567エンゲージメントには CI/CD ジョブをソースリポジトリに再ポイントすることが含まれる場合があります。これに該当する場合、何個のジョブを再設定する必要があるかを把握する必要があります。
一般的なレジストリサイズto-do159MBレジストリサイズが異常に大きい場合、マイグレーションの速度に影響する可能性があります。注: この質問は、GitLab がソースシステムであるマイグレーションにのみ適用されます。
SSO ID プロバイダーto-doAuth0これはマイグレーションエンゲージメントの成功のための基盤であるため、マイグレーション前にすでに導入されていることを確認したいと考えています。サポートされている ID プロバイダーの全リスト はこちらを参照してください。
ソースシステムの OS とバージョンto-doUbuntu v21.10マイグレーション前にソースシステムのアップグレードが必要/含まれる場合、新しいバージョンの GitLab をサポートするために OS を顧客側でアップグレードする必要がないことを確認したいと考えています。詳細は インストール要件 を参照してください。
ソースシステムの DB バージョンto-doPostgreSQL 13.0マイグレーション前にソースシステムのアップグレードが必要/含まれる場合、新しいバージョンの GitLab をサポートするために DB をアップグレードする必要がないことを確認したいと考えています。詳細は インストール要件 を参照してください。

注意:

  1. ソースコード管理(SCM)マイグレーションには、シークレットの仲介は含まれません。
  2. SCM マイグレーションには、CI/CD 機能を GitLab CI を使用するように移行することは含まれません。

GitLab セルフマネージドから GitLab.com へのマイグレーションに関する注意事項

  • SaaS へのマイグレーションが最良の推奨事項とならない特定のケースがあります。SaaS が最良のソリューションかどうかを顧客と判断する際の検討事項は次のとおりです。
    1. 顧客は GitLab CI 以外を使用していますか? もしそうなら、CI ツールと GitLab.com の間に接続を確立できますか? GitLab と CI/CD ツールの使用を妨げる問題が時々発生します。例えば、顧客がネットワークセキュリティチームに対し、ファイアウォールの背後で GitLab SaaS と CI/CD ツールを使用できるようにファイアウォール設定を調整するよう説得できない場合があります。
    2. 顧客が非常に多くのプロジェクトを持つ場合、これは変更管理上の課題となるだけでなく、マイグレーション実施のコストが大きくなりすぎる場合があります。例えば、最近のセルフマネージドインスタンスでパフォーマンスの問題を抱えていたある顧客の場合、SaaS へのマイグレーションには 40 万ドルと 150 日以上が必要となる予定でした(1600 ユーザー、20,000 以上のプロジェクト)。Ultimate を使用している顧客には GitLab Dedicated がより良い選択肢となる場合があります。
    3. 顧客は SaaS で利用できないセルフマネージド機能(例: サーバーフック)の使用継続を強く望んでいる場合があります。詳細は セルフマネージドと SaaS の違い を参照してください。
    4. 顧客は SaaS へのマイグレーションが困難となる非常に大きな GitLab プロジェクトを持っている可能性があり、SaaS を使用するには 追加のストレージ消費に対する支払い が必要となります。さらに、顧客が非常に大きなモノレポを持つ場合、git や CI のパフォーマンスに既知の問題があります。
  • セルフマネージドから SaaS へのマイグレーション には、追加情報、概算見積り、よくある顧客の質問が含まれています。
  • GitLab UI マイグレーションと Congregate マイグレーションの比較を確認し、どの機能がマイグレーションされ、どれがされないかをよりよく理解するには、Congregate Features Matrix を参照してください。
  • Congregate を使用したある GitLab インスタンスから別のインスタンスへのマイグレーションでは、ソースシステムのグループとプロジェクトの構造がマイグレーション中に保持される必要があります。
  • スコーピングには、標準の Automated Migration PS Engagement Estimate Template を使用します。30 個未満のリポジトリを持つ非常に小さなマイグレーションの場合、Manual Migration Estimate Template を使用して手動マイグレーションのコストと自動マイグレーションのコストを比較してください。
  • SaaS Discovery、SSO 設定、セキュリティ設定のアクティビティは、通常 SaaS へのマイグレーションに追加されます。詳細は Services Calculator のアクティビティを参照してください:
  • マイグレーションアプローチの概要、どの機能がマイグレーションされるか/されないかについては、TEMPLATE Professional Services Presentation を参照してください。これには、新しい SaaS 顧客向けによく追加する SaaS Discovery、SSO 設定、セキュリティ設定のアクティビティの説明も含まれています。

GitLab セルフマネージドから GitLab セルフマネージド

  • Congregate を使用できますが、他のオプションも利用可能です:
    • rake タスクを使用した バックアップと復元。これにより、ある GitLab インスタンスから別のインスタンスにすべてのデータを復元できます。これはマイグレーション期間を短縮するために使用できますが、バックアップにかかる時間中はソースインスタンスをロックする必要があるため、完全なダウンタイムが発生します。また、データのサイズによっては、これに数時間から数日かかる場合があります。
    • Geo レプリケーション。この方法では、新しい GitLab インスタンスを Geo セカンダリとしてセットアップできます。データは時間をかけて同期されます。その後、フェイルオーバーを実行して新しいインスタンスをプライマリにできます。これはバックアップ/復元アプローチよりも複雑になりがちで、より専門的なスキルセットを必要とします。

GitLab セルフマネージドから GitLab Dedicated インスタンス

  • セルフマネージドからセルフマネージドへのマイグレーションと同様に、セルフマネージドから Dedicated インスタンスへのマイグレーションも、Congregate、バックアップ・復元アプローチ、または Geo レプリケーションを使用して実行できます。Congregate オプションを使用する場合、プロジェクトは最大 500 のウェーブでマイグレーションできます。
  • プロジェクトを含むグループのマイグレーションは Beta 機能 であり、Dedicated インスタンスへのマイグレーションにも使用できます。Dedicated インスタンスは GitLab バージョン 15.10 以降である必要があります。この方法の制限事項と要件を理解するには、リンクされたドキュメントを参照してください。

GitHub ソース

GitHub Enterprise から GitLab セルフマネージド

  • これは私たちのソースと宛先システムの最強の組み合わせの 1 つです。最良のケースで 1 ウェーブあたり 7,000 以上のプロジェクトをマイグレーションしました。
  • 移行期間の最小化が懸念事項である場合、ウェーブあたりのプロジェクト数を最大化したいと考えます。
    • これを行うために、GitHub API レート制限設定を完全に制御する必要があります。
    • また、データ移動をサポートできるよう、GHE と GitLab SM インスタンス間に十分強力なネットワーク接続があることを確認したいと考えます。明確な数値はありませんが、多数の接続を介して数時間で数百 GB を移動することについて顧客に尋ねます。彼らのネットワークチームが回答できるはずです。
  • 顧客がグループ/プロジェクトの構造を再編成したい場合、サポートできます(以下のよくある顧客リクエストを参照)。
  • マイグレーションが正しく機能するためにメールアドレスを非公開ではなく公開にする必要があることを顧客が認識していることを確認してください。
  • インポート呼び出しで特定の github ホスト名を指定できるようにする API の変更(github.com にデフォルト設定されない)を活用するため、GitLab セルフマネージドは 13.7 以降である必要があります。

GitHub Enterprise から GitLab SaaS

  • 宛先システムのレート制限がこれらのマイグレーションの制限要因となります。gitlab.com のレート制限を制御することはできないため、これらはウェーブあたり 200〜300 でスコーピングする必要があります。
  • インポート呼び出しで特定の github ホスト名を指定できるようにする API の変更(github.com にデフォルト設定されない)を活用するため、GitLab セルフマネージドは 13.7 以降である必要があります。
  • マイグレーションが正しく機能するためにメールアドレスを非公開ではなく公開にする必要があることを顧客が認識していることを確認してください。

Github.com から GitLab セルフマネージド

  • Github.com の API レート制限はユーザーごとに非常に低いため、顧客が提供する複数の userID を使用することで回避します。
  • これを大規模に顧客に提供するまで、1 日あたりにマイグレーションされるプロジェクトの総数は 200 を超えるべきではありません。プロジェクト数の点で小規模に行ったことはあります。しかし、それらのプロジェクトの一部は巨大でした(70K 以上の Pull Request)。
  • マイグレーションが正しく機能するためにメールアドレスを非公開ではなく公開にする必要があることを顧客が認識していることを確認してください。

Github.com から GitLab SaaS

  • ソースと宛先システムの両方のレート制限によって制限されます。
  • マイグレーションが正しく機能するためにメールアドレスを非公開ではなく公開にする必要があることを顧客が認識していることを確認してください。

Bitbucket ソース

注: Bitbucket のプロジェクトは GitLab のグループに相当します。Bitbucket のリポジトリは GitLab のプロジェクトに相当します。

Bitbucket Server から GitLab セルフマネージド

  • 理論的には、このソース/宛先のペアでのマイグレーションは GHE から GL セルフマネージドと同じくらい高くスケールできるはずです。ウェーブあたりのプロジェクト数を 1,000 まで増やしても安全です。
  • 移行期間の最小化が懸念事項である場合、ウェーブあたりのプロジェクト数を最大化したいと考えます。
    • これを行うために、BitBucket API レート制限設定を完全に制御する必要があります。
    • また、データ移動をサポートできるよう、BitBucket Server と GitLab SM インスタンス間に十分強力なネットワーク接続があることを確認したいと考えます。明確な数値はありませんが、多数の接続を介して数時間で数百 GB を移動することについて顧客に尋ねます。彼らのネットワークチームが回答できるはずです。
  • 顧客がグループ/プロジェクトの構造を再編成したい場合、サポートできます(以下のよくある顧客リクエストを参照)。

Bitbucket Cloud から GitLab セルフマネージド

  • GitLab には現在、Bitbucket Cloud からのインポートを開始するための API がありません。自動マイグレーションは不可能です。
  • インポートを支援するために BB cloud import UI を使用する「魚の釣り方を教える」アドバイザリアプローチをポジショニングできます。

Bitbucket Server から GitLab SaaS

  • GitLab SaaS のレート制限により制限されるため、スコーピングは低くなります(例: ウェーブあたり 200 プロジェクト)。

Bitbucket Cloud から GitLab SaaS

  • GitLab には現在、Bitbucket Cloud からのインポートを開始するための API がありません。自動マイグレーションは不可能です。
  • インポートを支援するために BB cloud import UI を使用する「魚の釣り方を教える」アドバイザリアプローチをポジショニングできます。

Team Foundation Server(TFS)/ Azure DevOps(ADO)から GitLab

Azure DevOps(旧称 Team Foundation Server)にはソースコードリポジトリ以上のものが含まれているため、ADO マイグレーションをスコーピングする際には追加の質問が必要です。ADO の 5 つの一般的なコンポーネントは次のとおりです。

  • Azure Boards: バックログを通じて作業を計画、構造化、管理するためのアジャイルツールセット。GitLab の Issue または JIRA チケットに相当します。
  • Azure Repos: バージョン管理システム。Git または Team Foundation Version Control(TFVC)をサポートします。
  • Azure Pipelines: アプリケーションの継続的インテグレーションとデリバリーをサポートするビルドおよびリリースサービス。GitLab CI/CD に相当します。
  • Azure Test Plans: 手動/探索的テストや継続的テストなど、アプリケーションをテストするための複数のツール。
  • Azure Artifacts: パブリックおよびプライベートソースから Maven、npm、NuGet、generic などのパッケージを保存・共有するサービス。GitLab Package Registry に相当します。
質問回答回答例質問する理由
全般
SaaS かセルフホストか?Azure DevOps(SaaS)ADO Server(セルフホスト)の場合、ソフトウェアバージョンとその他の詳細(SQL バージョンなど)を把握する必要があります。これは、適切なマイグレーションアプローチを選ぶのに役立ちます。
マイグレーションが必要な組織は何個ありますか?1この質問への回答は、現在の状態、必要な作業量を理解し、GitLab の将来のアーキテクチャに貢献するのに役立ちます。
組織あたりのプロジェクト数は?500この質問への回答は、マイグレーションの時間とアプローチを見積もるのに役立ちます。
プロジェクト/リポジトリの比率は?1:1この質問への回答に基づき、リファクタリング/再構成のための追加のアドバイザリサービスが必要となる場合があります。
Azure Boards
ADO で workitem を使用していますか?はいworkitem を保持する必要がある場合、追加のマイグレーションおよび/またはアドバイザリのアクティビティをエンゲージメントに追加する必要があります。注: ADO workitem には、GitLab Issue でサポートされていない機能(例: カスタムフィールドおよびワークフロー)があります。スコーピング中に、これらの違いを顧客が認識していることを確認してください。
どのテンプレートを使用していますか?Scrum、Agile、SCCM現在の状態を理解し、GitLab の Issue がすべての機能をサポートしていることを確認するためです。
ボードでどのカスタマイズを使用していますか?追加のスイミングレーン、カスタムフィールドなどこの回答に基づき、可能なこと/不可能なことを議論し、代替案を提案するための追加のアドバイザリサービスが必要となる場合があります。
Azure Repos
SCM に Git または TFVC を使用していますか?Gitこれは ADO サーバーとのやり取り方法に影響し、Git への変換が必要かどうかを決定します。
コードリポジトリは何個ありますか?500これは上記の一般的なアプローチの決定に影響します。
コードリポジトリでブランチを使用していますか?はい一部のリポジトリで答えがいいえの場合、顧客は履歴を保持するためにリポジトリ内の特定のフォルダーをブランチに変換するか、履歴のないリポジトリのフラットファイルマイグレーションを受け入れるかを選択する必要があります。
コードリポジトリで履歴を保持する必要がありますか?はい答えがいいえで、顧客が ADO を使用している場合、リポジトリを Git に変換する必要はありません。
Azure Pipelines
ソフトウェアのビルドに ADO を使用していますか?はい答えがはいの場合、CI/CD コンサルティング/トランスフォーメーションのアクティビティがエンゲージメントに追加されます。
コードリポジトリあたり何個のビルド/ビルドテンプレートが使用されていますか?1これは複雑性の指標です。コードリポジトリには複数の異なるビルド定義が含まれることがあります。
複数のソリューション(.sln)またはプロジェクト(.csproj)ファイルが同じパッケージをビルドしていますか?はいはいの場合、これらのソリューション/プロジェクトファイルを GitLab パイプラインで動作するようリファクタリングするためのアドバイザリサービスが必要となる場合があります。
ビルドサーバーは何台使用していますか?1通常、ビルドサーバーをよりエフェメラルなものに変換するため、使用中のビルドサーバーが多いほど、よりエフェメラルなものに移行するために必要な開発が多くなります。
ビルドプロセスで使用されている特定のフラグはありますか? もしあれば、何ですか?はいこれは、顧客が移行プロセス中に使用するためにこのデータを測定していることを示します。
クラシックリリースを使用していますか?いいえ答えがはいの場合、YAML(pipeline as code)の概念について教育するために追加の作業が必要となる場合があります。
UI ビルド定義を使用していますか?いいえはいの場合、CI/CD コンサルティング/トランスフォーメーションのアクティビティが追加されます。
すべての定義(ビルド/リリース)に YAML を使用していますか?はいこの質問の答えが「はい」の場合、SOW に追加の作業とアドバイザリサービス(CI/CD コンサルティング/トランスフォーメーションのアクティビティなど)が含まれる場合があります。
ビルド/テスト/リリースプロセスの一部として、マーケットプレイスからの拡張機能を使用していますか? 拡張機能のリストを提供してください(答えが「はい」の場合)はい。テンプレートのリンティング用 ARM-ttk 拡張機能。はいの場合、GitLab にこれと同等のものがあるか(または代替ソリューションを提案するか)を確認する必要があります。
どのタイプのエージェントを使用していますか?セルフホスト、Microsoft ホスト(windows-latestubuntu-latest など)この回答に基づき、提案するランナーアーキテクチャと GitLab がそれをサポートしているか、また同様の状態を達成するためにどれだけの作業が必要かを判断します。
特別な要件はありますか(ネットワーク接続、ビルド/テスト/リリースプロセスに必要なコンポーネントなど)?はい、Visual Studio 2017 の機能(レガシーソフトウェアなど)が必要答えに基づき、カスタムランナーイメージ(機能をインストールするためなど)が必要かどうかを判断します。
将来 CI/CD で何か特別なものを使用/追加する計画はありますか?GPU 最適化エージェント答えに基づき、将来的な制限を回避するために GitLab Runner についての判断を行います。
Azure Test Plans
テスト計画を使用していますか、また GitLab で同様の機能が必要ですか?はい答えに基づき、GitLab で同等の機能を提案する必要があります。
Azure Artifacts
アーティファクトフィードを使用していますか?はい現在の状態を理解するためです。
どのタイプのフィードですか?Maven、npm、NuGet現在の状態を理解し、GitLab に同じ機能があることを確認するためです(GitLab Package Registry を参照)。
ビルド/パイプラインアーティファクトを使用していますか?はい
パッケージの保持ポリシーは何ですか?また、それらをマイグレーションする必要がありますか?365 日、マイグレーション不要マイグレーションのための追加作業、または既存の ADO フィードを保持するアドバイザリサービス、もしくは GitLab Package Registry を使用するようアプリケーションをリファクタリングするための追加作業を見積もるためです。
インテグレーション
ADO サーバーに紐づいた外部ツール/アプリケーションはありますか?はい。メトリクス収集のために TFS から日次でプルする社内ツールを使用しています。答えがはいの場合、それらのツールを Git からプルするように移行するために、追加のアクティビティを SOW に追加する必要があります。

その他の Git ベースの SCM

  • 「ベア git」マイグレーション方法を使用してこれらの顧客をサポートできます。これは Import repo by URL UI またはコマンドライン(git push -u)を使って行います。
  • 顧客はマイグレーションをサポートするために繰り返し処理する git URL のリストを提供する必要があります。
  • git エンベロープ外のデータ要素(例: pull request コメント、ユーザーメンバーシップなど)はマイグレーションされません。git データ要素(ブランチ、コミット、ファイル、タグなど)のみがマイグレーションされます。

非 Git ベースの SCM

  • CSV、ClearCase、SVN、TFVC などのソースについては、非自動マイグレーションをサポートできますが、これらのソースシステムに関する深い経験がないため、これらのエンゲージメントには考慮すべきリスクがあります。これらのソースシステムの専門知識を見つけるためにチャネルパートナーと連携することを検討してください。
  • 顧客が宛先 GitLab システムでプロジェクトをどのように整理するかを調査・検討していることを確認してください。多くの場合、非 git SCM から git SCM への最初の変換時に、ソースコードの単一トランクを複数の git リポジトリに分割することがあります。

よくある顧客リクエスト

1. マイグレーション中にプロジェクトとグループを再編成できますか?

  • congregate では、Github Enterprise と Bitbucket のソースシステムについてこれを実行できます。顧客は、source project urldestination parent path を含む .csv ファイルを提供して、プロジェクトが宛先システムのどこに配置されるかを伝える必要があります。また、この再編成を伴うマイグレーションの前に、顧客または当方が事前にグループ構造を作成する必要があります。新しいグループ階層の作成のための時間をスコープに追加する必要があります。
  • ソースと宛先システムが GitLab の場合、これは強く推奨されません。直感に反しますが、GitLab にはリポジトリ構造外にプロジェクト/グループ構造内に存在する多くの他のデータがあり、それらを保持する必要があるため、再編成ステップはマイグレーション中に行うべきではありません。顧客がどうしてもこれを行う必要がある場合は、UI または API を使用してプロジェクトとグループのローカル移動を調整するマイグレーション前または後のステップとして行うことを推奨してください。
    • これは追加のマイグレーションアドバイザリ時間としてポジショニングできます。客観的なスコーピングを行うために、これが何の関数であるかを判断する必要があります。

2. 13.5 (またはいくつかの古いバージョン)を使用していますが、まだマイグレーションできますか?

  • ソースと宛先のソフトウェアバージョンの差が大きいほど、マイグレーション中にデータ整合性が失われる可能性が高くなります。インポート機能を維持するチームは、ソースと宛先が互いに 2 マイナーリリース以下 離れている場合にインポータが動作するとドキュメント化しています。このため、顧客のソースインスタンスを宛先ソフトウェアバージョンと一致するか、2 マイナーバージョン以下にするためのアップグレードサービスを含めています。極端な状況でのみ、このガイダンスの例外を検討します。

その他のリソース

  • マイグレーションサービスのデリバリー中に行われるステップを理解するのに役立つ、公開されている Migration Toolkit を参照してください。
  • マイグレーションテンプレートプロジェクトの Customer フォルダ には、顧客がマイグレーションを準備するのに役立つドキュメントが含まれています。
  • セルフマネージドから SaaS へのマイグレーション ハンドブックページには、gitlab.com へのマイグレーションに固有の詳細があります。

セルフマネージド GitLab から GitLab.com へのマイグレーション
顧客が GitLab.com へマイグレーションするのを支援する際に把握しておくべき事項。