>100 Views
April 20, 22
スライド概要
分散トレーシングによるソフトウェアの信頼性構築
https://www.elastic.co/jp/virtual-events/building-software-reliability-with-distributed-tracing
FPT ジャパン エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー Microsoft で13年間、テクニカルエバンジェリストとして .NET、C#、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け技術啓発活動 (DevRel) 。Dell、Accenture、Elastic、VMware 等での DevRel 後、2024年11月1日より現職で DevRel 活動を開始。NVIDIA との戦略的協業 AI GPU クラウド、Azure/AWS/GC 上の AI &データ関連サービスのマーケティング、プリセールス、教育、関連新規サービス開発。元内閣官房 IT 総合戦略室 政府 CIO 補佐官(兼務)、元デジタル庁 ソリューションアーキテクト(兼務)。
分散トレーシングによる ソフトウェアの信頼性構築 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト デジタル庁 省庁業務グループ ソリューションアーキテクト
Shotaro Suzuki Twitter : @shosuz Elastic Technical Product Marketing Manager/Evangelist デジタル庁 省庁業務グループ ソリューションアーキテクト 元 Microsoft Technical Evangelist
アジェンダ • 分散トレーシングってどんなもの︖ • トレーシングの観点から⾒た Metrics • 最新技術の展望と課題 • Observability Journey の簡素化 • Enterprise Search と Observability による カスタマーエクスペリエンス向上 @shosuz
本⽇ご紹介するソースコードは 最後のリソースのスライドに纏めて 掲載してあります︕ ぜひダウンロードして試してみて ください。
@riferrei
分散トレーシングって どんなもの︖
開発者にありがちな信頼性の捉え⽅
開発者にありがちな信頼性の捉え⽅
デプロイした後は、コードをテストしない デプロイメント コードの不具合 メモリガベージ コレクション 同時接続 キャッシュのヒット とハズレ システムのテストをしている Network 不具合 ディストロ、 カーネル、OSの バージョン スケジューラと そのクセ クロックシンクの 問題 コードレース 条件 クライアントの バックオフ、 リトライ
「機械に限界まで負荷をかけ、それを維持しようとするならば、 その限界はどこなのか、ある程度⾒極めなければならない。 外を⾒てごらん。あそこには完璧なラップがある。ミスは許され ない。すべてのギアチェンジ、すべてのコーナー。完璧に。 」ケン・マイルズ
お客様から︓ 「503 エラーが発⽣しま した。」
Ops の問題︓503 エラーを⾒つける • • 10% 60% 30% 疑う 掘り下げる 解決する メトリクスの値を⾒る アラートで追いつかれる • • • トポロジーを理解する 異常の切り分け コンテキストデータの収集 • • • ログやイベントの読み込み コードパッチの作成 新しいリリースの作成
分散型トレースによるレスキュー
インスツルメンテーション︓ブラックボックスとホワイトボックスの⽐較 Black-Box • • • コードは変更されない ランタイムによる処理 最⼩限の実⾏可視化 White-Box • • • コードは変更される アプリケーションによる処理 完全な実⾏可視化
トレーシングの観点 から⾒た Metrics
4つのゴールデンシグナル レイテンシー トラフィック エラー 飽和状態
これまでで最⾼のモニタリングアドバイス : "ユーザーが満⾜ しなければ、99.999 も意味がない"
4つのゴールデンシグナル、1つのパースペクティブ レイテンシー トラフィック ビジネス トランザクション エラー 飽和状態
4つのゴールデンシグナル、1つのパースペクティブ
最新技術の展望と 課題
物事がシンプルだったことを覚えていますか︖
ハードコードされたログ記録⽂ type Log struct { request_path string request_size int64 status int32 latency_ms float64 } ログ⽂はそれぞれ "スキーマ "を持つ logEntry := Log{ "/customers/find", 840, 200, 35 } fmt.Printf("%+v", logEntry)
スレッドトラブルシューティングのフォロー Log{"/customer/find", 235, 200, 30} API Thread 2 Thread 1 Log{"/api/find", 840, 200, 35} Log{"/api/find", 840, 200, 45} Customer API Database Customer Log{"/customer/find", 235, 200, 42} Log{"/db/find", 450, 200, 5} Database Log{"/db/find", 450, 200, 3}
カオスの始まり︓分散コンピューティング Host 1 Host 2 Thread 1 Thread 1 Thread 2 Thread 2
仮想化技術の活⽤ Host 1 VM 2 API Database Customer Database API Thread 2 Customer Thread 1 API Thread 2 Thread 1 VM 1 Customer API Database Customer Database
コンテナ化の活⽤ Host 1 VM 1 VM 2 Container 2 API Database Customer Database API Thread 2 Customer Thread 1 API Thread 2 Thread 1 Container 1 Customer API Database Customer Database
“それではサービスを機能に 分解してみよう" Ops の⼈々: 私は、あなたにとって 冗談のような存在 ですか︖
トレースによりシステム全体のステッチングを⾃動化 トランザクションデータを収集し、検索可能な状態にする ビジネストランザクション Service A Service B Service C Service D
トレース、スパン、コンテキストの伝播 Trace ID: 12345 ⬅ This is the context! Transaction (Root Span) Trace ID: 12345 Service A (Child Span) Trace ID: 12345 Service B (Child Span) Time: 55ms Time: 30ms Time: 15ms Trace ID: 12345 Service C (Child Span) Time: 5ms Trace ID: 12345 Service D (Child Span) Time: 5ms
しかし、サービスが同期でない場合はどうでしょうか︖ REST API Analytics
Observability Journey を 簡素化する
Three pillars of observability Metrics Logs Traces ⼈、 プロセス、 ツール ⼈、 プロセス、 ツール ⼈、 プロセス、 ツール
統⼀された Observability : さらに良い Traces Metrics すべてのデータを、ひとつのコンテクストで Logs 統合されたビジネスと オペレーション KPI
可能な限りオープンスタンダードを使⽤する https://openTelemetry.io
The Elasticsearch Platform In a world where endless data creates endless possibility, search helps people and organizations thrive. Enterprise Search Observability Security Kibana Explore, Visualize, Engage Elasticsearch Store, Search, Analyze Integrations Connect, Collect, Alert Public cloud Hybrid On-premises
Elastic の特⻑ • あらゆる種類のテレメトリーデータに対応する シングルエージェント • 全エージェントを対象とした集中管理および ポリシー設定 • OpenTelemetry のサポート • 豊富な可視化機能とデータ探索機能により、 すぐに使える分析、その場限りの分析が可能
Enterprise Search と Observability による カスタマーエクスペリエンス向上
The Gallivant Web Shop
Architecture of The Gallivant Web Shop DevOps Engineer React Client SecOps Engineer Search Cart End user Catalog Ordering Internet Marketer End user Actions Checkout Monitoring … Public Cloud Backend micro services Ship metrics & logs Elastic Stack
マイクロサービスアーキテクチャの採⽤はメリットも多いが、 同時に問題発⽣時の根本的な原因を⾒つけるのが難しくなる
Observability で解決できる主なビジネス課題 デジタルトランスフォーメーションの達成には新たなアプローチが不可⽋ 開発者、DevOps、 SRE の⽣産性 クラウドネイティブアプリと モノリシックなアプリの ⼀元管理 ⾼い信頼性 迅速な復旧 コストパフォーマンスの 最適化 リリースや運⽤に関する コストの最⼩化
マネージドクラウドサービス です。 サービスとしての Observability︖
Elastic Cloud はあなたのためにある https://cloud.elastic.co/registration
リソース • ブログ記事 「分散トレーシングによるソフトウェア信頼性の構築」 • ビジネスと運⽤の課題解決に、オブザーバビリティがカギとなる理由 • DevOps のためのオブザーバビリティ ― 不可⽋なビジネスイニシアチブ • Elastic APM on GitHub(GitHub の Elastic APM ページ) • Elastic Observability documentation on GitHub(GitHub の Elastic オブザーバビリティ ドキュメントページ) • OpenTelemetry in Java with Elastic Observability on GitHub(GitHub の Open Telemetry in Java with Elastic Observability ページ) • Elastic Cloud を無料で試⽤する
.NETラボ 勉強会 2022年4⽉ 2022/4/23 13:30-18:00 https://dotnetlab.connpass.com/event/243974/
Elastic セキュリティワークショップ 2022/4/27 14:00-17:00 https://www.elastic.co/jp/virtual-events/elastic-security-workshop
Jaguʻeʼr Cloud Native #5 クラウドネイティブ設計コンペバトル 2022/4/28 13:00-15:00 https://jaguer-cloud-native.connpass.com/event/244567/ Jaguʼeʼr 会員企業所属のみです。ごめんなさい︕
Thank you for your attention!