オンプレミス アプリケーションを Azure App Service Web アプリと SQL マネージド インスタンスにリファクターするRefactor an on-premises application to an Azure App Service web app and a SQL managed instance

この記事では、Contoso という架空の会社が、Azure への移行の一環として、VMware 仮想マシン (VM) 上で実行される 2 階層の Windows .NET アプリケーションをリファクターする方法を説明します。This article demonstrates how the fictional company Contoso refactors a two-tier Windows .NET application that's running on VMware virtual machines (VMs) as part of a migration to Azure. Contoso チームは、アプリケーションのフロントエンド VM を、Azure App Service の Web アプリに移行します。The Contoso team migrates the application front-end VM to an Azure App Service web app. また、Contoso がアプリケーション データベースを Azure SQL マネージド インスタンスに移行する方法についても説明します。The article also shows how Contoso migrates the application database to an Azure SQL managed instance.

この例で使用する SmartHotel360 アプリケーションは、オープンソースとして提供されています。The SmartHotel360 application that we use in this example is provided as open source. 独自のテスト目的に沿って使用する場合は、GitHub からダウンロードできます。If you want to use it for your own testing purposes, you can download it from GitHub.

ビジネス ドライバーBusiness drivers

Contoso の IT リーダーシップ チームは、ビジネス パートナーと密接に連絡を取り合い、彼らがこの移行で何を達成しようとしているのかを理解しました。The Contoso IT leadership team has worked closely with business partners to understand what they want to achieve with this migration:

  • ビジネスの成長への対応Address business growth. Contoso は成長を続けており、オンプレミスのシステムとインフラストラクチャに負荷がかかっています。Contoso is growing, and there is pressure on their on-premises systems and infrastructure.
  • 効率化Increase efficiency. Contoso では、不要な手順を排除し、開発者とユーザーのプロセスを効率化する必要があります。Contoso needs to remove unnecessary procedures and streamline processes for developers and users. ビジネス部門は IT に対して、時間やコストを無駄にせず、迅速に作業を行ってもらう必要があります。これは、例えば、顧客の要求に素早く対応するためです。The business needs IT to be fast and not waste time or money, thus delivering faster on customer requirements.
  • 機敏性の強化Increase agility. Contoso IT は、ビジネス部門の要求に対して、対応力を向上させる必要があります。Contoso IT needs to be more responsive to the needs of the business. また、グローバル経済での成功を実現するために、市場の変化に遅れることなく対応できる必要があります。It must be able to react faster than the changes in the marketplace, to enable success in a global economy. 対応の遅さが障害となったり、ビジネスを阻害したりすることがあってはなりません。Reaction time must not get in the way, or become a business blocker.
  • スケールScale. ビジネスが順調に成長していく中で、Contoso IT は、同じペースで拡張できるシステムを提供する必要があります。As the business grows successfully, Contoso IT must provide systems that are able to grow at the same pace.
  • コストの削減Reduce costs. Contoso はライセンス コストを最小限に抑えたいと考えています。Contoso wants to minimize licensing costs.

移行の目標Migration goals

最良の移行方法を見極めやすくするために、Contoso クラウド チームは、次の目標を設定しました。To help determine the best migration method, the Contoso cloud team pinned down the following goals:

必要条件Requirements 詳細Details
ApplicationApplication このアプリケーションは、オンプレミスにおける現状と同様、Azure でもクリティカルなものとなります。The application in Azure will remain as critical as it is today on-premises.

現在の VMWare と同等のパフォーマンス機能が必要です。It should have the same performance capabilities as it currently does in VMware.

チームは、アプリケーションに投資することは望んでいません。The team doesn't want to invest in the application. 今のところ、管理者はアプリケーションをクラウドに安全に移行するだけです。For now, admins will simply move the application safely to the cloud.

チームは、アプリケーションが現在実行されている Windows Server 2008 R2 のサポートを終了したいと考えています。The team wants to stop supporting Windows Server 2008 R2, which the application currently runs on.

このチームはまた、SQL Server 2008 R2 から最新の PaaS (サービスとしてのプラットフォーム) データベースに移行し、管理の必要性を最小限に抑えたいと考えています。The team also wants to move away from SQL Server 2008 R2 to a modern platform as a service (PaaS) database, which will minimize the need for management.

Contoso では、可能であれば、SQL Server ライセンスとソフトウェア アシュアランスへの投資を活かしたいと考えています。Contoso wants to take advantage of its investment in SQL Server licensing and Software Assurance where possible.

さらに、Contoso は Web 層の単一障害点を軽減したいと考えています。In addition, Contoso wants to mitigate the single point of failure on the web tier.
制限事項Limitations このアプリケーションは、同じ VM 上で実行されている ASP.NET アプリケーションと Windows Communication Foundation (WCF) サービスから成ります。The application consists of an ASP.NET application and a Windows Communication Foundation (WCF) service running on the same VM. Azure App Service を使用して 2 つの Web アプリにこれらのコンポーネントを分散したいと考えています。They want to spread these components across two web apps using the Azure App Service.
AzureAzure Contoso は、アプリケーションを Azure に移行したいとは考えていますが、それを VM で実行することは望んでいません。Contoso wants to move the application to Azure, but they don't want to run it on VMs. Contoso では、Azure PaaS サービスを Web 層とデータ層の両方に利用したいと考えています。Contoso wants to use Azure PaaS services for both the web and data tiers.
DevOpsDevOps Contoso は、ビルドとリリース パイプラインに Azure DevOps を使用した DevOps モデルに移行したいと考えています。Contoso wants to move to a DevOps model that uses Azure DevOps for their builds and release pipelines.

ソリューション設計Solution design

Contoso は、その目標と要件を設定した後、デプロイ ソリューションを設計して確認します。After pinning down their goals and requirements, Contoso designs and reviews a deployment solution. また、移行に使用する Azure サービスなど、移行プロセスを明確化します。They also identify the migration process, including the Azure services that they'll use for the migration.

