LinuCシステムアーキテクト SA02試験の例題と解説
SA.07.1ログ・メトリクス・トレースの取得・収集
LinuC システムアーキテクト SA02試験の出題範囲から「SA.07.1 ログ・メトリクス・トレースの取得・収集」についての例題を解いてみます。
例題
マイクロサービス構造のように複数サービスが連携してリクエストを処理するシステムにおいて、サービス毎の独立したログ・メトリクスの収集に加えて、分散トレーシングの仕組みを導入する目的として適切でないものは次のうちどれか。
- 通常とは異なるサービス間通信フローとなったリクエストを発見する。
- オートスケールによる負荷分散構成のノード群における各ノードの CPU 負荷の時間変化の傾向を把握する。
- リクエストのレスポンスタイム全体に対して、ある一部分の処理に要した時間の割合を調査する。
- 特定のサービス内で生じているエラーがどのリクエストを起点に多く生じているか (例: 外部からの API アクセスまたは内部で発生する定期処理など) を調査する。
※この例題は実際の試験問題とは異なります。
解答と解説
適切でないのは、「2. オートスケールによる負荷分散構成のノード群における各ノードの CPU 負荷の時間変化の傾向を把握する。」です。
分散トレーシングは、サービス間の通信にリクエスト全体でユニークな ID を付属させ取りまわすといった方法により、1つのリクエストに関わる複数箇所のログをまとめられるようにする、という仕組みです。これにより、リクエスト中の各サービスの細かい動きを時系列で把握したり、リクエスト単位で情報を集約し統計的に分析するなどが可能になります。
そのため、分散トレーシングの目的や利点は主に各サービスの間の活動の可視化にあります。個々のノードのCPU負荷の時間変化など、ノードに対しての定点観測で得る情報は通常のメトリクス収集のツールで実現可能なので、選択肢 2 は適切とは言えません。選択肢 1, 3, 4 はいずれもリクエストという単位に着目する分析なので、分散トレーシングの仕組みを導入することで洞察を得やすくなります。
なお、マイクロサービスでは各サービスが互いに異なるツールセットや通信インターフェースを持つことがあり、各サービスへの分散トレーシングの仕掛けを追加することは本来困難と考えられます。この課題に対して、OpenTelemetry は各種言語用の SDK を提供することで、必要なプログラム修正を簡単化することを目指しています。
例題作成者
LinuC システムアーキテクト 試験開発コミュニティ