※本記事は2020年3月15日時点での情報を元に記載されています。
#はじめに
Azure App Service(Windows)のVNET統合が先日ようやくGAされました。
参照1: https://azure.github.io/AppService/2020/02/27/General-Availability-of-VNet-Integration-with-Windows-Web-Apps.html
今回はAzure App Service Web AppからAzure SQL Managed Instance(MI)にVNET統合を使ってアクセスしてみた際の検証結果をまとめます。アーキテクチャは以下のような形です。
※VNET統合には、"リージョンVNET統合"と"ゲートウェイが必要なVNET統合"の2種類ありますが、本記事では"リージョンVNET統合"を用いています。全てのAzureリソースは同じリージョン内にデプロイされています。
参照2: https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-integrate-with-vnet
#構築手順
構築手順は下記の通りです。本記事では細かい作成方法などは省略しますが、普段Azureを触られている方からすると非常に簡単な手順かと思います。
1.Azure SQL Managed Instanceを作成する
2.Azure Web App(Standard SKU以上)を作成する
3.Dedicated SubnetをSQL MIのVNET内に作成する
4.VNET統合を設定する
#検証結果1: Azure VMからのアクセス
MIと同じVNET内に作成したAzure VMからアクセスしてみます。SSMSにログインし、接続することができました。
#検証結果2: Azure Web Appからのアクセス
作成したWeb AppでVNET統合を構成します。統合先はSQL MIがデプロイされているVNET内に作成した、DedicatedのSubnetです。
VNET統合を構成したWeb AppからSQL MIにアクセスしています。tcppingを用いて検証したところ、導通していることを確認できました。
SQL MIのパブリックエンドポイントは無効になっているため、プライベート通信ができていることが分かります。
App Serviceのスケールアウトを行っても接続に問題は見られませんでした。
#検証結果3(おまけ): Webジョブの実行
Web AppにWebジョブを展開し、実行してみます。このWebジョブでは、VNET統合で接続されたSQL MIに対してSQLを投げています。VNET統合を設定していてもWebジョブが問題なく動作することを確認できました。
Webジョブサンプル: https://blog.engineer-memo.com/2015/10/27/web-apps-%E3%81%AE-web-%E3%82%B8%E3%83%A7%E3%83%96%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%AE%9A%E6%9C%9F%E7%9A%84%E3%81%AA-sql-%E3%81%AE%E5%AE%9F%E8%A1%8C/
#さいごに
App Service(Windows)のVNET統合がGAされたことにより、PaaSの世界とIaaS/オンプレミスの世界が縮まり、できることの幅が更に広がりました。これまでApp Service Environment(ASE)を使わなければならなかった構成も、VNET統合を使えば利用コストを大幅に下げることができます。Linux版のGAも楽しみですね!