現在のアプリケーションCurrent application

  • SmartHotel360 オンプレミス アプリケーションは 2 つの VM (WEBVMSQLVM) に階層化されています。The SmartHotel360 on-premises application is tiered across two VMs, WEBVM and SQLVM.
  • VM は、VMware ESXi ホスト contosohost1.contoso.com バージョン 6.5 上にあります。The VMs are located on VMware ESXi host contosohost1.contoso.com version 6.5.
  • VMware 環境は、VM 上で実行されている vCenter Server 6.5 (vcenter.contoso.com) によって管理されています。The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), which runs on a VM.
  • Contoso にオンプレミスのデータセンター (contoso-datacenter) があり、そこにオンプレミスのドメイン コントローラー (contosodc1) が含まれています。Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).
  • Contoso データセンター内のオンプレミス VM は、移行が行われた後に使用停止にされます。The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

提案されるソリューションProposed solution

  • アプリケーションの Web 層について、Contoso は Azure App Service を使用することに決めました。For the application web tier, Contoso has decided to use Azure App Service. この PaaS サービスを使用すると、わずかな構成変更だけでアプリケーションをデプロイできます。This PaaS service enables them to deploy the application with just a few configuration changes. Contoso は Visual Studio を使用して変更を加え、Web サイト用と WCF サービス用の 2 つの Web アプリをデプロイします。Contoso will use Visual Studio to make the change, and they'll deploy two web apps, one for the website and one for the WCF service.
  • DevOps パイプラインの要件を満たすために、Contoso は Git リポジトリと共に Azure DevOps のソース コード管理を使用します。To meet requirements for a DevOps pipeline, Contoso will use Azure DevOps for source code management with Git repos. コードをビルドして Azure App Service にデプロイするには、自動ビルドとリリースが使用されます。They'll use automated builds and release to build the code and deploy it to the Azure App Service.

データベースの考慮事項Database considerations

Contoso はソリューション設計プロセスの一環として、Azure SQL Database と SQL Managed Instance の機能を比較しました。As part of the solution design process, Contoso did a feature comparison between Azure SQL Database and SQL Managed Instance. 同社では、次の考慮事項に基づき、SQL Managed Instance を使用することが決まりました。They decided to use SQL Managed Instance based on the following considerations:

  • SQL Managed Instance では、最新のオンプレミス SQL Server バージョンとのほぼ 100% の互換性を提供することが目的とされています。SQL Managed Instance aims to deliver almost 100 percent compatibility with the latest on-premises SQL Server version. SQL Server をオンプレミスまたは IaaS (サービスとしてのインフラストラクチャ) VM で実行しており、最小限の設計変更でアプリケーションをフル マネージド サービスに移行することを望んでいるお客様には、SQL Managed Instance が推奨されます。Microsoft recommends SQL Managed Instance for customers who are running SQL Server on-premises or on infrastructure as a service (IaaS) VMs who want to migrate their applications to a fully managed service with minimal design changes.
  • Contoso は、多数のアプリケーションをオンプレミスから IaaS VM に移行することを計画しています。Contoso is planning to migrate a large number of applications from on-premises to IaaS VMs. それらの VM の多くは、独立系ソフトウェア ベンダーから提供されています。Many of these VMs are provided by independent software vendors. SQL Managed Instance を使用すれば、これらのアプリケーションのデータベース互換性を確保できると Contoso は認識しています。Contoso realizes that using SQL Managed Instance will help ensure database compatibility for these applications. サポートされない可能性がある SQL Database ではなく、SQL Managed Instance を使用するつもりです。They'll use SQL Managed Instance rather than SQL Database, which might not be supported.
  • Contoso は、完全に自動化された Azure Database Migration Service を使用して、SQL Managed Instance へのリフトアンドシフト移行を簡単に実行できます。Contoso can simply do a lift and shift migration to SQL Managed Instance by using the fully automated Azure Database Migration Service. このサービスを導入すると、Contoso は将来のデータベース移行にそれを再利用できます。With this service in place, Contoso can reuse it for future database migrations.
  • SQL Managed Instance では、SmartHotel360 アプリケーションの重要なコンポーネントである SQL Server エージェントがサポートされています。SQL Managed Instance supports SQL Server Agent, an important component of the SmartHotel360 application. Contoso ではこの互換性が必要です。これがないと、アプリケーションで必要なメンテナンス プランを再設計する必要があります。Contoso needs this compatibility; otherwise, they'll have to redesign the maintenance plans required by the application.
  • ソフトウェア アシュアランスにより、Contoso は、SQL Server 用の Azure ハイブリッド特典を使用して、既存のライセンスと引き換えに、SQL マネージド インスタンスを割引料金で利用することができます。With Software Assurance, Contoso can exchange their existing licenses for discounted rates on a SQL managed instance by using the Azure Hybrid Benefit for SQL Server. SQL Managed Instance を使用することにより、最大 30% のコスト削減が可能となります。This allows Contoso to save up to 30 percent by using SQL Managed Instance.
  • SQL マネージド インスタンスは仮想ネットワークに完全に含まれるため、Contoso のデータに対して高い分離性とセキュリティが提供されます。Their SQL managed instance is fully contained in the virtual network, so it provides greater isolation and security for Contoso's data. Contoso は、パブリック インターネットから分離された環境を維持しながら、パブリック クラウドのメリットを得ることができます。Contoso can get the benefits of the public cloud, while keeping the environment isolated from the public internet.
  • SQL Managed Instance では、Always Encrypted、動的データ マスキング、行レベルのセキュリティ、脅威検出など、多くのセキュリティ機能がサポートされています。SQL Managed Instance supports many security features, including always-encrypted, dynamic data masking, row-level security, and threat detection.

ソリューションのレビューSolution review

Contoso は、次の表のように長所と短所の一覧をまとめて、提案されたデザインを評価します。Contoso evaluates their proposed design by putting together a pros and cons list, as shown in the following table:

考慮事項Consideration 詳細Details
長所Pros Azure に移行するために SmartHotel360 アプリケーション コードを変更する必要はありません。The SmartHotel360 application code doesn't require changes for migration to Azure.

Contoso では、SQL Server と Windows Server の両方に Azure ハイブリッド特典を使用して、ソフトウェア アシュアランスへの投資を活かすことができます。Contoso can take advantage of their investment in Software Assurance by using the Azure Hybrid Benefit for both SQL Server and Windows Server.

