ナビゲーションをスキップする

Azure Functions 2.0 のご紹介

9月 24, 2018 に投稿済み

Principal PM Manager, Azure Functions

本日、Azure Functions 2.0 が一般提供 (GA) となりましたことをお知らせします。これは大きなマイルストーンであり、お届けする多数の機能はどれも、きわめてスケーラブルなサーバーレス アプリケーションの構築をこれまで以上に簡単にすることをねらいとしています。

Azure Functions 2.0 は実稼働環境に対応しており、最大級に要件が厳しいワークロードの処理も可能で、稼働率 99.95% が SLA で保証されています。今後の新規開発には 2.0 を使うことを強くお勧めするとともに、既存の 1.0 アプリを 2.0 バージョンにアップグレードして、この新しいリリースの長所をフルに活用することをお勧めします。具体的な手順については、2.0 へのアップグレードのガイドをご覧ください。

このリリースの内容

Functions 2.0 は、ユーザー エクスペリエンス、開発者にできること、およびプラットフォームの堅牢性の点で進化しています。最大の変化は、ホスト ランタイムがポータブルでクロス プラットフォームになり、しかも効率が向上していることです。その結果、アプリを構築して実行する方法を多様なオプションから選択できるようになりました。

プラットフォームが増え、選択肢も増加

Azure Functions が対応する環境の種類が増え、Mac や Linux のマシンでもローカルに実行できるようになりました。これに加えて、VS Code とも統合されており、クラス最高のサーバーレス開発がどのプラットフォームでもできるようになりました。このランタイムは Azure Functions サービスの外部でホスティングされるときでも良好に動作し、場所を問わず実行できます。Kubernetes での Azure FunctionsIoT Edge での Azure Functions に対するサポートの説明をご覧ください。その他のホスティング方法も予定されています。詳しくは、後の「次に来るものは?」をご覧ください。

HTTP トリガー

コードに合わせて最適化

Functions 2.0 では、パフォーマンスがこれまで以上に向上しています。これは全般的なホストの改善によるものであり、多くの現代的な言語ランタイムのサポートや、コードをパッケージ ファイルから実行する機能もこれに貢献しています。

.NET での開発時に、.NET Core 2.1 を使用して関数を作成できるようになりました。このバージョンではパフォーマンスが大きく向上しているだけでなく、.NET 関数を開発して実行できる場所が増えています。アセンブリ解決のしくみについても大きな変更が加えられており、関数それぞれが読み込みコンテキストを持つようになりました。つまり、多くの競合が発生することはなくなり、もし発生しても、その軽減はこれまで以上に簡単になります。

.NET 以外の言語が言語ワーカー モデルから動作するようになりました。この利点を最初に活用できるスタックは JavaScript です。Functions 2.0 では Node 8 と Node 10 の両方がサポートされ、ユーザーから見たパフォーマンスは全体的に向上する見込みです。このワーカー アプローチによってより良いバージョン サポートとイテレーションが可能になり、その他の言語もこの方法で追加される予定です (今後の予定の詳細については、この記事の「次に来るものは?」のセクションをご覧ください)。

v1vsv2

強力なプログラミング モデル

1.0 ランタイムからの大きな変更の 1 つに、バインディングと統合のしくみがあります。新しいバージョンでは、コア HTTP とタイマー サポートを除くすべてのバインディングが拡張機能として取り込まれます。この拡張機能はシンプルなパッケージとして用意されており、Functions ツーリングを使用してインストールできます。開発者が使用するプログラミング モデルは、これまでと変わりません。拡張機能をパッケージとして分離するように変更した結果、バインディング (とその依存関係) のバージョン管理をコア ランタイムとは独立して行うことが可能になります。つまり、アプリケーションとその実行方法について開発者によるコントロールの幅が広がります。特に、アプリケーションを継続して進化させていけるように、サービスとして実行する場合です。

