企業がデジタルトランスフォーメーションを加速させる中、サーバーレス関数などの現代的なクラウド技術が導入されています。Flexera社によれば、サーバーレス関数は現在企業によって評価されている技術の中で第1位であり、企業が利用しているクラウド技術トップ5の一つです。サーバーレスサービスの弾力性により、ピーク負荷時のトラフィック急増に対応するなど、必要に応じてスケーリングが可能となり、お客様が使用した分だけお支払いいただく柔軟性を提供します。この進化に伴い、Functions-as-a-Service(FaaS)は、低コストで細分化された機能を実行するために、企業によって急速に採用されています。
ソフトウェアシステムの信頼性、セキュリティ、品質を確保するには、可観測性が不可欠です。可観測性は、開発者や運用担当者が問題を特定・解決し、パフォーマンスを最適化し、ユーザーエクスペリエンスを向上させるのに役立ちます。
しかしながら、サーバーレスアプリケーションには、従来のサーバーベースのアプリケーションよりも可観測性を困難にする特有の特性がいくつか存在します。本ブログ記事では、これらの課題のいくつかについて、またそれらをどのように克服できるかについてご説明いたします。
サーバーレスアプリケーションとは?
サーバーレスアプリケーションは、HTTPリクエスト、メッセージ、タイマーなど様々なソースからのトリガーに応じてオンデマンドで実行されるイベント駆動型関数で構成されています。これらの関数は、基盤となるインフラストラクチャ、スケーリング、課金管理をサーバーレスプラットフォームまたはプロバイダー(AWS Lambda、Azure Functions、Google Cloud Functionsなど)によって実行されます。
サーバーレスアプリケーションには、サーバーベースのアプリケーションに比べていくつかの利点があります:
- サーバーやコンテナのプロビジョニング、管理、保守の必要性を排除します。
- 需要やトラフィックパターンに基づいて自動的にスケールします。
- 関数の実行時間中に消費されたリソースに対してのみ課金されます。
- インフラストラクチャの複雑さを抽象化することで、開発とデプロイのサイクルを迅速化します。
しかしながら、サーバーレスアプリケーションにはいくつかのトレードオフや課題も存在します:
- 関数の実行環境や設定に対する制御が限定的です。
- 関数の初期化時間による高いレイテンシとコールドスタートの問題。
- 異なるサービスやコンポーネント間の依存関係や相互作用がより複雑になります。
- 関数の内部状態や動作に関する可視性が低い。
サーバーレスアプリケーションにおいて可観測性が難しい理由は何でしょうか?
可観測性は通常、システムから3種類のデータ(メトリクス、ログ、トレース)を収集することで実現されます。サーバーレスアプリケーションからこれらのデータタイプを収集することは、その一時的な性質のため容易ではありません。サーバーレス関数はステートレスで短命、かつ予測不可能です。あらゆるソースから、異なる頻度や継続時間でいつでも呼び出される可能性があります。また、異なる構成の異なるインスタンス上で並行して実行されることもあります。これにより、ライフサイクルの追跡、動作の文脈化、アクティビティの相関付けが困難になります。
さらに、サーバーレスプラットフォームは、可観測性ツールや機能に対するサポートレベルが異なります。サーバーレス関数向けに組み込みのメトリクス、ログ、トレースを提供するプラットフォームもあれば、追加の設定や外部サービス・エージェントとの統合を必要とするプラットフォームもあります。
したがって、サーバーレスアプリケーションにおける可観測性の課題は、以下の3つの次元で分類できます:
- データ収集– サーバーレス関数からメトリクス、ログ、トレースを効率的、確実、かつ一貫して収集する方法
- データ可視化– サーバーレス関数からの監視データを直感的で明確かつ包括的に提示、探索、解釈する方法
- データ分析– サーバーレス関数からの監視データを効果的、正確、かつ包括的に処理、集計、クエリする方法
AWS Lambda、Azure Functions、Google Cloud Functions のエンドツーエンドの可観測性を実現する、強化された自動化とインテリジェンス
Dynatrace プラットフォームは、大規模な拡張性、継続的な自動化、顧客に影響が及ぶ前に問題を自動的に特定する Dynatrace Davis® AI、およびコア機能としてのサーバーレスサポートにより、企業がクラウドの複雑性に関する課題を克服できるよう構築されています。
このため、Dynatrace は、AWS Lambda、Azure Functions、Google Cloud Functions などのサーバーレス技術を含む、すべてのクラウドベンダーの可観測性に対して、最も包括的なサポートを提供しております。
- AWS CloudWatch、Azure Monitor、Google Operations Suite からプラットフォームメトリクスを収集する、シンプルで統一された統合。
- アプリケーションおよびプラットフォームのログデータをコンテキストとともに自動的に取得し、追加の詳細情報を迅速に掘り下げることができます。
- すべての関数ランタイム、言語、トリガーに対応した分散トレース統合により、最も複雑なトランザクション内においても、問題の影響範囲と根本原因を理解するためのエンドツーエンドの可視性を提供します。

