コンテンツにスキップ

全般 - よくある質問

ログとトレースの違いは何ですか?

ログは、単一のアプリケーションとそれに関連するイベントに限定されます。 たとえば、ユーザーがマイクロサービス プラットフォームでホストされている Web サイトにログインし、そのサイトで購入を行った場合、複数のアプリケーションからそのユーザーに関連するログが発行されることがあります:

  1. フロントエンド Web サーバー
  2. 認証サービス
  3. インベントリサービス
  4. 支払い処理バックエンド
  5. ユーザーにレシートを送信するアウトバウンド メーラー

これらのそれぞれがそのユーザーについて何かを記録する可能性があり、そのデータはすべて価値があります。 ただし、トレースでは、これらの個別のコンポーネント全体にわたる、その単一のトランザクション内のユーザーの全体的な対話の単一の、一貫したビューが表示されます。

このように、トレースは複数のサービスからのイベントのコレクションで、アクティビティの単一のビューを示すことを目的としていますが、ログはそれらを作成したアプリケーションのコンテキストにバインドされています。

どの種類のシグナルがイミュータブルですか?

3 つの基本的なシグナルタイプ(メトリクスログトレース)はすべてイミュータブルですが、この保証の程度には実装による差異があります。例えば、多くのガバナンスフレームワークではログのイミュータビリティが厳格な要件とされており、これを保証するための多くのツールが存在します。メトリクスとトレースも同様に、常に イミュータブルである必要があります。

これにより、「不正確なデータ」や誤って記録されたデータの取り扱いに関する疑問が生じます。AWS のオブザーバビリティサービスでは、誤って発行されたメトリクスやトレースを削除する機能はありません。CloudWatch Logs ではログストリーム全体を削除できますが、一度収集したデータを遡及的に変更することはできません。これは設計上の意図的な特徴であり、顧客データを最高の注意を払って扱うために重要な機能です。

イミュータブル(不変性)がなぜオブザーバビリティに重要なのか

イミュータブル(不変性)はオブザーバビリティにとって最も重要です! 過去のデータが変更できる場合、システムと運用の進化における 選択 を知らせる重要なエラーや挙動の外れ値が失われてしまいます。 たとえば、時間的ギャップを示すメトリクスデータポイントは、データ収集の欠落を単に示しているだけでなく、インフラストラクチャにおけるより大きな問題を示している可能性があります。 同様に、「null」データでも - 空の時系列でさえ価値があります。

ガバナンスの観点からは、事後的にアプリケーションログやトレースを変更することは、非否認性 の原則に違反します。これは、システム内のデータがソースアプリケーションによって意図されたとおりであることを信頼できないことを意味します。

Blast Radius とは

Blast Radius とは、変更が環境に与える可能性のあるダメージのことです。 例えば、データベースのスキーマを変更すると、その潜在的なリスクにはデータベース内のデータと、それに依存するすべてのアプリケーションが含まれる可能性があります。

一般に、変更の Blast Radius を減らすことはベストプラクティスであり、可能な限り変更をより小さく、安全で、元に戻せる塊に分割することが常に推奨されます。

「クラウドファースト」アプローチとは

クラウドファースト戦略とは、組織がインフラストラクチャの全部またはほとんど全部をクラウドコンピューティングプラットフォームに移行することです。物理的なサーバーなどのリソースを利用する代わりに、クラウド上にリソースを配置します。

コロケーション型ハードウェアに慣れている人にとっては、これはラディカルな変化に見えるかもしれません。しかし、逆のことも真実です。クラウドファーストのメンタリティを採用する開発者は、サーバーを物理的な場所に縛り付けることを考えられないと思います。クラウドファーストのチームは、サーバーをディスクリートなハードウェアや仮想サーバーとして考えません。その代わりに、ビジネス機能を満たすためのソフトウェアとして考えます。

クラウドファーストは、2010年代のモバイルファースト、2000年代初頭の仮想化に相当する2020年代のアプローチです。

技術的負債とは

Wikipedia からの引用:

ソフトウェア開発における技術的負債(デザイン負債やコード負債とも呼ばれる)とは、より良いアプローチを取る代わりに、現時点で簡単(限定的)なソリューションを選択することによって、後で再実装が必要になることの意味するコストのことである。

基本的に、レガシーコード、アプリケーション、人的プロセスを削除することなく、ワークロードに新しいものを追加していくにつれて、時間とともに負債が蓄積していきます。技術的負債は絶対的な生産性を低下させます。

例えば、ビジネスにほとんどまたは全く直接的な価値を提供しないレガシーシステムのメンテナンスに時間の 10% を費やさなければならない場合、その 10% は支払うコストです。技術的負債の削減は、価値を付加する新製品を作成するのに実際に費やす時間の増加に等しいのです。

関心の分離とは

オブザーバビリティソリューションのコンテキストでは、関心の分離とは、ワークロードやアプリケーションの機能領域を個別に管理される独立したコンポーネントに分割することを意味します。各コンポーネントは個別の関心事(ログ構造やログの出力など)に対応します。基礎となるコードを変更することなくコンポーネントの構成を制御することで、開発者はアプリケーションの機能と機能開発に集中でき、DevOps の人々はシステムパフォーマンスの最適化とトラブルシューティングに集中できます。

関心の分離は、コンピュータサイエンスの中核的な概念です。

オペレーショナルエクセレンスとは

オペレーショナルエクセレンスとは、ワークロードの運用に合わせたベストプラクティスの実行です。AWS には Well-Architected フレームワークが用意されています。 オペレーショナルエクセレンスの概要については、このページを参照してください。