青いセーターを着た人がコンピュータで作業している
Microsoft Base ロゴ

技術ブログ

Azureに関する技術情報

アプリケーションを Azure にリフトアンドシフトするエンドツーエンドの手順

Azure | Migrate | SQL Database

Share

※このポストは、2019 年 10 月 21 日に投稿されたAn end-to-end process for lifting and shifting your applications to Azureに加筆および更新を行ったものです。

この記事では、お使いのアプリケーションや関連するデータベースのすべてを Microsoft Azure による Web ワークロードに向けて移行する取り組みについて取り上げ、その合理化方法について説明します。Azure MigrateAzure App Service Migration AssistantData Migration AssistantAzure Database Migration Service を活用することによって、Web アプリとデータベースの Azure への移行が簡素化されます。その際、コードはほとんど、もしくはまったく変更する必要がありません。

概要

アプリケーションの概要

Parts Unlimited は、.Net Core 2.0 で構築した e コマース Web サイトのサンプルです。このサイトには、フロントエンドの注文ページ、モバイル エクスペリエンス、注文データベース、その他各種の一般的な e コマース機能が含まれています。このアプリケーションは Bootstrap を利用し、携帯電話やタブレット、PC に向けて、HTML5 による現代的なレスポンシブ レイアウトを実現しています。また、Azure Active Directory、Google、Facebook といった複数の認証オプションをサポートしています。それと同時に、このアプリケーションでは実稼働環境でのテスト、ステージング スロット、機能フラグ (推奨設定の有効化/無効化) 用の環境変数といった、Azure App Service のさまざまな機能が活用されています。このサイトは Visual Studio 2017 に対応しています。さらに、Docker ファイルおよびサンプルの発行プロファイルが用意されており、Docker コンテナーとしてデプロイできるようになっています。

移行対象となるこのアプリケーションは、Internet Information Services (IIS) を実行している Windows server 2012 上にホストされており、データベースは、SQL Server 2017 を実行しているコンピューター上にホストされています。

http://aka.ms/pulabs に、このサイトのコードのレポジトリがあります。

移行の取り組みの各フェーズ

クラウドへの移行を行う際は、Web アプリとデータベースをクラウドへ移すことになります。どちらについても、移行用のさまざまなツールや手法がありますが、標準的な移行の取り組みは、移行前、移行、移行後、最適化の 4 つのフェーズで構成されます。

移行前フェーズでは、次の作業を行います。

  1. サーバー、アプリケーション、データベース資産の検出
  2. アプリケーションの依存関係の確認
  3. 一緒に移行する必要があるコンポーネントの特定
  4. ターゲットとなる Azure 環境の準備状況の評価
  5. 最適なターゲット SKU の決定
  6. 古い構文を使用しているために Azure 移行時に動かなくなる可能性があるデータベース オブジェクトや、アプリケーション層のアドホック クエリの検出
  7. 移行後フェーズにおいて適用しなければならない修正の準備

移行フェーズでは、アプリケーション、スキーマ、データはもちろん、アプリケーションが依存するその他のサーバー オブジェクト (ログイン、SQL Server Agent ジョブ、SSIS パッケージなど) も合わせて移行します。

移行後フェーズでは、次の作業を行います。

  1. 評価時に報告された、破壊的変更に対する必要な修正の適用
  2. いくつかの機能テストの実施
  3. テスト中に検出されたパフォーマンス上の問題への対処

最後に最適化フェーズで、継続的な評価と調整を行います。最適化の目標は次のとおりです。

  • 運用に関する洞察の収集
  • パフォーマンスの微調整
  • TCO の削減
  • より優れたビジネス洞察の導出に向けた、クラウド ネイティブ サービスの活用開始
  • コンプライアンス目標の達成に向けたセキュリティの強化

以上が、移行の取り組みを俯瞰したロードマップとなります。ここからはアプリケーションと、そのアプリケーションをサポートするデータベースの移行プロセスについて、詳細を見ていきます。

検出

移行の取り組みの最初のステップでは、アプリケーションとデータべースをホストしているサーバー群を「検出」し、一緒に Azure に移行しなければならない、依存関係のあるエンティティの有無を判定します。

