Microsoftが先頃,Azure Functionsという名称のプラットフォーム・アズ・ア・サービス(PaaS)を新たに発表した。2016年3月にプレビュー版としてローンチされたAzure Functionsは,イベント駆動のサーバレスなコンピューティングプラットフォームを,使用した分のみの課金で開発者に提供するものだ。
Azure FunctionsはPaaSサービスであるため,ユーザがピーク時の使用量を事前に決定したり,あるいは従来のメンテナンス作業を気にかけたりする必要はない。Azureプラットフォームのプリンシパルプログラムマネージャを務めるYochay Kiriary氏が,次のように説明する。
Azure Functionsはスケールアップとスケールダウンが可能なので,最大規模のシナリオを前提としたインフラを用意したり,使用しないリソースに資金を使ったりする必要がありません。利用量の急激な増加に備えて,日毎の最大支出額を設定しておく必要もないのです。フレームワークやオペレーティングシステム,あるいはインフラストラクチャのパッチやメンテナンスの心配もありません。Functionsがあなたのために,基盤となるインフラストラクチャを管理してくれます。
Azure Functionsの記述には,C#とJavaScriptが使用できる。F#やPowerShell,PHP,Python,CMD,BAT,Bashなど他の言語については,まだプレビュー版だ。ローンチの時点では,Azure Portal上のWebブラウザ内でAzure Functionsのコードを記述していたが,一般公開の発表後は,開発IDE内でのAzure Functionsの開発に興味のある開発者向けに,現時点ではまだプレビュー版だが,新たなツールがMicrosoftから提供される。現在は,Visual Studio Tools for Azure Functionsをインストールすることにより,Visual Studio 2015内でAzure Functionsを開発することができる。
出典: https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/
Azure Functionをローカルで実行して,Visual Studio内でデバッグすることも可能だ。それが終わった後にWeb Deploy - Publish機能を通じて,Azure FunctionをAzureにデプロイする。デプロイされた後も,クラウドインスタンスにデバッガをアタッチすることで,引き続きVisual Studio経由でデバッグすることができる。
出典: https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/
InfoQは先日,Azure FunctionsのプログラムマネージャであるChris Anderson氏と話す機会を得た。氏は次のように話してくれた。
InfoQ: サーバレスコンピューティングに関する話題はたくさんありますが,これほど注目されるのはなぜだと思いますか?
Chris Anderson: サーバレスコンピューティングに関する話題の根本は,サーバレスコンピューティングが提供するエクスペリエンスが,アプリケーションを最も短期間かつ簡単に開発可能にする点にあると思います。一度使えば,その開発速度に誰もが驚きます。マネージドサービスとサーバレスコンピューティングを使えば,アプリケーションの運用や管理といったことも簡単になります。そういったことに関する責任を,これらのサービスが可能な限り担ってくれるからです。これはまた,サーバレスを採用することによってイノベーションがより早く実現するとともに,アプリケーションの管理やスケールアップも容易になることも意味します。さらに,サーバレスコンピューティングのコンセプトの下で発展した,素晴らしいコミュニティの存在も忘れてはなりません。この2つが相まって,大きな話題を形成しているのです。
InfoQ: Azure Functionsを使用しているユーザの中で,特に興味を引くユースケースはありますか?
Anderson: 興味深いユースケースとしては,Plexure.ioで,IoT指向のCRMプラットフォームをAzure Functionsで実現した例があります。同社のプラットフォームは,ユーザのインタラクションに関連するIoT情報の参照を支援すると同時に,それらIoT情報に対するオーケストレーションとリアクションを容易にします。彼らはAzure Functionsを見て,自分たちがワークフロー内で使用しているアクションのいくつかをホストすることが可能だと考えたのです (同社のワークフローには,ビジュアルデザイナと80以上のコネクタを備えた当社のサーバレスワークフロー統合サービスであるAzure Logic Appsが採用されています)。さらに彼らのユーザにも,Piexureオンラインポータル内で独自の機能を記述できるようにしたいと思いました。これによって同社のユーザは,WebHooksに対応する場所に独自のAPIサービスを立ち上げる必要なく,ポータル内でより多くのことを行なえるようになりました。Azure Functionsがそれを行なう最善の方法としてすでに用意されているのですから,その仲介をすればよいのです。当社のポータルUIはオープンソースなので,Angular2コンポーネントを再利用すれば,そのエクスペリエンスを彼ら独自のオンラインポータル内で簡単に実現できます。
もうひとつの興味深いユースケースは,当社がMicrosoft Bot Frameworkで行なっているものです。Microsoft Bot Frameworkチームがbotを簡単にデプロイする方法を探していた時,その自然な解決策としてサーバレスに注目しました。Azure Functionは彼らの統合Botサービスをホストする基盤コンピューティング層を提供すると同時に,オンデマンドスケーリングなどの付加的機能や,継続的統合やデリバリなどもサポートしています。
ですが,私が最も興味のあるのは,もっと単純なデータ変換や拡張が,他のマネージドサービスと組み合わせることでスケールアップできるという,とても平凡で単純なシナリオなのです。Azure Logic Appsを使って大量の統合ワークロードを運用している多くのユーザが,Functionsを使って独自機能を簡単に記述できる様子を,これまでに数多く見聞してきました。例えば,特定のテーマに関するすべてのツィートを読み出してLogicAppsとAzure Functionsで処理し,センチメント分析や顔認識を行なうCognite Servicesのようなサービスと組み合わせて,その結果をPowerBIに出力するようなアプリケーションの開発がいとも容易くできるのです。IoTでも同様に,IoT HubやStream AnalyticsとAzure Functionsを組み合わせたIoTデータの分析が,かつてないほど簡単に実現できます。Function自体が何かすごいことをする訳ではありませんが,セットアップと実行が極めて簡単であるため,IoT HubやStream Analyticsといったマネージドサービスのメリットをフルに活用できるのです。
InfoQ: Azure Functionsを使ってユーザが実際に行なっている処理の規模(トランザクション)としては,どの程度のものがあるのでしょうか?
Anderson: 1日に数回の実行というユーザがほとんどです。まずはFunctionsを使って既存のサービスを簡単に拡張することから始めて,サーバレスのパターンや機能を増やすことで,徐々に利用を増やしていっています。最も規模の大きなユーザは,毎秒数千回というレベルで,1日当たり数億回の処理を行なっています。
InfoQ: Visual Stdioに関するツーリングが先日発表されましたが,ユーザにとってなぜ,この機能が重要なのでしょう?
Anderson: Azure Functionsには開発の初期段階から,開発者の生産性とアジリティを向上するという基本的な使命がありました。開発者が使い慣れたツールを使って,短期間で開発を行なえるようにしたいのです。そのために,“5秒で開始,5分で成果”というマントラをよく使いました。テキストエディタを使えばコードを手早く書くことはできますが,私たちは経験上,多くの人たちが生産性を高めるために,Visual Studioのような強力なツールを必要としていることを知っています。他のOSを使用している開発者をサポートするために,汎用的なローカルツールとVS Codeの統合にも投資しています。ローカル作業における優れたエクスペリエンスの一部として,ローカルデバッグがあります。現時点ではVisual Studio内でのライブデバッグをサポートしています。私自身,デモを開発したりユーザを支援する上で,難しいバグをキャッチするために,すでにこの機能の恩恵を受けています。
InfoQ: Azure Functionsは今のところ,Azure Event Hub,Azure Service Bus QueuesとTopics,Azure Storageといったサービスとの統合をサポートしていますが,今後サービスに含める予定のイベントトリガとしては,他にどのようなものがありますか?
Anderson: 開発者の生産性に対する当社の一貫した姿勢を反映して,今後もより多くのサービスやデータを容易にFunctionに接続するために,さらなるバインディングの提供を続けていきます(Document DBやAzure IoT Hubなど,より多くのAzureサービスに対するトリガを提供していく予定です)。Azure Monitoringのような通知サービスや,Office 365やDynamics 365といったSaaSソリューションとのより緊密な結合にも重点的に取り組んでいきます。Function内でエラーが発生したことを通知するような,Functions独自のトリガも検討しています – Azure Functionsの管理を改善するためにAzure Functionsを使用するのです。
この記事を評価
- 編集者評
- 編集長アクション