Azure には絶えず新しいサービスが追加されていますが、パッケージ モデルを採用しているため、新しいサービスもすみやかに統合できます。最近追加されたものの 1 つが Azure SignalR Service です。この完全マネージド サービスを利用すると、開発者が SignalR サーバーのセットアップ、ホスティング、スケーリング、負荷分散に対処する必要はなくなり、リアルタイム Web エクスペリエンスの構築に専念できます。最新バージョンの Azure Functions にはこのサービスに対応する拡張機能が追加されており、オープン ソースのバインディングとして Microsoft Azure がこちらの GitHub リポジトリでホスティングしています。リアルタイム サーバーレス アプリケーションの構築を今すぐ始めるには、SignalR Service バインディング リファレンスをご覧ください。

開発がさらに簡単に

Azure Functions の強力なネイティブのツーリングが Visual StudioVS CodeVS for Mac の中に組み込まれており、コード編集と並行して CLI を実行することができます。この機能は開発の生産性に直接影響するものであるため、これまで使う機会がなかった場合でも、検討してみることをお勧めします。

サーバーレス アプリケーションには多数の種類のコンポーネントが関与することがあり、観察と監視が難しくなりがちです。Functions 2.0 では Azure Application Insights との統合が強化され、分散トレースの状態をさらに詳しく知ることができます。多様なサービスを対象として、依存関係が自動的に追跡され、リソース間接続の相互関連が自動的に特定されます。その他の機能も、間もなく追加される予定です。これらはすべて、アプリケーション マップとして可視化されるので、コンポーネントがどのように相互作用しているかを理解でき、個々の実行をドリルダウンして問題を診断することもできます。

FunctionsAppMap

Azure Functions 2.0 では、DevOps のエクスペリエンス向上にも力を入れています。新しいデプロイ センターはこの方向への一歩であり、ビルドとデプロイのオプションが 1 か所に集約されています。デプロイ センターには Function App の "プラットフォーム機能" からアクセスでき、コードをどのソースから Functions でデプロイするかを簡単に設定できます。

デプロイ センター

このように DevOps エクスペリエンスに注力した結果は、ユーザーが最初の関数を作成するときの体験にも反映されています。Azure portal にある "作業の開始" では、開発とデプロイのオプションがハイライトされ、案内に従って構成を完了することができます。新しい関数アプリをポータルで作成しながら、2.0 関数のデプロイに必要なすべてのステップを順に学ぶことができます。

Azure Functions

次に来るものは?

Microsoft の短期的なロードマップについてもご紹介します。Azure Functions 2.0 を土台として、多数の重要なイノベーションが行われます。次に示すのは、間もなく導入予定のホスティングのオプションと言語サポートの概要です。

サーバーレス Linux

Azure Functions の開発スタックとホスティングのオプションを拡張していく取り組みの 1 つとして、サーバーレス Linux ホスティング (Service Fabric Mesh を利用) にも力を入れており、その手始めとして Linux OS 上に構築される Functions のための従量課金プランのプレビューを開始します。これを利用すると、Linux (と Mac) を専門とする開発者がシームレスかつ自然に、このプラットフォームでのホスティングに進むことができます。開発者の開発スタックとの親和性が最大になると同時に、サーバーレスの利点をフルに活用できます。ぜひ、Linux プレビューにサインアップして早期リリースにアクセスし、フィードバックをお送りください。

Python のサポート

現在、Functions 2.0 ランタイム、新しいワーカー モデル、およびに Linux ホスティング プラットフォームに基づく Python 3.6 のサポートを強化しています。Python の関数は、データ操作、機械学習、自動化、スクリプト処理に適しています。このようなシナリオをサーバーレスで構築すると、インフラストラクチャの管理という負担がなくなるので、すばやく移行してビジネスの問題の解決に専念できます。現時点では、この機能はプライベート プレビュー段階です。ぜひお試しになり、フィードバックをお寄せください。

つながりましょう

これまでの、そして今後リリースが予定されている多数の機能について、フィードバックをお聞かせいただきたいと考えています。開発チームとは TwitterGitHub でつながることができ、Stack OverflowUserVoice もチームが積極的に目を通しています。Functions 2.0 のどの機能が気に入ったかをぜひお聞かせください。今週の Microsoft Ignite に参加される場合は、ぜひブースにお立ち寄りください。