移行後は、Windows Server 2008 R2 をサポートする必要がなくなります。After the migration, Windows Server 2008 R2 won't need to be supported. 詳細については、「Microsoft ライフサイクル ポリシー」を参照してください。For more information, see the Microsoft Lifecycle Policy.

Contoso では、複数のインスタンスを保持するアプリケーションの Web 層を構成できるので、Web 層は単一障害点ではなくなります。Contoso can configure the web tier of the application with multiple instances, so that the web tier is no longer a single point of failure.

データベースは古い SQL Server 2008 R2 に依存しなくなります。The database will no longer depend on the aging SQL Server 2008 R2.

SQL Managed Instance では、Contoso の技術面の要件と目標がサポートされています。SQL Managed Instance supports Contoso's technical requirements and goals.

マネージド インスタンスでは、SQL Server 2008 R2 から移行するときに、現在のデプロイとの 100% の互換性が提供されます。Their managed instance will provide 100 percent compatibility with their current deployment, while moving them away from SQL Server 2008 R2.

Contoso は、SQL Server と Windows Server の Azure ハイブリッド特典を使用して、ソフトウェア アシュアランスへの投資を活かすことができます。Contoso can take advantage of their investment in Software Assurance and using the Azure Hybrid Benefit for SQL Server and Windows Server.

将来の移行で、Azure Database Migration Service を再利用できます。They can reuse Azure Database Migration Service for additional future migrations.

マネージド インスタンスには、フォールト トレランスが組み込まれていて、Contoso がそれを構成する必要はありません。Their managed instance has built-in fault tolerance that Contoso doesn't need to configure. そのため、データ層がフェールオーバーの単一ポイントではなくなります。This ensures that the data tier is no longer a single point of failover.
短所Cons Azure App Service でサポートされるアプリケーションのデプロイは、各 Web アプリにつき 1 つだけです。Azure App Service supports only one application deployment for each web app. これは、2 つの Web アプリをプロビジョニングする必要がある (Web サイト用に 1 つと WCF サービス用に 1 つ) ことを意味します。This means that two web apps must be provisioned, one for the website and one for the WCF service.

データ層について、Contoso がオペレーティング システムまたはデータベース サーバーをカスタマイズしたい場合、または SQL Server と共にサードパーティ製アプリケーションを実行したい場合、SQL Managed Instance は最適なソリューションではない可能性があります。For the data tier, SQL Managed Instance might not be the best solution if Contoso wants to customize the operating system or the database server, or if they want to run third-party applications along with SQL Server. IaaS VM で SQL Server を実行すると、このような柔軟性が提供されます。Running SQL Server on an IaaS VM could provide this flexibility.

提案されたアーキテクチャProposed architecture


移行プロセスMigration process

  1. Contoso は、Azure SQL マネージド インスタンスをプロビジョニングし、Azure Database Migration Service を使用して SmartHotel360 データベースをそれに移行します。Contoso provisions an Azure SQL managed instance and then migrates the SmartHotel360 database to it by using Azure Database Migration Service.

  2. Contoso では Web アプリをプロビジョニングして構成し、それらに SmartHotel360 アプリケーションをデプロイします。Contoso provisions and configures web apps and deploys the SmartHotel360 application to them.


Azure サービスAzure services

サービスService 説明Description コストCost
Azure App Service Migration AssistantAzure App Service Migration Assistant コードをほとんど変更することなく、オンプレミスからクラウドに .NET Web アプリをシームレスに移行するための、無料のシンプルなパスです。A free and simple path to seamlessly migrate .NET web applications from on-premises to the cloud with minimal to no code changes. このツールは無料でダウンロードできます。It's a downloadable tool, free of charge.
Azure Database Migration ServiceAzure Database Migration Service Azure Database Migration Service を使用すると、複数のデータベース ソースから Azure データ プラットフォームに、ダウンタイムを最小限に抑えながらシームレスに移行できます。Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms with minimal downtime. サポートされているリージョンAzure Database Migration Service の価格に関する情報をご覧ください。Learn about supported regions and Azure Database Migration Service pricing.
Azure SQL Managed InstanceAzure SQL Managed Instance SQL Managed Instance は、Azure 内のフル マネージド SQL Server インスタンスを表すマネージド データベース サービスです。SQL Managed Instance is a managed database service that represents a fully managed SQL Server instance in Azure. 最新バージョンの SQL Server データベース エンジンと同じコードを使用し、最新の機能、パフォーマンスの向上、およびセキュリティ更新プログラムが適用されています。It uses the same code as the latest version of SQL Server Database Engine, and has the latest features, performance improvements, and security patches. Azure で実行されている SQL マネージド インスタンスを使用すると、容量に基づく料金がかかります。Using a SQL managed instance that runs in Azure incurs charges based on capacity. 詳細については、SQL Managed Instance の価格に関するページを参照してください。Learn more about SQL Managed Instance pricing.
Azure App ServiceAzure App Service フル マネージド プラットフォームを使用した強力なクラウド アプリケーションを作成できます。Helps create powerful cloud applications that use a fully managed platform. 価格は、サイズ、場所、使用時間に基づきます。Pricing is based on size, location, and usage duration. 詳細については、こちらを参照してくださいLearn more.
Azure PipelinesAzure Pipelines アプリケーション開発のための継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインが用意されています。Provides a continuous integration and continuous deployment (CI/CD) pipeline for application development. パイプラインは、アプリケーション コードを管理するための Git リポジトリ、パッケージやその他のビルド成果物を生成するためのビルド システム、開発、テスト、および運用環境で変更をデプロイするためのリリース管理システムから始まります。The pipeline starts with a Git repository for managing application code, a build system for producing packages and other build artifacts, and a release management system to deploy changes in dev, test, and production environments.


このシナリオを実行するには、Contoso は次の前提条件を満たす必要があります。To run this scenario, Contoso must meet the following prerequisites:

必要条件Requirements 詳細Details
Azure サブスクリプションAzure subscription Contoso は、この記事シリーズの前の記事でサブスクリプションを作成しました。Contoso created subscriptions earlier in this article series. Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。If you don't have an Azure subscription, create a free account.

