このページの本文へ

前へ 1 2 次へ

クラウドユーザの5社に1社はFaaSを活用、Python人気の一方でJavaも!? など「サーバレスの8つのトレンド」

“サーバレス活用のリアル” Datadogがグローバル調査で解明

2021年09月07日 07時00分更新

文● 五味明子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

5. CloudFrontユーザの4人に1人がサーバレスエッジコンピューティングを導入

エッジロケーションでLambda関数を実行する場合、その実行時間は20ミリ秒以下がもっとも多い

 AWSのコンテンツデリバリネットワーク(CDN)である「Amazon CloudFront」は、エッジロケーションからコンテンツを配信することで高速化をはかるサービスだが、エッジロケーションでLambda関数を実行できる「Lambda@Edge」を使うことで、エンドユーザのデバイスに適した画像変換を行ったり、A/Bテスト用にHTTPヘッダを制御するなど、エッジロケーションに近い場所のユーザに対してパーソナライズされたエクスペリエンスの提供が容易になる。調査によればCloudFrontユーザの4人に1人がLambda@Edgeを使っており、さらにLambda@Edgeで使われている関数の67%が「20ミリ秒以下」で実行されている。守屋氏は「レイテンシが重要なアプリケーションにおいても最小限のオーバーヘッドでサポートできていることのあらわれであり、エンドユーザのエクスペリエンスを向上させるためにLambda@Edgeを利用する企業が増えている」と指摘する。

6. Lambda関数のほとんどでProvisioned Concurrencyを“過剰利用”

Lambdaの課題であるコールドスタートを緩和するProvisioned Concurrencyを適切に使えているケースはそれほど多くない

 Lambdaは関数の実行時にバックエンドでコンテナ(実行環境)を生成するが、次のリクエストに対しても同じコンテナを再利用することが可能になっている(ウォームスタート)。しかし一定時間を経過するとコンテナは破棄され、リクエストごとに新しいコンテナが生成されることになり、相対的に処理に時間がかかってしまう(コールドスタート)。やっかいなのはコールドスタートとなってしまう時間が決まっていないことで、ミリ秒レベルのレスポンスが求められるアプリケーションの場合、3で説明したよう小さな関数を“カラ実行”させてコールドスタートを避けているユーザも少なくない。

 こうしたLambdaユーザの声を受け、AWSでは2019年12月に「Provisioned Concurrency」を発表、Lambdaの同時実行数(コンテナ数)を事前に設定できるようにし、コールドスタートを回避する対策を提供した。しかし“適切な量”でもってProvisioned Concurrencyを設定することは難しく、今回の調査では57%以上のLambda関数が必要以上にProvisioned Concurrencyを使用しているという結果になっている。守屋氏は「すべてのユーザ、すべてのユースケースでウォームスタートが必要というわけではない。レスポンスタイムが重要なところではウォームスタートが向いているが、溜まっている内容を順次処理していくような場合にはウォームスタートのベネフィットはあまりない。Provisioned Concurrencyを割り当てる処理についてはいったん見直しが必要だ」と指摘している。

7. Serverless FrameworkはLambdaアプリケーションを展開するためのすぐれた選択肢

Lambdaのデプロイツールとしてもっとも使われているServerless FrameworkはDatadogも対応している

 サーバレスアプリケーションをデプロイするツールはいくつかあるが、Lambdaユーザの中でもっとも人気が高いのがオープンソースの「Serverless Framework」である。調査によれば、現在「AWS CloudFormation」でサーバレスリソースを管理している組織の90%以上がServerless Frameworkを使用しており、他のツールに圧倒的な差をつけていることがわかる。

8. Pythonはもっとも人気のあるLambdaランタイム

Lambdaがオフィシャルにサポートする6つのランタイムのうち、もっとも人気があるのはPythonで、その差は年々拡がっている

 Lambdaは現在、Node.js、Python、Java、Go、.Net Core、Rubyの6種類のランタイムをサポートしている。調査によればもっとも人気のあるランタイムはPython(58%)で、Node.js(31%)がこれに続き、両者でLambda関数の90%近くを占めている。傾向としてはPythonの人気がより加速しており、逆にNode.jsは減速傾向にあるという。また、小規模なAWSクラウド環境ではNode.jsが多いが、中規模以上の環境ではPythonが上回り、規模が大きくなるほどPythonが優勢になっている。

 また「大企業ではJavaの利用がポピュラー」(守屋氏)というトレンドも興味深い。これは機械学習などの重い処理にJavaを使っているケースが多いことに加え、「大企業に多いJavaの既存資産をサーバレスにも再利用している」(守屋氏)という事情が反映されているものとみられる。さらにカスタムラインタイムとしてはSwiftの利用も増えており、守屋氏はその理由として「メモリフットプリントが小さく、起動時間が短いという点がサーバレスに最適として注目を集めている」と語っている。

