週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

米マイクロソフトの開発者が日本のエンジニアに直接サービスを説明

エンタープライズ用途に耐えうるAzure Durable Functionsという選択肢

2018年11月02日 12時00分更新

 9月29日に開催されたServerlessconfでは、米マイクロソフトのAzure Functionsの開発エンジニアが直接日本のエンジニアに説明するセッションが行なわれた。複数のファンクションを組み合わせられるAzure Durable Functionsに関しては、機能解説や事例も紹介される貴重な機会となった。

米マイクロソフト プリンシパルソフトウェアエンジニア クリス・デュラン氏

サーバーレスとはサーバーがないということではない

 2番手として登壇したのは、米マイクロソフトのプリンシパルソフトウェアエンジニアであるクリス・デュラン氏。長らくエンタープライズ系の開発で実績を積んできており、今はAzure Functionsの開発に携わっているという。「日本は大好きだけど、日本語の会話は上手じゃないので、前もって書いたスピーチを読んでしまいます(笑)。みなさん、よろしくお願いします!」とのことで、ここまでの流ちょうな日本語についてこう説明。おそらくアルファベットで書かれた日本語の原稿を読んでいるのだが、きちんと練習したのか、発音もイントネーションも素晴らしい。日本語で伝えたいというデュラン氏の熱意にほだされ、会場からも大きな拍手が起きた。

 まずはサーバーレスとはなにかというトピックに移る。デュラン氏は、「2ヶ月前にわれわれのサーバーレスチームはオフィスを引っ越したのですが、そこに据え付けられたラックにはサーバーがありません。これはサーバーレスでしょうか?」と聴衆に問いかける。もちろん、答えはNo。「英語でServerlessとは、サーバーがないように見えるのに、どこかにはサーバーがいっぱいあるということ。サーバーがなくなったわけではなく、サーバーのことを心配しないでよいという意味です」とデュラン氏は語る。

サーバーレスとはこういう意味ではない

 また、クラウドコンピューティングを交通で例えると、IaaSの場合は車の販売会社、PaaSはレンタカーになるという。「レンタカーはとても便利ですけど、使っても、使わなくても、コストを負担しなければなりません」とデュラン氏は指摘する。一方で、サーバーレスはタクシーのような利用形態になる。距離と時間で利用した分だけ支払えばよいので、もっとも便利だという。

エンタープライズクラスのFaaSの要件とは?

 では、企業がサーバーレスのサービスを選ぶのに、なにが必要か? 1つ目に挙げたのはパフォーマンスとスケーラビリティだ。特にスケーラビリティはいわゆるVMインスタンスのキャパシティと追加するためのスケール速度の2つが重要になるという。

 これに対してMicrosoft UniteでGAが発表されたAzure Functions 2.0はHTTPトリガーのスループットが70%も向上したという。また、プレミアムファンクションが新たに発表され、①サーバーレスとPaaSのハイブリッド、②VMインスタンスの最小値と最大値の設定可能、③素早いスケールアウト、④ロングランニングファンクションの実行、⑤プレミアムVMサイズのサポート、⑥VNETコネクティビティ、⑦コールドスタートなし、などの特徴が追加されている。

最新のAzure Functions 2.0の強化点

 セキュリティに関しては、Azure Functionsではシステムを守るため、ファンクションで実行されるよう、アクセス制御や認証、承認、アクセス権の取り消しなどの機能を用意している。また、開発に関しても、さまざまな環境を選ぶことができる。Azure Functionsに関数を登録するほか、AzureStackを用いたオンプレミスでの開発も可能。もちろん、ローカルでの開発も可能で、コンテナを用いることで、IoTホストや非Azureホストでの開発することもできるという。

 その後、同じチームのマリエ・ホージャー氏がAzure FunctionsでシンプルなHello Worldのデモを披露。コンプライアンスの要件でクラウドが使えない部門でも、Dockerコンテナを使うことで、オンプレミスでもAzure Functionsが実行できることをアピールした。また、VSCodeでブレイクポイントを利用したり、オンプレミスのイメージをAzure上にデプロイすることも可能。さまざまな場所で同じコードが動かせるポータビリティがAzure Functionsの大きなメリットと言えるようだ。

複数のファンクションをつなぎあわせるAzure Durable Functions

 続いてフォーカスしたのは生産性の高さ。その点、Azure Functionsでは統合開発環境やコマンドラインツールを用いて、開発やデプロイ、デバッグなどを迅速に行なうことができる。また、対応言語も豊富で、C#やJava、JavaScriptに加え、Pythonのサポートも開始した。クリス氏は、日本マイクロソフトのちょまどさんによるイラストを披露しながら、「C#やJavaは業務アプリケーションが得意だし、JavaScriptはWebアプリのAPIを呼び出すのに使う。Pythonはデータ処理や機械学習が得意。企業ごとに好きな言語が選べます」とアピールした。

ちょまどさんのイラストで対応言語をアピール

 また、複数の関数をつなぎ合わせる「Azure Durable Functions」についても紹介された。Azure Durable Functionsでオーケストレーターを呼び出すことで、複数の関数を続けて記述することができ、キューイングやエラー処理にも対応する。現在はC#やJavaScriptに対応しており、関数チェーンや非同期なHTTP API、並列実行のチェーン(Fan-out,Fan-in)などさまざまな用途が用意されている。

複数のファンクションを組み合わせることができるDurable Functions

 デモを担当したホージャー氏は、「つい最近、開発している最中にシークレットをGitHubにコミットしてしまいました(笑)。OSSは素晴らしいですが、間違えてシークレットをコミットすることがとても簡単です」とコメントし、会場は大受け。もちろん、これはAzure Durable Functionsのためのネタで、GitHubのリポジトリを正規表現でサーチすれば、こういったシークレットの漏洩が防げると説明する。とはいえ、大きなリポジトリをまるごと検索するとタイムアウトしてしまう可能性があるので、ファイルごとの検索を並列処理させた方がよい。こうした用途にAzure Durable Functionsは最適で、ファンクションが動いていない場合はコストもかからないという。

 Azure Functionsはコードも、ドキュメントも、OSSとして提供されている。「お客様は問題があれば、GitHub Issueを開くことができます。マイクロソフトの開発者と直接相談することもできるし、特別な機能をプルリクエストできます。今までも素晴らしい機能を数多くプリリクエストしていただきました」とデュラン氏はアピールする。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

本記事はアフィリエイトプログラムによる収益を得ている場合があります