Azure Migrate を使用することで、Azure への移行対象となるオンプレミスのワークロードを評価できます。このサービスは、オンプレミスの仮想サーバーや SQL Server を実行しているサーバーが移行に適合しているかを検出し、評価します。Azure Migrate は、パフォーマンスに基づいてサイジングを行い、オンプレミスのコンピューターを Azure で実行する場合のコストを見積もります。

また、Microsoft Assessment and Planning Toolkit (“MAP Toolkit”) を使用して、さまざまなテクノロジ移行プロジェクトに向けて現在の IT インフラストラクチャを評価することもできます。このソリューション アクセラレータは、インベントリ作成、評価、レポーティングのための強力なツールとなり、移行計画プロセスを簡素化します。

サンプル アプリケーションである Parts Unlimited については、アプリケーション サーバーとデータベース サーバー、およびそれぞれに関連する依存関係が既に分かっているため、この記事では検出プロセスはスキップします。このアプリケーションと SQL Server データベースは、どちらも “SQL2017.redmond.corp.microsoft.com” という名前のサーバーでホストされています。

アプリケーションの移行

Azure App Service は、Web アプリケーションのホスティング、REST API、モバイル バック エンドを担当する HTTP ベースのサービスです。App Service に向けたアプリケーションの移行プロセスは、比較的シンプルです。このプロセスでは次の作業を行います。

  1. アプリを評価して、使用されているすべてのテクノロジについて、そしてそれらが App Service でホスト可能かどうかについての詳細なレポートを取得します。
  2. Migration Assistant をダウンロードします。これは現在、IIS のバージョン 7.0 以降で動作します。
  3. Migration Assistant を使用して次のことを行います。
    1. 準備状態のチェックを実行し、アプリケーションの構成設定の全体評価を行います。
    2. アプリケーションを App Service に移行します。

アプリケーションの評価

評価を開始するには、Assess your site (サイトの評価) ページに移動し、公開している URL を入力してから [Assess] (評価) を選択します。

サイト ページの評価のスクリーンショット

App Service は、サポートされているテクノロジの静的な (したがって古くなっている可能性がある) リストには頼りません。App Service はその代わりに、スキャン対象のサイトで使用されているテクノロジの動的生成リストと、既に App Service でホストされているサイトの同様のリストとを比較して、際立った正確性を備えた評価レポートを生成します。特定のテクノロジに対して肯定的評価が得られた場合、そのテクノロジを既にプラットフォーム上で使用しているお客様の事例が少なくとも 1 つはあることが保証されます。

以下の例をご覧ください。

clipboard_image_12.png

注: [Show more technologies detected for the site] (サイトで検出されたその他のテクノロジを表示) トグルを使えば、サイトで使用されているテクノロジについてさらに詳しく確認することができます。

Migration Assistant のダウンロード

サイトの評価が正常に完了したら、Assess your site (サイトの評価) ページで [Start Migrating Now!] (今すぐ移行を開始) を選択するか、あるいは Download the Migration Assistant for your .NET and PHP Apps (.NET および PHP アプリ用の Migration Assistant のダウンロード) ページに移動して、[Download] (ダウンロード) を選択します。

clipboard_image_13.png

Migration Assistant の実行

ダウンロードとインストールが完了したら、App Service Migration Assistant を開始します。
Migration Assistant は、詳細な評価を行ってから移行プロセスの手順について説明する、ローカル エージェントです。このツールは、準備状態チェックを実行し、また Web アプリケーションの構成設定の全体評価も実施します。

評価レポートのスクリーンショット

準備状態チェックが完了したら、評価レポートを確認して、警告があれば検討し、エラーが発見された場合は解決する必要があります。アプリケーションの評価レポートでエラーが見つからなければ、Migration Assistant によって、Azure サブスクリプションでの認証プロセスの手順が説明され、移行先アカウントの詳細と、新たに移行するサイトのその他の詳細構成を入力することが求められます。

Azure App Service 移行アシスタントのスクリーンショット

適切な詳細を入力してから [Migrate] (移行) を選択すると、Migration Assistant によって、サイトが App Service 内のターゲット アプリケーションに移されます。

サポートされている構成

