サーバーレス監視とは?
サーバーレス監視とは
サーバーレス監視は、企業がサーバーレスアプリケーションを監視、開発、最適化できるようにするサービスです。サーバーレス監視のイベントドリブンアーキテクチャー(EDA)では、この環境に特化して設計された監視が必要です。サーバーレス監視は、既知のメトリックを使ってチームに問題を指摘します。
サーバーレス監視は、全体的なオブザーバビリティの重要な要素です。サーバーレスオブザーバビリティは、システム出力に対する可視性を強化するため、関係するチームは、より効率的に、潜在的な問題に対処し、修正することができます。
企業はサーバーレス監視を利用してシステムの正常性を評価し、アラートを設定して問題が発生したときに対処し、最終的にパフォーマンスを最適化できます。サーバーレス監視は、パフォーマンスの最適化に関わる重要なコスト管理ツールでもあります。
サーバーレスとは?
サーバーレスコンピューティングとは、開発者がサーバーやバックエンドのインフラを管理することなく、アプリケーションを構築、実行できるようにするクラウドコンピューティングモデルです。クラウドプロバイダーは、開発者に代わり、サーバーインフラを運用、管理し、オンデマンドで大規模にサーバーを提供します。コンピューティングモデルの消費ベースの価格設定は、コストの観点から企業にとって非常に有利です。従量課金制のサーバーレスにより、企業はインフラコストを抑えながら、アプリケーションをデプロイし、スケールできます。
すべての主要なクラウドプロバイダーは、FaaS(Function as a Service)としてサーバーレスコンピューティングを提供しています。
- AWS LambdaはAWSのサーバーレス関数です。開発者はサーバーやクラスターのことを考えずにコードを実行できます。
- Google Cloud Functionsでは、クラウドベースのサーバーを管理しながら、スケーラブルなアプリケーションや機能を開発し、デプロイできます。
- Azure Serverless FaaSでは、インフラを管理することなく、アプリケーションの構築、デプロイ、運用が可能です。
また、OpenLambdaやOpenFaasなど、企業が独自のインフラで使用するサーバーレスフレームワークもあります。
しかし、サーバーレスサービスにおけるシステムやアプリケーションの運用を監視するには課題があります。サーバーレス監視は、実行する関数、それらが入っているコンテナー、アプリケーション、そしてサーバーレス環境全体を監視できるようにすることで、可視性のギャップを解消します。
サーバーレス監視の仕組み
サーバーレス監視ソリューションは、サーバーレスインフラ全体からデータをインジェストし、リソースの使用統計を集約して、ログとメトリックを提供します。サーバーレス監視では、サーバーレス関数のアクティビティを確認したり、リソースの使用状況を監視したり、アクショナブルなインサイトに関する自動アラートを設定したりすることもできます。
サーバーレス監視ダッシュボードを使えば、関数の正常性とメモリ使用状況を監視して盲点をなくし、アプリケーションのボトルネックがどこで発生しているかを特定できます。
サーバーレス監視が重要である理由
サーバーレス監視により、開発者はサーバーレスコンピューティングにおけるシステムの正常性とユーザーエクスペリエンスに不可欠なパフォーマンスの問題に対処できます。
サーバーレスでは、クラウドプロバイダーがサーバー管理の負荷を引き受けるため、開発者はその分コードの実行に集中できます。これには多数の利点がありますが、企業がその環境を制御し、可視化することは困難です。その結果、バグや問題を特定することが難しくなります。
サーバーレス監視は、複雑なデジタルエコシステムで頻繁に発生する問題を効果的に特定、管理できるようにすることで、このような課題に対するソリューションを提供します。
また、サーバーレス監視は、ITDMとBDMがサーバーレス支出を監視するための重要なツールです。ある時点でどれだけのリソースが使用されているかを把握できるため、企業は必要に応じてリソースのスケールアップまたはスケールダウンを行い、支出を管理できます。
サーバーレス監視の利点
サーバーレス監視は効率を改善し、サーバーレス環境を可視化します。パフォーマンスの問題を未然に軽減して対処し、さまざまなオペレーションを効率化できます。
- レイテンシの改善
関数の実行が低速であること、つまりレイテンシは、ユーザーエクスペリエンスにマイナスの影響を与えます。大規模なデータセットは、レイテンシの問題を特定する能力に影響します。レイテンシを特定する手がかりとなる異常値データは、大規模なデータセットから得られる平均的なメトリックの裏側では隠れてしまうことが多くあります。監視ツールは、このような課題に対応するために、カスタマイズ可能なダッシュボードを提供します。 - コールドスタートの防止
サーバーレスコンピューティングのイベントベースのアーキテクチャーは、イベントによって呼び出されたときにのみコンテナーを使って関数を提供することを意味します。サーバーレスコンピューティングアプリケーションは、最近使われた関数をしばらくの間「ウォーム」に保つことができますが、一定期間呼び出されない場合はその関数が「コールド」になります。コールドスタートは、しばらくの間コールドであった関数が突然呼び出されたときに起こります。これはレイテンシの問題を引き起こす可能性があり、必要なコンピューティング能力が多くなります。サーバーレス監視ツールは、どの機能がいつ使われているかを特定するのに役立ち、パフォーマンスを最適化できます。 - 呼び出しエラーの特定
呼び出しエラーとは、チェーンのリンクが切れている場合の対応です。これは、関数がリクエストを受信する前に、リクエストが拒否された場合に発生します。
監視ソリューションにより、サーバーレス環境を可視化し、呼び出しエラーを特定して対処できます。
- 使用状況の監視
メモリ使用状況は、サーバーレスコンピューティングサービスで設定可能な要素です。プロバイダーによっては、関数専用のメモリ領域を設定できます。この決定は、関数が呼び出されたときに、その関数を実行するのに必要な処理能力に影響します。 - コストの予測
サーバーレスプロバイダーは、使用した関数とコンピューティングリソースに対してのみ課金されます。一般的に、使用した分だけ支払うため、他のアーキテクチャーに比べてコスト削減につながります。しかし、運用の規模を拡大すると、コストの増加が予測しにくくなる可能性があります。たとえば、誤って構成された関数が、必要以上にコンピューティングリソースを食いつぶしてしまう可能性があります。総所有コスト(TCO)サーバーレスモデルでは、インフラ、開発、メンテナンスのコストがすでに織り込まれているため、コストをより正確に予測できます。 - スケーラビリティの向上
サーバーレス監視ソリューションを使えば、関数や使用状況を監視し、コストをより正確に予測することができるため、より効果的なスケーリングが可能になります。使用状況を監視し、コストを予測することで、コストを予算内に抑えながら、より効果的にスケールできます。
サーバーレス監視のベストプラクティス
粒度の高い情報:優れたサーバーレス監視ツールは、リクエストログや分散トレースなどの具体的なデータを提供します。全体像を把握でき、問題のある箇所を拡大できる監視ソリューションを探します。
データの可用性:監視データはただちに利用可能になるべきです。規模に適していて、規模に合わせてスケールできる監視ツールが望ましいでしょう。
ログ収集:ログ収集が、レイテンシを発生させたり、アプリケーションのパフォーマンスを妨げたりすることがあってはなりません。システムと互換性があり、アドオンやプラグインを必要としない監視ツールを探します。
アラート:既存の検出やアラートの仕組みに合ったアラートを設定できるサーバーレス監視ツールを探します。システム全体で統一された戦略は、時間と関連コストの節約に役立ちます。
サーバーレス監視の課題
サーバーレス監視の最初の課題は透明性です。サーバーレスコンピューティングモデルでは、サーバーはAWSなどのクラウドプロバイダーによって管理されます。サーバーレスは、サーバーの可用性を気にすることなくコードの開発と実行に集中できることを意味しますが、サーバーの可視性は低くなります。このため、サーバーレス環境に特化した監視サービスが必要となり、全体的なオブザーバビリティを実現できます。
サーバーレス監視のその他の課題:
- サーバーレスの特性:サーバーレスモデルでは、関数が呼び出されたときにのみコンテナーを使います。サーバーにアクセスできるのは、システムが関数を呼び出したときのみです。
- 過渡的関数:サーバーレスアーキテクチャーは、関数をトリガーするイベントに基づいて構築されているため、監視が困難です。クラウドプロバイダーのランタイムの制限によっては、監視がさらに複雑化します。
- 分散アーキテクチャー:サーバーレスアプリケーションは本質的に分散型であり、そのコンポーネントはサーバーとサーバーレスアーキテクチャーの両方を含む複数のサービスに分散できます。このため、アプリケーションの正常性とパフォーマンスの全体像を把握することが困難です。
- 急速なスケーリング:サーバーレスアプリケーションは需要に応じて急速にスケールアップしたりスケールダウンしたりできるため、サーバーレスアプリケーションの監視に必要なリソースを予測、管理することが困難です。
- コスト最適化:サーバーレスアプリケーションの監視は、特に使用状況に応じて課金されるサードパーティの監視ツールを使用する場合、高額になる可能性があります。
このような課題に対処するために、サーバーとサーバーレスの両方の監視に対応できる包括的なオブザーバビリティソリューションが推奨されます。包括的なオブザーバビリティソリューションは、監視の種類ごとのギャップを解消し、サーバーレスアーキテクチャーのすべての利点が得られるようにするのに役立ちます。
サーバーレス監視ツール
サーバーレス環境での運用には、サーバーレス監視ツールが欠かせません。最善の状態で、全体的な業務効率を向上させるシームレスなエクスペリエンスを提供する必要があります。しかし、すべてのツールが同じように設計されているわけではありません。
AWSなどのサーバーレス関数プロバイダーは、ネイティブな監視ツールを提供しています。AWS Cloud WatchとAWS X-Rayは、別々の関数を実行するサーバーレス監視ソリューションです。AWSのみを使用している場合、組み合わせると、サーバーレスの可視性を向上させることができます。運用が複数のクラウドプロバイダーに依存している場合、それらのプロバイダーと統合するサーバーレス監視ツールが必要になります。
ビジネスに適したサーバーレス監視ツールを選ぶ際には、以下の点を考慮する必要があります。
- 可視性の統合:1つのツールでスタック全体を把握できるため、トラブルシューティングのワークフローが改善されます。複数のUIやツールを使用してトラブルシューティングのワークフローを複雑にするのではなく、これらの機能をまとめて一元化することを検討してください。
- リアルタイムの追跡:リアルタイムのアラートとメトリックデータにより、完全な可視化を実現できます。警告の可能性があれば、ただちにチームに通知します。
- 言語サポート:サーバーレス監視ツールがすべてのプログラミング言語をサポートしていることを確認します。
- セットアップの容易性:望ましいのは、システムを複雑化するのではなく、簡素化するサーバーレス監視です。使いやすく、導入しやすいソリューションを探します。
- 統合:サーバーレス監視ツールは、AWS、Azure、Google Cloudのような他のクラウド統合とも互換性が必要です。運用環境全体をシームレスにサポートするツールを選びます。
サーバーレスインジェスト
サーバーレスインジェストは、AWS環境内で複数のソースから大規模なデータセットを取り込むエージェントレスな方法です。Elasticsearchの組み込まれたデータインジェストツールであるElastic Serverless Forwarderを使えば、データをスムーズに取り込み、変換し、エンリッチして、サーバーレス監視ツールやオブザーバビリティツールに送信できます。
Elasticでのサーバーレス監視
Elasticsearchで構築されたElasticオブザーバビリティは、オンプレミスとクラウドの両方で、サーバーレスアーキテクチャーを超えた環境の監視と観察を可能にし、フルスタックのエクスペリエンスを提供します。AWS Lambdaのレイテンシの問題、コールドスタート、その他の呼び出しの問題を特定します。ログは他のテレメトリデータと一緒に収集されるため、すべてのデータを一元化して、コンテキストに沿って確認できます。