詳細については、サーバーレスクラウドサービスに対する Dynatrace のサポートに関する完全なマトリックスをご覧ください。
すべてのテレメトリ信号を有効にするには、通常、次の3 つの手順に従います。
- Dynatrace をクラウドベンダーに接続し、関連するインフラストラクチャ監視データを収集することで、重要な健全性に関する洞察を得ることができます。
- ログ収集は、ログを Dynatrace へ一元的に転送する方法、または AWS Lambda 向けの最新機能を活用し、Dynatrace AWS Lambda Layer を通じてエッジで直接ログを収集する方法のいずれかを選択いただけます。後者の方法では、任意の数の関数へログ収集をスケールアウトすることが可能です。
- クラウドネイティブ統合機能をご利用いただくか、OpenTelemetryを活用したモニタリング・アズ・コード手法で分散トレースを追加し、関数を計測対象としてください。クラウドネイティブ統合機能では、Dynatrace AWS Lambda Layerを追加するだけで自動計測が実現します。
OpenTelemetry は、すべてのクラウドベンダーによって、ネイティブのモニタリングソリューションを拡張し、Http-Requests などの機能トリガーやバインディング、Amazon SQS や Azure Service Bus などのキューイベントをサポートするクラウドサービスの可視性を提供または強化するためのオープンスタンダードとして採用されています。
クラウドベンダーは、リソース検出器、事前計測済みのクラウドサービス SDK、テレメトリインポーター/エクスポーターなどの機能強化を提供しています。
これらの機能に加え、Dynatrace は Python、.Net Core、Node.js、GoLang を含むすべてのプラットフォームおよび言語向けのヘルパー機能を追加し、必要な定型コードを最小限に抑えます。
Dynatrace ドキュメントでは、インスツルメンテーションの適用や、AWS Distro for OpenTelemetryなどの追加ライブラリの使用に関するチュートリアルやベストプラクティスをご案内し、Amazon DynamoDB などのクラウドサービスをより深く理解したり、アプリケーションログをパフォーマンスデータやトランザクションと関連付けたりすることを可能にします。


テレメトリ信号を有効にすると、Dynatrace は、さまざまなデータソースから収集したすべてのテレメトリデータを統合したビューを提供します。

これにより、サーバーレス関数の動作を簡単に調査し、検出された異常の影響と根本原因を特定することができます。デイヴィスの探索的分析により、Dynatrace は、すべてのテレメトリデータにわたる異常間の相関関係を理解するのに役立ちます。このような異常は、関数のコールドスタートによって引き起こされる場合があります。運用上のニーズに合わせてクラウドアプリケーションのコストやパフォーマンスを調整するには、コールドスタートの動作を理解することが不可欠です。
関数のコールドスタートに関する詳細は、以下のクラウドベンダーのブログ記事をご覧ください。
- サーバーレスのコールドスタートを理解する | Azure ブログと更新情報
- Lambda実行環境 – AWS Lambda
- スタートアップCPUブーストによるコールドスタートの高速化 | Google Cloud
Dynatrace によるサーバーレスの可観測性の導入
Dynatrace が、サーバーレス技術を含む広範な可観測性をどのように提供しているかについては、以下をご覧ください。
Dynatraceを初めてご利用ですか?
無料トライアルにお申し込みください。
お探しの情報が見つかりませんか?
新しいディスカッションを開始するか、Q&Aフォーラムで助けを求めてください。
フォーラムへ