Migration Assistant は、ほとんどの現代的な ASP.Net アプリケーションおよび PHP アプリケーションを移行できるように設計されていますが、あらゆる構成をサポートしているわけではありません。ツールのサポート対象の詳細や、サポート対象外となる一部のサイト用の対応策については、GitHub の App-Service-Migration-Assistant wiki を参照してください。App Service への移行の詳細は、App Service 移行チェックリストにも記載されています。

データベースの移行

Migration Assistant は Web アプリケーションおよびそれに関係する構成物の移行に対応していますが、データベースの移行は行いません。データベースを Azure に移行するためには、Azure Database Migration Service” rel=”noopener noreferrer”> を使用します。”>Azure Database Migration Service を使用します。

注: データベースをクラウドではなく引き続きオンプレミスで実行する場合は、アプリ移行プロセスで、Migration Assistant によるハイブリッド接続のセットアップを指定してください。その後、ハイブリッド接続を使って、クラウドベースのアプリケーションをオンプレミスのデータベースと接続してください。

ターゲットの準備状況の評価

データベースの移行を開始する前に、Data Migration Assistant を使用して、オンプレミスの SQL Server データベースである PartsUnlimitedDB を評価し、その結果を Azure Migrate ハブにアップロードして、SQL Database への移行の準備状況に関するレポートを生成します。詳しいガイダンスについては、こちらを参照してください。

以下に示す Azure Migrate の評価では、PartsUnlimitedDB データベースの優先ターゲットとして SQL Database Managed Instance が推奨されています。

評価済みデータベースのスクリーンショット

Data Migration Assistant を使用してデータベースの評価を実行する際は、Data Migration Assistant において、スキーマの移行対象としてデータベースを選択してください。また、アプリケーション データ層を通して発行されるアドホック クエリ、動的クエ

リ、DML ステートメントを評価する拡張イベント トレースの対象としても、データベースを選択してください。詳しいガイダンスについては、こちらを参照してください。

いずれかの SQL Server Integration Services (SSIS) パッケージの移行を計画している場合は、必ず最初に SSIS パッケージを評価して、実行する必要がある移行ステップがないか確認してください。詳しいガイダンスについては、こちらを参照してください。

ターゲット レベルと推奨 SKU の取得

データベースをホストしているコンピューターから収集されたパフォーマンス カウンターに基づいて、SQL Database Single Database と SQL Database Managed Instance の最小推奨ターゲット SKU を特定する必要があります。この情報は、移行後のエクスペリエンスを最適化するために役立ちます。Azure Database Migration Service の SKU レコメンデーション機能は、価格レベル、コンピューティング レベル、最大データ サイズに関する推奨事項と、月額料金の見積もりを提供します。またこの機能により、すべての推奨データベースに向けて、Azure の単一データベースやマネージド インスタンスを一括プロビジョニングすることもできます。詳しいガイダンスについては、こちらを参照してください。

以下に示すのは、SQL Database Managed Instance への移行に向けて、PartsUnlimitedDB データベースをホストする SQL Server を対象として生成された html レポートです。このレポートは、アクティビティのピーク時に収集されたワークロード データに基づいています。

SKU.PNG

Data Migration Assistant のターゲット SKU の評価では、少なくとも 8 個の vCore を使った、Gen 5 の「汎用」 SKU が推奨されています。月額料金の見積もりは、Azure ハイブリッド特典 (HBU) 付きでおよそ 1,000 ドルです。
次に、[Generate Provisioning Script] (プロビジョニング スクリプトの生成) を選択して、ターゲットとなる SQL Database Managed Instance のプロビジョニングに役立つ PowerShell スクリプトを作成します。あるいは、こちらの詳細なガイダンスに従って、SQL Database Managed Instance を作成することもできます。

Azure Database Migration Service を使用したデータベースの移行

Azure Database Migration Service は、複数のデータベース ソースから Azure Data プラットフォームへ最小限のダウンタイムでシームレスに移行 (オンライン移行) できるように設計された、フルマネージドのサービスです。以下に示すいくつかの簡単なステップにより、PartsUnlimitedDB データベースを SQL Database Managed Instance へ、最小限のダウンタイムで移行できます。

  1. Azure Database Migration Service のインスタンスを作成します。
  2. ソース サーバーとターゲット サーバーの接続文字列と、関連する資格情報を入力して、移行プロジェクトを作成します。
  3. Azure Database Migration Service がターゲット データベースでの復元を行う際に使用できる完全バックアップおよびログ バックアップが格納された、オンプレミスのローカル SMB ネットワーク共有を用意します。
  4. 準備が整い、すべてのログ バックアップがターゲットに適用されたことを確認したら、最終的な移行のカットオーバーを実行します。

詳しいガイダンスについては、こちらを参照してください。

注: 必ず移行状況を監視し、データベースのカットオーバーが完了するまで待ってください。

clipboard_image_18.png

Azure Database Migration Service を使用した SQL Server オブジェクトの移行

データベースを移行するだけでなく、アプリケーションが依存するデータベース外のコンポーネント (サーバー オブジェクト。データベース ログインや ETL ジョブなど) もすべて移行する必要があります。

ログインの移行

Parts Unlimited のユーザーは、SQL Server ログインと Windows ログインを使用してデータベース層にアクセスします。SQL Server ログインはそのまま移行し、Windows ログインは、セキュリティ保護が可能なオブジェクト、特権、グループ メンバーシップと共に Azure AD ログインにマッピングする必要があります。Azure Database Migration Service を使用して SQL Server ログインと Windows ログインの両方を移行できます。

ログイン移行機能は、SQL Database Managed Instance に向けたオフラインの (一度の) 移行ワークフローで利用できます。詳しいガイダンスについては、こちらを参照してください。

注: Windows ログインの移行時には、次に示す Settings-Configuration (設定-構成) ページで、Windows ログイン移行設定が有効になっていることを確認してください。

clipboard_image_19.png

SQL Server Agent のジョブの移行

Azure Database Migration Service PowerShell コマンドレット オプションを使用して、SQL Server Agent ジョブをオンプレミスの SQL Server から SQL Database Managed Instance に移行します。コマンド ライン オプションのガイダンスについては、こちらのページのトピック「Select agent jobs (エージェント ジョブを選択する)」を参照してください。

SQL Server SSIS パッケージの移行

SQL Server Integration Service (SSIS) パッケージを移行するには、こちらのステップに従ってください。まずはソースとなる SSIS プロジェクトとパッケージを評価し、これらのパッケージやプロジェクトが移行に適合していれば移行します。

接続文字列の変更

Azure Portal にログインして、Azure に移行したアプリケーションを開きます。TOC ブレードで、次に示すように「edit」と入力し、[App Service Editor (Preview)] を選択します。

clipboard_image_20.png

次に示すように、Web.config ファイル内の接続文字列を変更します。

clipboard_image_21.png

その後、PartsUnlimited アプリケーションを起動し、SQL Database Managed Instance へ新たに移行したデータベースに、アプリケーションが正しく接続することを確認します。

移行後の検証

アプリケーションとすべてのデータベースの移行が正常に完了したら、一連の移行後タスクを実行して、すべての機能ができる限り円滑的、効率的に動作していることを確認する必要があります。

特にデータベースについては、ターゲット環境へのデータ移行後にオブジェクトを修復します。その際は、Data Migration Assistant による評価レポートの [Breaking changes] (破壊的変更) セクションで示された、オブジェクトに対する修正提案を利用します。さらに、機能テストとパフォーマンス テストを忘れずに実行してください。必要に応じて、ターゲットとなる SQL Database Managed Instance を望ましい応答時間が得られるように最適化します。

SQL Database Managed Instance のチューニング方法については、次のリソースを参照してください。

最適化

移行後の検証が完了したら、反復的な最適化プロセスを通じて、ターゲット環境でソリューションの最良のパフォーマンスと機能性が得られるようにすることが重要です。

詳細については、次のリソースを参照してください。

  • Azure Cost Management を利用して透明性と正確性を確保し、クラウドの費用を管理することができます。
  • Azure のオファリングによるコスト削減: Azure ハイブリッド特典Azure Reserved Virtual Machine Instances といった Azure のオファリングを活用するとともに、ワークロードに合わせた移行後の仮想マシンの適切なサイジングを継続的に行うことで、価値を高めることができます。
  • セキュリティ保護と管理: Azure のサービスを使って、仮想マシン、アプリケーション、データの保護と管理を促進することができます。

※本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

< 前の記事

> 次の記事

トップに戻る