無料アカウントを作成する場合、サブスクリプションの管理者としてすべてのアクションを実行できます。If you create a free account, you're the administrator of your subscription and can perform all actions.

既存のサブスクリプションを使用しており、管理者でない場合は、管理者に依頼して所有者アクセス許可または共同作成者アクセス許可を割り当ててもらう必要があります。If you use an existing subscription and you're not the administrator, you need to work with the admin to assign you Owner or Contributor permissions.
Azure インフラストラクチャAzure infrastructure Contoso は、移行のための Azure インフラストラクチャについての記事で説明されているように、Azure インフラストラクチャを設定します。Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

シナリオのステップScenario steps

Contoso が移行を実行する方法を次に示します。Here's how Contoso will run the migration:

  • ステップ 1:Web アプリの評価と移行Step 1: Assess and migrate the web apps.. Contoso では、Azure App Service Migration Assistant ツールを使用して、移行前互換性チェックを実行し、Web アプリを Azure App Service に移行します。Contoso uses the Azure App Service Migration Assistant tool to run pre-migration compatibility checks and migrate their web apps to Azure App Service.
  • 手順 2:SQL マネージド インスタンスを設定するStep 2: Set up a SQL managed instance. Contoso では、オンプレミス SQL Server データベースの移行先となる既存のマネージド インスタンスが必要です。Contoso needs an existing managed instance to which the on-premises SQL Server database will migrate.
  • ステップ 3:Azure Database Migration Service を使用して移行するStep 3: Migrate via Azure Database Migration Service. Contoso は Azure Database Migration Service を使用してアプリケーション データベースを移行します。Contoso migrates the application database via Azure Database Migration Service.
  • 手順 4:Azure DevOps を設定するStep 4: Set up Azure DevOps. Contoso は新しい Azure DevOps プロジェクトを作成し、Git リポジトリをインポートします。Contoso creates a new Azure DevOps project, and imports the Git repo.
  • 手順 5:接続文字列を構成するStep 5: Configure connection strings. Contoso は Web 層 Web アプリ、WCF サービス Web アプリ、SQL マネージド インスタンスが通信できるように接続文字列を構成します。Contoso configures connection strings so that the web tier web app, the WCF service web app, and the SQL managed instance can communicate.
  • 手順 6:ビルドとリリース パイプラインを Azure DevOps で設定するStep 6: Set up build and release pipelines in Azure DevOps. 最後の手順として、Contoso はアプリケーションを作成するためのビルドとリリース パイプラインを Azure DevOps で設定します。As a final step, Contoso sets up build and release pipelines in Azure DevOps to create the application. その後、それらのパイプラインを 2 つの個別の Web アプリにデプロイします。The team then deploys the pipelines to two separate web apps.

手順 1:Web アプリの評価と移行Step 1: Assess and migrate the web apps

Contoso 管理者は、Azure App Service Migration Assistant ツールを使用して、Web アプリを評価し、移行します。Contoso admins assess and migrate their web app using the Azure App Service Migration Assistant tool. このプロセスでは、の Microsoft ラーニング パスをガイドとして使用します。They use the Microsoft Learning Path as a guide during the process. 簡単に言えば、管理者は次の操作を実行します。In brief, the admins perform the following actions:

  • Azure App Service 移行評価ツールを使用して、Web アプリ間の依存関係を評価し、オンプレミスの Web アプリと Azure App Service でサポートされているものの間に非互換性がないかどうかを判断します。They use the Azure App Service Migration Assessment tool to evaluate any dependencies between their web apps and to determine if there are any incompatibilities between their on-premises web apps and what's supported on Azure App Service.

  • Azure App Service Migration Assistant をダウンロードし、Azure アカウントにサインインします。They download the Azure App Service Migration Assistant and sign in to their Azure account.

  • サブスクリプション、リソース グループ、Web サイトのドメイン名を選択します。They choose a subscription, a resource group, and the website’s domain name.

手順 2:SQL マネージド インスタンスを設定するStep 2: Set up a SQL managed instance

Azure SQL マネージド インスタンスを設定するため、Contoso は次の要件を満たすサブネットを必要としています。To set up an Azure SQL managed instance, Contoso needs a subnet that meets the following requirements:

  • サブネットは専用でなければなりません。The subnet must be dedicated. また、サブネットは空で他のクラウド サービスを含んでいない必要があります。It must be empty, and it can't contain any other cloud service. サブネットはゲートウェイ サブネットであってはなりません。The subnet can't be a gateway subnet.
  • マネージド インスタンスを作成した後、Contoso は、サブネットにリソースを追加することはできません。After the managed instance is created, Contoso should not add resources to the subnet.
  • サブネットにネットワーク セキュリティ グループを関連付けることはできません。The subnet can't have a network security group associated with it.
  • サブネットにはユーザー定義のルート テーブルが必要です。The subnet must have a user-defined route table. 割り当てられる唯一のルートが の次ホップ インターネットである必要があります。The only route assigned should be next-hop internet.
  • 仮想ネットワーク用に省略可能なカスタム DNS が指定されている場合、Azure 内の再帰的なリゾルバーの仮想 IP アドレス をリストに追加する必要があります。If an optional custom DNS is specified for the virtual network, the virtual IP address for the recursive resolvers in Azure must be added to the list. Azure SQL マネージド インスタンスのカスタム DNS を構成する方法を確認してください。Learn how to configure a custom DNS for an Azure SQL managed instance.
  • サブネットにサービス エンドポイント (ストレージまたは SQL) を関連付けることはできません。The subnet must not have a service endpoint (storage or SQL) associated with it. 仮想ネットワークではサービス エンドポイントを無効にする必要があります。Service endpoints should be disabled on the virtual network.
  • サブネットには 16 個以上の IP アドレスが必要です。The subnet must have a minimum of 16 IP addresses. マネージド インスタンス サブネットのサイズを指定する方法を確認してください。Learn how to size the managed instance subnet.
  • Contoso のハイブリッド環境では、カスタム DNS 設定が必要です。In Contoso's hybrid environment, custom DNS settings are required. Contoso は、自社の 1 つ以上の Azure DNS サーバーを使用するように DNS 設定を構成します。Contoso configures DNS settings to use one or more of the company's Azure DNS servers. DNS のカスタマイズの詳細については、こちらを参照してくださいLearn more about DNS customization.