サーバレスにおける可観測性実現の重要性

 前述したように、サーバレスコンピューティングの魅力はアプリケーション開発者がインフラ構築に手間をかけることなく、コードの実行にフォーカスできるという点だ。しかし、当然ながらサーバレスコンピューティングにおいても可観測性(Observability)の担保は重要な課題である。アプリケーション開発者がコーディングにより集中できる環境を提供するためにも、サーバレスアプリケーションの振る舞いやリクエストを追跡し、全体像を把握できるシステムの存在は非常に重要になる。

 守屋氏はサーバレスコンピューティングにおけるDatadogのメリットについて、以下の3点を挙げている。

・サーバレス関数をエンドツーエンドで監視できる … 顧客ごと、サービスごとなどにつけられた一貫性のあるタグをサーバレス関数に適用することで、複数のコンポーネント間(メトリクス、ログ、トレース)を移動するサーバレス関数を追跡でき、予測し得ないエラー(機械学習による異常値の検知など)にも対応しやすく、相関関係を把握しやすい
・サーバレスアプリケーションを一元的に可視化/集約し、全体像を把握できる … サーバレス以外のテクノロジスタック(API Gatewayなど)もあわせて1カ所に集約して関連付けを行い、アプリケーション開発全体のライフサイクルを俯瞰しやすくなる
・オーバーヘッドを増やすことなくビジネスメトリクスを追跡できる … カスタマイズ性の高いダッシュボードを使うことで視覚化した分析が容易になり、インフラ管理者やアプリケーション開発者だけではなく、ビジネスユーザも含めた全ステークホルダーにとって信頼できる情報源となりうる

 これらの優位性を示したユースケースとして守屋氏が紹介したのが、ZOZO Technologiesによる「Datadog APM」を活用したサーバレスアーキテクチャの分散トレーシングだ。

 ZOZOがEC事業者向けに提供するフルフィルメントサービス「Fullfillment by ZOZO(FBZ)」では、AWS LambdaやAPI Gatewayのログを解析し、Datadog APMと連携する監視サービスを運用している。システム構築にあたって課題となったのが、複数のサービスを組み合わせて構築するサーバレスアーキテクチャの場合、1つのサービスだけのログや個々のメトリクスだけではボトルネックの特定が困難という点だった。分散システム上で可観測性を担保するには複数のメトリクスやログ、トレースをまたいだ確認/調査が必要になるが、同社は複数のAWSアカウントのログを統合しやすく、またすでに社内にノウハウがあったDatadogの製品であるDatadog APMをソリューションとして選択。結果としてテレメトリの一元管理と可視化が実現し、タイムアウトが発生した際のボトルネックの特定が容易になったとしている。サーバレスアーキテクチャはサービス間の依存関係が複雑になりやすく、パフォーマンスが落ちたときなどトラブル発生時の問題特定が難しい場合が多いが、クラウドアプリケーションのモニタリングを2010年から手がけてきたDatadogならではの強みが発揮された事例だといえる。

* * *

 今回のDatadogの調査レポートは、全世界のDatadogユーザの使用データをもとにまとめられている。したがって、一般的なユーザ企業よりも「ソフトウェアインフラやアプリケーションパフォーマンスに真剣に取り組んでいる」(Datadog)傾向があり、データには若干の偏りがあることは否めないものの、調査結果からはサーバレスコードの実行時間とパフォーマンスに強い関心が寄せられていることがうかがえる。一方で、分散システムの拡大が加速する現在、サーバレスアプリケーションの振る舞いを正しく把握/追跡し、予測することは非常に困難になってきており、Datadogのような統合的なモニタリングシステムの存在はさらに重要になるだろう。快適なコーディング環境と高いアプリケーションパフォーマンス、そして可観測性の担保――サーバレスコンピューティングはこれらをすべて高める方向で進化しつつあるようだ。

前へ 1 2 次へ

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード