今日の深夜(27時)からの発表を待たずしてApp Serviceがもろもろ情報でてきちゃいました。
- Announcing the new Azure App Service
- Event: Build web and mobile apps faster
- Announcing Azure App Service
- What’s new with Azure App Service?
- Azure App Service and existing Azure services
なおイベント情報についてはこちらをどうぞ。
Azure App Service って何?
平たく言うと新しいサービス群の総称的な名前です。Azure Websites、Mobile Services、BizTalk Servicesもそれぞれ名前が変わってApp Serviceに含まれる感じになります。それから新しいサービスも。
App ServiceになることでWebやモバイル、他のマイクロサービスやWebサービス、企業システムと素早く・シームレスに、簡単に連携したアプリケーションを展開することが可能になります。もちろんPaaSらしくこれまでの特色を残してスケーラブル!
また、追加されたサービスはLogic AppsとAPI Appsの2つになります。
まとめるとこう。
今までWebsitesやMobile Servicesだけでも十分強力でしたが、Office 365やDynamics CRM、Salesforce、TwilioなどのSaaSやTwitterといったWebサービス、企業のOracleやSAPといったアプリケーション・サービスなどとも連携し、より柔軟に・堅牢に・拡張高いアプリケーションを動かすことができる基盤となりました。ぱちぱちぱち。
さて今までのWebsitesなどはどこへ?と思いますが基本的にこれらのサービスはWebsitesの機能を踏襲した形になります。ちょっと整理してみましょう。
今まで | これから | 詳細 |
Azure Websites | Web Apps | GA。Websitesからのリネーム。現在のWebsitesの機能はそのまま。 Web Hosting PlanはApp Service Planになります。App Service Planは他のサービスも全部含むかたちになります(つまりApp Serviceのプラン) Web Apps |
Mobile Services | Mobile Apps | Public Preview。現在のMobile Servicesの機能はそのまま。Mobile AppsはApp Serviceの新しい機能の一部。 GAしたら既存のMobile ServicesからMobile Appsへの移行がサポートされる。 現時点ではPreviewポータルからのみ作成と管理可能。 Websitesのように基本的なCIやDevOpsの機能が使えます。他のApp Serviceとシームレスな統合ができます。 Mobile Apps |
N/A | Logic Apps | Public Preview。新しくApp Serviceの一部として追加されたサービス。 Logic Apps |
N/A | API Apps | Public Preview。新しくApp Serviceの一部として追加されたサービス。 API Apps |
BizTalk Services | BizTalk Connectors (BizTalk API Apps) |
API AppsやLogic AppsでオンプレミスやSaaSソリューションとつなぐための機能。(BizTalk Servicesはそのまま。一部機能がApp Serviceに含まれる) |
なお公式やプレビューポータル上では既に表記が変わっています。
さてApp Serviceの大きな4サービスを1つづつみたいと思います。ちなみにそれぞれ作成したり管理するにはプレビューポータルを使いましょう。
※いちおう日本でも使えるはずですがちょっと不安定な様子。West USかEast USで試してみましょう。
Web Apps (GA)
Web Appsはもうわかりますよね。元Websitesですから。.NET/Node.js/Java/PHP/Pythonが動くWebアプリケーションプラットフォームです。
オートスケールやVisual StudioやFTPによる発行のほかにVisual Studio OnlineやGitHub、BitBucketといったCI/DevOpsツールやサービスとの連携、オンプレとの接続やVNET接続、ステージングやTest in Production (TiP:A/Bテスト的なやつ)、WebJobによるバックグラウンドタスクなどがサポートされます。
Mobile Apps (Public Preview)
以前のMobile Servicesと同じような機能をサポートします。また強化点としてWeb Appsと同じような特性+Traffic Managerもサポートされます。なお現状はPreviewということでプレビューポータルから管理できますがAndroid Studioのテンプレートとかはないっぽいです。(Xamarinはある)※現行ポータルでMobile Servicesを触るか自前で少しの間頑張る感じでしょうか。
Logic Apps (Public Preview)
Logic Appsは新しく追加されたアプリケーションタイプです。何ができるかというと複数のAPI Appsを組み立ててフロー(パイプライン)を作成しビジネスプロセスなどを実行することができます。
例えばデモでもありましたがDBにデータが追加されたらSalesforceのCRMに登録してその後該当顧客にSMSを送るとか。通常ならアプリケーションを作ってコード書いたりしないといけませんが、DBからデータを取る、Salesforceに登録する、TwilioでSMSを送るなどミニマムなサービス(API Apps)に分けることで必要な業務を組み合わせるだけで実現することができます。
Marketplaceには既に沢山のAPI Appsが登録されており、必要に応じて自身のリソースグループにコピーして稼働させるだけでLogic Apps内で利用できるようになります。またちょっと変わった処理をしたい場合やカスタムのロジックを実行したい場合はAPI Appsを作成すれば同じように利用できます。
設定はプレビューポータルから行います。GalleryにはMarketplaceから追加したAPI AppsやデプロイしたカスタムのAPI Appが表示されており、ポチポチクリックすればフローに追加されていきます。(同一リソースグループのもののみ表示されます)
利用できるアクション(API)はAPI App毎に決まっています(後述)。あとはInputを選択すれば該当アクションの結果を次に渡すことができます。(次のAPI Appで利用できる)
この例では手動スタートでOffice 365の設定したメールボックスの受信トレイから未読のメールを取得して本文のテキストをTwitterでつぶやく、という感じです。
なおデザイナで定義した内容はJSON形式で記述されています。
実際に実行してみるとこんな感じですね。
実行履歴からどこで失敗したかとか、どんな値がAPIに渡されたのかなどの情報を見ることができます。
使い方次第では開発しなくても良いので非常に強力です!またAPI Appsがあれば好きな処理も行えるのでMarketplaceにないものでもOSSだったりいろいろ広がっていきそうですね。
API Apps (Public Preview)
API AppsはWeb APIを実行することができるアプリケーションタイプです。Web Appsと異なるのはapiapp.jsonと(Swaggerの)Metadataファイルがあることぐらいではありますが。
API Appsつまりapiapp.jsonと(Swaggerの)MetadataがあるWebアプリケーション(.NETはもちろんNode.jsやPHP、Python、JavaなどWeb Appsで動作するアプリケーション)はLogic Appsから利用することができるマイクロサービスとして認識されるのが特徴です。
なお一緒にApp Service Gatewayが作成されます。
メタデータやapiapp.jsonをちょっと作るのが面倒かもしれませんが、ASP.NET + Visual Studio 2013(現時点)ならSDKでよしなにしてくれます。既存WebAPIなアプリケーションのコンバートはこちらを参照ください。
またAPI Appsではフェデレーション認証をかけて公開することができます。(もしくは公開しないような設定)
内部(Logic Appsなど)だけからか認証なしで公開か認証ありかを設定することができます。認証方法などはAPI Appsではなく、入り口となるApp Service Gatewayで行います。
後は各IdPなどで認証するために必要な情報をセットするだけです。便利ですね!
認証周りはこちらも参照ください。
価格など
価格はWeb Hosting Planが廃止になって代わりにApp Service Planになりました。4つのサービス(Web Appsなど)はこのプランの上で動作することになります。今まで1つのHosting Planに複数のWebsiteを載せたりできましたが、同じようなイメージです。つまりスケール等が同じでよければ1つ(ないしn個のインスタンス)上で沢山のサービスを稼働させることができます。(もちろんプランによる制限はあります)
Mobile Appsや他のサービスが増えたこともあり、細かい制限などが付け加えられていますので注意が必要です。また新しくPreviewですがPremiumプランも増えました。(Websites時代からみるとディスクスペース増えたり自動バックアップ数が増えた、ステージング環境数が増えた程度にしか見えませんが)
詳細は上記URLの価格表を参照ください。
開発するには
.NETであればNuGetなどから関連するアセンブリもってきたりできますし、Mobile Appsならプレビューポータル上から基本的なソースを(.NETに限らず)取得することもできます。またVisual Studio用に Azure SDK for .NET 2.5.1もリリースされたのでそちらを使えばWeb AppsやAPI Appsも簡単に作れたり、サーバーエクスプローラーからApp Serviceを管理することができます。
※ちなみにサーバーエクスプローラーからの操作はなんかまだちゃんと動きませんでした。。
またこちらのBlogも参照ください。
学習するには
Ch.9で関連する動画が既に公開されています。また公式ドキュメントも(英語ですが)ありますのでそちらをどうぞ。
- Azure App Service Web Apps with Yochay Kiriaty
- Azure App Service Mobile Apps with Kirill Gavrylyuk
- Azure App Service Logic Apps with Josh Twist
- Azure App Service API Apps with Scott Hunter
ドキュメントなど
- App Service documentation
- What is Azure App Service?
- Web Apps overview
- What are Mobile Apps
- What are API Apps?
- What are Logic Apps?
まとめ
App Serviceでよりよいアプリケーションを展開していきましょう!
App Serviceの環境など(おまけ)
ここまでざっと見れば何となく裏側がわかりましたね。ちょっとまとめてみたいと思います。まずはおさらい。プレビューポータルのEssentials(ブレード上部の情報でてるところ)や各AppのURLなど見てみると面白いことがわかります。
Web AppsやMobile Appsはユーザーが決めた名前.azurewebsites.netです。
API AppsはGUID付きのazurewebsites.net (E.g. https://microsoft-apiappxxxxxbc3dfe2174ab2a24d3d26c791b60e.azurewebsites.net
Logic Appsは https://eastus.logic.azure.com/subscriptions/<Subscription ID>/resourceGroups/appservicergeastus/providers/Microsoft.Logic/workflows/buchilogic01
App Service Gatewayは appservice+リソース名.azurewebsites.net (E.g. https://appservicergeastusgateway.scm.azurewebsites.net
あと作成時にApp Service Planを決めるとそれぞれリソースグループなど全部ロックされるので、全部App Service Plan(とリソースグループ)に紐づく感じです。
またURLが違うのでLogic Appsは紐づくものの実体は全く別のところ(Azureのサービス側=非ユーザー領域)にあると思われますね。
App Service Gatewayは認証の窓口になったりすることからAPI Appとは別のところにありそうです。
ではKuduでちょっと見てみましょう。
Web Apps(とMobile Apps)とAPI Appsのホスト名は同じでした。
つまり同じインスタンス上で動いているようです。じゃぁプロセスは?というところですがプロセスの実行ユーザーが違うので他のアプリケーションタイプとは干渉しなさそうです(権限的に)
App Service Gatewayは管理下であるものの別ホストでした。
なんとも複雑です。ちなみにAPI Appsは API AppというSite Extensionsを、App ServiceはAPI Apps runtime serviceというSite Extensionsが入ってました。面白いですね。
というわけで、想像するにこんな環境になってるのではないでしょうか。
細かいところは違うかもしれませんが、料金プランや制限なども考えるとなんとなく近いのではないでしょうか。ちゃんちゃん。
ピンバック: Build web and mobile apps faster | ブチザッキ
ピンバック: Microsoft Connect(); 2017 で語られた技術情報まとめ - IT記事まとめ