マネージド インスタンス用の仮想ネットワークを設定するSet up a virtual network for the managed instance

Contoso の管理者は仮想ネットワークを次のように設定します。Contoso admins set up the virtual network as follows:

  1. プライマリ リージョン (米国東部 2) に新しい仮想ネットワーク (VNET-SQLMI-EU2) を作成します。They create a new virtual network (VNET-SQLMI-EU2) in the primary region (East US 2). その仮想ネットワークを ContosoNetworkingRG リソース グループに追加します。It adds the virtual network to the ContosoNetworkingRG resource group.

  2. のアドレス空間を割り当てます。They assign an address space of その範囲がエンタープライズ内の他のどのネットワークとも重複しないことを確認します。They ensure that the range doesn't overlap with any other networks in its enterprise.

  3. ネットワークに以下の 2 つのサブネットを追加します。They add two subnets to the network:

    • SQLMI-DS-EUS2 ( (

    • SQLMI-SAW-EUS2 ( ( このサブネットは、マネージド インスタンスにディレクトリを接続するために使用されます。This subnet is used to attach a directory to the managed instance.

      マネージド インスタンスの [仮想ネットワークの作成] ペインのスクリーンショット。

  4. 仮想ネットワークとサブネットがデプロイされた後、ネットワークを以下のようにピアリングします。After the virtual network and subnets are deployed, they peer networks as follows:

    • VNET-SQLMI-EUS2VNET-HUB-EUS2 (East US 2 用のハブの仮想ネットワーク) とピアリングします。Peers VNET-SQLMI-EUS2 with VNET-HUB-EUS2 (the hub virtual network for East US 2).

    • VNET-SQLMI-EUS2VNET-PROD-EUS2 (運用ネットワーク) とピアリングします。Peers VNET-SQLMI-EUS2 with VNET-PROD-EUS2 (the production network).


  5. Contoso は、カスタム DNS 設定を行います。They set custom DNS settings. DNS 設定は、最初は Contoso の Azure ドメイン コント ローラーを指しています。The DNS settings point first to Contoso's Azure domain controllers. Azure DNS はセカンダリです。Azure DNS is secondary. Contoso Azure ドメイン コントローラーは、以下のように配置されます。The Contoso Azure domain controllers are located as follows:

    • 配置先は、米国東部 2 リージョンにある実稼働ネットワーク (VNET-PROD-EUS2) のサブネット PROD-DC-EUS2 です。Located in the PROD-DC-EUS2 subnet of the production network (VNET-PROD-EUS2) in the East US 2 region.
    • CONTOSODC3 アドレス: address:
    • CONTOSODC4 アドレス: address:
    • Azure DNS リゾルバー: DNS resolver:

    ネットワーク DNS サーバー リストのスクリーンショット。

さらにサポートが必要な場合Need more help?

ルーティングを設定するSet up routing

マネージド インスタンスは、プライベート仮想ネットワーク内に配置されます。The managed instance is placed in a private virtual network. Contoso は、Azure 管理サービスと通信するために、仮想ネットワークのルート テーブルを必要としています。Contoso needs a route table for the virtual network to communicate with the Azure management service. 仮想ネットワークが、仮想ネットワークを管理するサービスと通信できない場合、仮想ネットワークへのアクセスができなくなります。If the virtual network can't communicate with the service that manages it, the virtual network becomes inaccessible.

Contoso は以下の点を考慮します。Contoso considers these factors:

  • ルート テーブルには、マネージド インスタンスから送信されるパケットを仮想ネットワーク内でルーティングする方法を指定した一連のルール (ルート) を含めます。The route table contains a set of rules (routes) that specify how packets that are sent from the managed instance should be routed in the virtual network.
  • ルート テーブルは、マネージド インスタンスがデプロイされているサブネットに関連付けられています。The route table is associated with subnets where managed instances are deployed. サブネットから離れる各パケットは、関連付けられたルート テーブルに基づいて処理されます。Each packet that leaves a subnet is handled based on the associated route table.
  • 1 つのサブネットは、1 つのルート テーブルにのみ関連付けることができます。A subnet can be associated with only one route table.
  • Microsoft Azure では、ルート テーブルの作成に追加料金はかかりません。There are no additional charges for creating route tables in Microsoft Azure.

Contoso の管理者は、次のようにしてルーティングを設定します。To set up routing, Contoso admins do the following:

  1. ContosoNetworkingRG リソース グループ内にユーザー定義ルート テーブルを作成します。They create a user-defined route table in the ContosoNetworkingRG resource group.

    [ルート テーブルの作成] ペインのスクリーンショット。

  2. SQL Managed Instance の要件に準拠するため、管理者は、ルート テーブル (MIRouteTable) のデプロイ後、アドレス プレフィックスが のルートを追加します。To comply with SQL Managed Instance requirements, after the route table (MIRouteTable) is deployed, the admins add a route with an address prefix of [次ホップの種類] オプションは [インターネット] に設定します。The Next hop type option is set to Internet.

    アドレス プレフィックスを追加するための [ルートの追加] ペインのスクリーンショット。

  3. (VNET-SQLMI-EUS2 ネットワーク内の) SQLMI-DB-EUS2 サブネットにルート テーブルを関連付けます。They associate the route table with the SQLMI-DB-EUS2 subnet (in the VNET-SQLMI-EUS2 network).

    サブネットにテーブルをルーティングするための [サブネットの関連付け] ペインのスクリーンショット。

さらにサポートが必要な場合Need more help?

マネージド インスタンス用のルートを設定する方法については、こちらを参照してくださいLearn how to set up routes for a managed instance.

マネージド インスタンスを作成するCreate a managed instance

これで、Contoso の管理者は、次のようにして SQL マネージド インスタンスをプロビジョニングできます。Now, Contoso admins provision a SQL managed instance by doing the following:

  1. マネージド インスタンスにより、ビジネス アプリケーションにサービスが提供されるため、管理者は、会社のプライマリ リージョン (米国東部 2) にマネージド インスタンスをデプロイします。Because the managed instance serves a business application, the admins deploy the managed instance in the company's primary region (East US 2). そのマネージド インスタンスを ContosoRG リソース グループに追加します。They add the managed instance to the ContosoRG resource group.

  2. 価格レベルを選択し、インスタンスのコンピューティングとストレージのサイズを設定します。They select a pricing tier, size compute, and storage for the instance. 詳細については、SQL Managed Instance の価格に関するページを参照してください。Learn more about SQL Managed Instance pricing.

    [SQL Managed Instance] ペインのスクリーンショット。

    マネージド インスタンスをデプロイすると、ContosoRG リソース グループ内に、次の 2 つの新しいリソースが表示されます。After the managed instance is deployed, two new resources appear in the ContosoRG resource group:

    • 新しい SQL マネージド インスタンス。The new SQL managed instance.

    • 仮想クラスター (複数のマネージド インスタンスが存在する場合)。A virtual cluster, in case Contoso has multiple managed instances.

      ContosoRG リソース グループの新しいリソースのスクリーンショット。

さらにサポートが必要な場合Need more help?

マネージド インスタンスをプロビジョニングする方法については、こちらを参照してくださいLearn how to provision a managed instance.

手順 3:Azure Database Migration Service を使用して移行するStep 3: Migrate via Azure Database Migration Service

Contoso の管理者は、ステップバイステップの移行チュートリアルの手順に従って、Azure Database Migration Service を使用してマネージド インスタンスを移行します。Contoso admins migrate the managed instance via Azure Database Migration Service by following the instructions in the step-by-step migration tutorial. オンライン、オフライン、およびハイブリッド (プレビュー) の移行を実行できます。They can perform online, offline, and hybrid (preview) migrations.

Contoso の管理者が行う作業の概要は次のとおりです。In brief, Contoso admins do the following:

  • 仮想ネットワークに接続されている Premium SKU を使用して、Azure Database Migration Service インスタンスを作成します。They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.
  • Database Migration Service から、仮想ネットワーク経由で確実にリモート SQL Server にアクセスできるようにします。They ensure that Database Migration Service can access the remote SQL Server via the virtual network. これには、仮想ネットワーク レベル、ネットワーク VPN、および SQL Server をホストするマシンで、 Azure から SQL サーバーにすべての受信ポートが許可されていることの確認が伴います。This would entail ensuring that all incoming ports are allowed from Azure to SQL Server at the virtual network level, the network VPN, and the machine that hosts SQL Server.
  • Azure Database Migration Service を構成します。They configure Azure Database Migration Service:
    • 移行プロジェクトを作成します。Create a migration project.
    • ソース (オンプレミス データベース) を追加します。Add a source (on-premises database).
    • ターゲットを選択します。Select a target.
    • 移行するデータベースを選択します。Select the databases to migrate.
    • 詳細設定を構成します。Configure advanced settings.
    • レプリケーション を開始します。Start the replication.
    • すべてのエラーを解決します。Resolve any errors.
    • 最終的なカットオーバーを実行します。Perform the final cutover.

手順 4:Azure DevOps を設定するStep 4: Set up Azure DevOps

Contoso は、アプリケーションのために DevOps インフラストラクチャとパイプラインを構築する必要があります。Contoso needs to build the DevOps infrastructure and pipelines for the application. これを行うために、Contoso 管理者は新しい DevOps プロジェクトを作成し、コードをインポートしてから、ビルドとリリース パイプラインを設定します。To do this, the Contoso admins create a new DevOps project, import the code, and then set up build and release pipelines.

  1. Contoso Azure DevOps アカウントで、新しいプロジェクト (ContosoSmartHotelRefactor) を作成し、バージョン コントロールに [Git] を選択します。In the Contoso Azure DevOps account, they create a new project, ContosoSmartHotelRefactor, and then select Git for version control.


  2. アプリケーション コードを現在保持している Git リポジトリをインポートします。They import the Git repo that currently holds their application code. ダウンロードは、パブリック GitHub リポジトリから行います。They download it from the public GitHub repository.

    ソースの種類とクローン URL を指定するための [Git リポジトリをインポートする] ペインのスクリーンショット。

  3. Visual Studio をリポジトリに接続し、チーム エクスプローラーを使用して開発用マシンにコードを複製します。They connect Visual Studio to the repo and then clone the code to the developer machine by using Team Explorer.

    [プロジェクトに接続] ペインのスクリーンショット。

  4. アプリケーションのソリューション ファイルを開きます。They open the solution file for the application. このファイルには、Web アプリと WCF サービスのプロジェクトが別々に存在します。The web app and WCF service have separate projects within the file.

    Web アプリと WCF サービスのプロジェクトを一覧表示するソリューション エクスプローラーのスクリーンショット。

手順 5:接続文字列の構成Step 5: Configure connection strings

Contoso の管理者は、Web アプリとデータベースが互いに通信できるようにします。The Contoso admins make sure that the web apps and database can communicate with each other. そのために、コードと Web アプリで接続文字列を構成します。To do this, they configure connection strings in the code and in the web apps.

  1. WCF サービス (SHWCF-EUS2) の Web アプリで、 [設定] > [アプリケーションの設定] の順に選択し、DefaultConnection という新しい接続文字列を追加します。In the web app for the WCF service, SHWCF-EUS2, under Settings > Application settings, they add a new connection string named DefaultConnection.

  2. 接続文字列は SmartHotel-Registration データベースからプルし、正しい資格情報を使用して更新します。They pull the connection string from the SmartHotel-Registration database and then update it with the correct credentials.


  3. Visual Studio で、管理者がソリューション ファイルから SmartHotel.Registration.wcf プロジェクトを開きます。In Visual Studio, the admins open the SmartHotel.Registration.wcf project from the solution file. このプロジェクトの web.config ファイルの connectionStrings セクションを接続文字列で更新します。In the project, they update the connectionStrings section of the web.config file with the connection string.

    SmartHotel.Registration.wcf プロジェクトの web.config ファイルの connectionStrings セクションのスクリーンショット。

  4. SmartHotel.Registration.Web の web.config ファイルの client セクションを、WCF サービスの新しい場所を指すように変更します。They change the client section of the web.config file for SmartHotel.Registration.Web to point to the new location of the WCF service. これは、サービス エンドポイントをホストする WCF Web アプリの URL です。This is the URL of the WCF web app that hosts the service endpoint.

    SmartHotel.Registration.wcf プロジェクトの web.config ファイルの client セクションのスクリーンショット。

  5. コードの変更は以上で完了です。管理者は、Visual Studio のチーム エクスプローラーを使用して、変更のコミットと同期を行います。With the code changes now in place, the admins commit and sync them by using Team Explorer in Visual Studio.

手順 6:ビルドとリリース パイプラインを Azure DevOps で設定するStep 6: Set up build and release pipelines in Azure DevOps

次に、Contoso 管理者は、Azure DevOps を構成して、ビルドおよびリリース プロセスを実行します。The Contoso admins now configure Azure DevOps to perform the build and release process.

  1. Azure DevOps 内で、 [Build and release](ビルドとリリース) > [新しいパイプライン] の順に選択します。In Azure DevOps, they select Build and release > New pipeline.

    Azure DevOps の [新しいパイプライン] リンクのスクリーンショット。

  2. [Azure Repos Git] を選択し、関連するリポジトリを選択します。They select Azure Repos Git and the relevant repo.

    [Azure Repos Git] ボタンと選択されたリポジトリのスクリーンショット。

  3. [テンプレートの選択] で、ビルド用の ASP.NET テンプレートを選択します。In Select a template, they select the ASP.NET template for their build.

    ASP.NET テンプレートを選択するための [テンプレートの選択] ペインのスクリーンショット。

  4. ビルドの名前に ContosoSmartHotelRefactor-ASP.NET-CI を使用し、 [保存してキューに登録] を選択して、最初のビルドを開始します。They use the name ContosoSmartHotelRefactor-ASP.NET-CI for the build and then select Save & Queue, which kicks off the first build.

    ビルドの [保存してキューに登録] ボタンのスクリーンショット。

  5. プロセスを監視するビルド番号を選択します。They select the build number to watch the process. 完了後、管理者はプロセスのフィードバックを表示し、 [成果物] を選択してビルドの結果を確認できます。After it's finished, the admins can see the process feedback, and they select Artifacts to review the build results.

    [ビルド] ページとビルド結果を確認するための [成果物] リンクのスクリーンショット。

    [成果物エクスプローラー] ペインが開き、drop フォルダーにビルド結果が表示されます。The Artifacts explorer pane opens, and the drop folder displays the build results.

    • 2 つの .zip ファイルは、アプリケーションが格納されているパッケージです。The two .zip files are the packages that contain the applications.
    • これらの .zip ファイルは、Azure App Service にデプロイするためにリリース パイプライン内で使用されます。These .zip files are used in the release pipeline for deployment to Azure App Service.

    [成果物エクスプローラー] ペインのスクリーンショット。

  6. [リリース] > [+ New pipeline](+ 新しいパイプライン) の順に選択します。They select Releases > + New pipeline.

    [New pipeline](新しいパイプライン) リンクのスクリーンショット。

  7. Azure App Service 用のデプロイ テンプレートを選択します。They select the deployment template for Azure App Service.

    Azure App Service のデプロイ テンプレートのスクリーンショット。

  8. リリース パイプラインに ContosoSmartHotel360Refactor という名前を付け、 [ステージ名] ボックスに、WCF Web アプリの名前として「SHWCF-EUS2」を指定します。They name the release pipeline ContosoSmartHotel360Refactor and, in the Stage name box, specify SHWCF-EUS2 as the name of the WCF web app.

    WCF Web アプリのステージ名のスクリーンショット。

  9. ステージ下で、 [1 個のジョブ、1 個のタスク] を選択して WCF サービスのデプロイを構成します。Under the stages, they select 1 job, 1 task to configure deployment of the WCF service.

    [1 個のジョブ、1 個のタスク] オプションのスクリーンショット。

  10. サブスクリプションが選択および承認されていることを確認し、 [App Service の名前] を選択します。They verify that the subscription is selected and authorized, and then they select the app service name.

    App Service の名前を選択する画面のスクリーンショット。

  11. パイプラインで [成果物][+ 成果物の追加] の順に選択し、ソースの種類に [ビルド] を選択して、ContosoSmarthotel360Refactor パイプラインを使用してビルドします。On the pipeline, they select Artifacts, select + Add an artifact, select Build as the source type, and then build with the ContosoSmarthotel360Refactor pipeline.

    [Add an artifact](成果物の追加) ペインの [ビルド] ボタンのスクリーンショット。

  12. 継続的デプロイ トリガーを有効にするために、管理者が成果物の稲妻アイコンを選択します。To enable the continuous deployment trigger, the admins select the lightning bolt icon on the artifact.


  13. 継続的デプロイ トリガーを [有効] に設定します。They set the continuous deployment trigger to Enabled.

    継続的デプロイ トリガーを [有効] に設定した画面のスクリーンショット。

  14. 管理者は、ステージ [1 個のジョブ、1 個のタスク] に戻り、 [Deploy Azure App Service](Azure App Service のデプロイ) を選択します。The admins go back to the stage 1 job, 1 task and then select Deploy Azure App Service.

    [Deploy Azure App Service](Azure App Service のデプロイ) を選択するオプションのスクリーンショット。

  15. [Select a file or folder](ファイルまたはフォルダーの選択)drop フォルダーを展開し、ビルド中に作成された SmartHotel.Registration.Wcf.zip ファイルを選択して、 [保存] を選択します。In Select a file or folder, they expand the drop folder, select the SmartHotel.Registration.Wcf.zip file that was created during the build, and then select Save.

    WCF ファイルを選択するための [Select a file or folder](ファイルまたはフォルダーの選択) ペインのスクリーンショット。

  16. [パイプライン] > [ステージ] の順に選択し、 [+ 追加] を選択して、SHWEB-EUS2 用の環境を追加します。They select Pipeline > Stages, and then select + Add to add an environment for SHWEB-EUS2. 別の Azure App Service のデプロイを選択します。They select another Azure App Service deployment.

    環境を追加するための [1 個のジョブ、1 個のタスク] リンクのスクリーンショット。

  17. このプロセスを繰り返して Web アプリの SmartHotel.Registration.Web.zip ファイルを適切な Web アプリに発行し、 [保存] を選択します。They repeat the process to publish the web app SmartHotel.Registration.Web.zip file to the correct web app, and then select Save.

    Web ファイルを選択するための [Select a file or folder](ファイルまたはフォルダーの選択) ペインのスクリーンショット。

    次のリリース パイプラインが表示されます。The release pipeline is displayed, as shown here:

    リリース パイプラインの概要のスクリーンショット。

  18. [ビルド] に戻り、 [トリガー] を選択して、 [継続的インテグレーションを有効にする] チェック ボックスをオンにします。They go back to Build, select Triggers, and then select the Enable continuous integration check box. この操作でパイプラインが有効になり、変更がコードに対してコミットされると、フル ビルドとリリースが行われます。This action enables the pipeline so that when changes are committed to the code, the full build and release occur.

    [継続的インテグレーションを有効にする] チェック ボックスを強調表示した画面のスクリーンショット。

  19. [保存してキューに登録] を選択し、フル パイプラインを実行します。They select Save & Queue to run the full pipeline. 新しいビルドがトリガーされ、続いてアプリケーションの最初のリリースが Azure App Service に対して作成されます。A new build is triggered, which in turn creates the first release of the application to the Azure App Service.

    [保存してキューに登録] ボタンのスクリーンショット。

  20. Contoso 管理者は、Azure DevOps からビルドとリリース パイプラインのプロセスに従うことができます。Contoso admins can follow the build and release pipeline process from Azure DevOps. ビルドの完了後、リリースが開始されます。After the build finishes, the release starts.


  21. パイプラインが完了すると、両方のサイトがデプロイされ、アプリケーションがオンラインで稼働します。After the pipeline finishes, both sites have been deployed and the application is up and running online.


    アプリケーションが Azure に正常に移行されました。The application has been successfully migrated to Azure.

移行後にクリーンアップするClean up after the migration

移行後、Contoso チームは、以下のクリーンアップ手順を実行します。After the migration, the Contoso team completes the following cleanup steps:

  • vCenter のインベントリからオンプレミスの VM を削除します。They remove the on-premises VMs from the vCenter inventory.
  • ローカルのバックアップ ジョブから VM を削除します。They remove the VMs from the local backup jobs.
  • SmartHotel360 アプリケーションの新しい場所を示すように社内ドキュメントを更新します。They update their internal documentation to show the new locations for the SmartHotel360 application. データベースは SQL マネージド インスタンスで、またフロントエンドは 2 つの Web アプリで実行されていることが、このドキュメントには示されます。The documentation shows the database as running in the SQL managed instance, and the front end as running in two web apps.
  • 使用停止されている VM と対話しているリソースがないかを確認します。また、関連する設定やドキュメントがあれば、更新して新しい構成を反映します。They review any resources that interact with the decommissioned VMs, and they update any relevant settings or documentation to reflect the new configuration.

デプロイを再調査するReview the deployment

リソースを Azure に移行したら、新しいインフラストラクチャを完全に運用可能な状態にすると共に、そのセキュリティの保護に努める必要があります。With the resources now migrated to Azure, Contoso needs to fully operationalize and help secure their new infrastructure.


  • Contoso は新しい SmartHotel-Registration データベースのセキュリティ保護に努めます。Contoso helps ensure that their new SmartHotel-Registration database is secure. 詳細については、こちらを参照してくださいLearn more.
  • 特に、Contoso は証明書で SSL を使用するように Web アプリを更新します。In particular, Contoso updates the web apps to use SSL with certificates.


  • Contoso チームは、Azure SQL Managed Instance のデータベースのバックアップ要件を確認します。The Contoso team reviews the backup requirements for the database in Azure SQL Managed Instance. 詳細については、こちらを参照してくださいLearn more.
  • また、SQL Database のバックアップと復元の管理について確認します。They also learn about managing SQL Database backups and restores. 自動バックアップについては、こちらをご覧ください。Learn more about automatic backups.
  • データベースのリージョン内フェールオーバーを提供するようにフェールオーバー グループの実装を検討します。They consider implementing failover groups to provide regional failover for the database. 詳細については、こちらを参照してくださいLearn more.
  • 回復性を高めるために、メイン リージョン (East US 2) とセカンダリ リージョン (Central US) に Web アプリをデプロイすることを検討します。They consider deploying the web app in the main region (East US 2) and the secondary region (Central US) for resilience. チームはリージョンの障害が発生しても確実にフェールオーバーされるように Traffic Manager を構成することができます。The team could configure Traffic Manager to ensure failover during regional outages.

ライセンスとコストの最適化Licensing and cost optimization

  • すべてのリソースをデプロイした後、Contoso はインフラストラクチャ計画に基づいて Azure タグを割り当てます。After all resources are deployed, Contoso assigns Azure tags based on their infrastructure planning.
  • すべてのライセンスは、Contoso が使用している PaaS サービスのコストに組み込まれています。All licensing is built into the cost of the PaaS services that Contoso is consuming. このコストは Enterprise Agreement から差し引かれます。This cost is deducted from the Enterprise Agreement.
  • Contoso は Azure Cost Management と Billing を使用して、IT リーダーが定めた予算内に確実に収まるようにします。Contoso will use Azure Cost Management and Billing to ensure that they stay within the budgets established by their IT leadership.


この記事の中で、Contoso は、アプリケーションのフロントエンド VM を 2 つの Azure App Service Web アプリに移行して、Azure に SmartHotel360 アプリケーションをリファクターしました。In this article, Contoso refactored the SmartHotel360 application in Azure by migrating the application front-end VM to two Azure App Service web apps. アプリケーション データベースが Azure SQL マネージド インスタンスに移行されました。The application database was migrated to an Azure SQL managed instance.