連日多数開催されるワークショップ
それでは、グランドオープンに合わせて開催されたワークショップの模様を紹介しよう。
このワークショップは、主にアプリケーション開発者を対象として、Microsoft Azure上でのサーバレスアプリケーション開発について、簡単な解説と演習で習得するものだ。ワークショップでは、定員8名のところ14名の申し込みがあった。その模様をブログなどでレポートできる人優先ということで、参加者が選ばれた(そのため、他の参加者のレポートも公開されているはずだ)。
ワークショップの講師は、マイクロソフトでAzureによるアプリ開発やOSS支援を担当する川崎庸市氏(クラウド&ソリューション事業本部 インテリジェントクラウドグローバルブラックベルト Azureテクニカルソリューションプロフェッショナル)が務めた。
Azureがサポートするサーバレスアプリケーション開発
ワークショップの前半では、Azureによるサーバレスアプリケーションの概要について説明した。
モダン化されたアプリケーションは、「コンテナ」「マイクロサービス」「サーバレス」が不可欠な構成要素となっている。特に、サーバレスを実現するためには、サーバの抽象化と、イベントをトリガーとしてコードを実行することでインスタンスをスケールアウトさせる仕組み、さらにコード実行など細かな利用単位に合わせた従量課金などが必要となる。サーバレスを実現できれば、仮想マシンのインスタンスを継続的に立ち上げておく必要がなくなり、サーバの維持・運用の手間を一段と低減できるだろう。
Azureでは、このようなサーバレスアプリケーションを支えるため、多数のコンポーネントを用意しており、効率よくサーバレスアプリケーションを開発・運用することが可能になっている。さらに、新たなコンポーネントも次々とリリースされており、川崎氏も、最新の状況についていくのがやっとだという。
※クリックすると拡大画像が見られます
イベント・データ駆動の関数実行サービスを実現するAzure Functions
中でも、今回のワークショップで中心となったのは「Azure Functions」というコンポーネントである。
Azure Functionsは、イベント・データ駆動の関数実行サービスである。Azure Functionsでは、イベントに応じてコードを発火させる「Trigger」と、コードに対するデータの入出力を切り替える「Binding」を利用する。Azure Functionsが持つこのような仕組みにより、イベント駆動による柔軟なコード実行が可能となっている。
なお、Triggerは、Azure Functionsで実行するコードに、引数のような形式で記述しておく。また、Bindingは、JSONファイルとして記述しておく。さらに、これらは、Azureポータルの画面で設定することも可能になっている。
ちなみに、Azure Functionsは、Github上でOSSとして公開されており、サンプルやツールもここから入手することが可能になっている。
PythonコードをAzure Functionsで実行するには
しかし、このAzure Functionsでのコード実行には、まだまだ制約も多い。まず、現在のAzure Funcitons Runtimeのバージョンに、「1.x」と「2.x」がある。「1.x」はGenerally Acailable(GA)で、本番利用が可能となっている。しかし、GAとなっている言語は、C#、Javascript、F#と少なく、PythonやPHP・TypeScriptは、実験的な実装となっているのだ。そして、「2.x」は、Preview版で本番利用は非奨励となっている。
また、開発環境についても、制約がある。「1.x」はAzureポータルとWindows版開発ツール(VS/VS code/CLI)をサポートしている。「2.x」では、Windowsに限らず、Linux/MacOSでの開発をサポートするという。
とはいえ、Azureの開発スピードは極めて速い。、グローバルでPythonの人気も高く、早くGAにしてほしいと強力なリクエストがGithub上に来ているそうなので、近いうちに利用可能になるのではないかと、川崎氏は話していた。
ちなみに、Azure Functionsでは、Pythonのバージョン2.7をデフォルトで提供している。これをバージョン3にする方法についても、簡単に紹介があった。興味がある人は、参照してほしい。
※クリックすると拡大画像が見られます