Building Software Reliability through Distributed Tracing.pdf

>100 Views

April 20, 22

スライド概要

分散トレーシングによるソフトウェアの信頼性構築
https://www.elastic.co/jp/virtual-events/building-software-reliability-with-distributed-tracing

profile-image

ヴイエムウェア株式会社 ソリューションアーキテクト本部 プリンシパルエンタープライズアーキテクト。 Microsoft で13年間、テクニカルエバンジェリストとして .NET、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け最新技術啓発活動を実施。その後、Dell、Accenture、Elastic で開発者向け技術啓発活動等を経て現職。 モダンアプリケーション開発、マルチクラウド対応、アーキテクチャ策定等を中心に、技術者向けに最新技術の啓発活動を実施中。 2019年4月〜2021年8月迄、内閣官房 IT 総合戦略室 政府 CIO 補佐官を兼務、2021年9月〜2024年3月迄、デジタル庁 PjM ユニット ソリューションアーキテクトを兼務。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

分散トレーシングによる ソフトウェアの信頼性構築 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト デジタル庁 省庁業務グループ ソリューションアーキテクト

2.

Shotaro Suzuki Twitter : @shosuz Elastic Technical Product Marketing Manager/Evangelist デジタル庁 省庁業務グループ ソリューションアーキテクト 元 Microsoft Technical Evangelist

3.

アジェンダ • 分散トレーシングってどんなもの︖ • トレーシングの観点から⾒た Metrics • 最新技術の展望と課題 • Observability Journey の簡素化 • Enterprise Search と Observability による カスタマーエクスペリエンス向上 @shosuz

4.

本⽇ご紹介するソースコードは 最後のリソースのスライドに纏めて 掲載してあります︕ ぜひダウンロードして試してみて ください。

5.

@riferrei

6.

分散トレーシングって どんなもの︖

7.

開発者にありがちな信頼性の捉え⽅

8.

開発者にありがちな信頼性の捉え⽅

9.

デプロイした後は、コードをテストしない デプロイメント コードの不具合 メモリガベージ コレクション 同時接続 キャッシュのヒット とハズレ システムのテストをしている Network 不具合 ディストロ、 カーネル、OSの バージョン スケジューラと そのクセ クロックシンクの 問題 コードレース 条件 クライアントの バックオフ、 リトライ

10.

「機械に限界まで負荷をかけ、それを維持しようとするならば、 その限界はどこなのか、ある程度⾒極めなければならない。 外を⾒てごらん。あそこには完璧なラップがある。ミスは許され ない。すべてのギアチェンジ、すべてのコーナー。完璧に。 」ケン・マイルズ

11.

お客様から︓ 「503 エラーが発⽣しま した。」

12.

Ops の問題︓503 エラーを⾒つける • • 10% 60% 30% 疑う 掘り下げる 解決する メトリクスの値を⾒る アラートで追いつかれる • • • トポロジーを理解する 異常の切り分け コンテキストデータの収集 • • • ログやイベントの読み込み コードパッチの作成 新しいリリースの作成

13.

分散型トレースによるレスキュー

14.

インスツルメンテーション︓ブラックボックスとホワイトボックスの⽐較 Black-Box • • • コードは変更されない ランタイムによる処理 最⼩限の実⾏可視化 White-Box • • • コードは変更される アプリケーションによる処理 完全な実⾏可視化

16.

トレーシングの観点 から⾒た Metrics

18.

4つのゴールデンシグナル レイテンシー トラフィック エラー 飽和状態

19.

これまでで最⾼のモニタリングアドバイス : "ユーザーが満⾜ しなければ、99.999 も意味がない"

20.

4つのゴールデンシグナル、1つのパースペクティブ レイテンシー トラフィック ビジネス トランザクション エラー 飽和状態

21.

4つのゴールデンシグナル、1つのパースペクティブ

22.

最新技術の展望と 課題

23.

物事がシンプルだったことを覚えていますか︖

24.

ハードコードされたログ記録⽂ 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)

25.

スレッドトラブルシューティングのフォロー 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}

26.

カオスの始まり︓分散コンピューティング Host 1 Host 2 Thread 1 Thread 1 Thread 2 Thread 2

27.

仮想化技術の活⽤ 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

28.

コンテナ化の活⽤ 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

29.

“それではサービスを機能に 分解してみよう" Ops の⼈々: 私は、あなたにとって 冗談のような存在 ですか︖

30.

トレースによりシステム全体のステッチングを⾃動化 トランザクションデータを収集し、検索可能な状態にする ビジネストランザクション Service A Service B Service C Service D

31.

トレース、スパン、コンテキストの伝播 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

32.

しかし、サービスが同期でない場合はどうでしょうか︖ REST API Analytics

34.

Observability Journey を 簡素化する

35.

Three pillars of observability Metrics Logs Traces ⼈、 プロセス、 ツール ⼈、 プロセス、 ツール ⼈、 プロセス、 ツール

36.

統⼀された Observability : さらに良い Traces Metrics すべてのデータを、ひとつのコンテクストで Logs 統合されたビジネスと オペレーション KPI

37.

可能な限りオープンスタンダードを使⽤する https://openTelemetry.io

38.

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

39.

Elastic の特⻑ • あらゆる種類のテレメトリーデータに対応する シングルエージェント • 全エージェントを対象とした集中管理および ポリシー設定 • OpenTelemetry のサポート • 豊富な可視化機能とデータ探索機能により、 すぐに使える分析、その場限りの分析が可能

40.

Enterprise Search と Observability による カスタマーエクスペリエンス向上

41.

The Gallivant Web Shop

42.

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

43.

マイクロサービスアーキテクチャの採⽤はメリットも多いが、 同時に問題発⽣時の根本的な原因を⾒つけるのが難しくなる

44.

Observability で解決できる主なビジネス課題 デジタルトランスフォーメーションの達成には新たなアプローチが不可⽋ 開発者、DevOps、 SRE の⽣産性 クラウドネイティブアプリと モノリシックなアプリの ⼀元管理 ⾼い信頼性 迅速な復旧 コストパフォーマンスの 最適化 リリースや運⽤に関する コストの最⼩化

46.

マネージドクラウドサービス です。 サービスとしての Observability︖

47.

Elastic Cloud はあなたのためにある https://cloud.elastic.co/registration

48.

リソース • ブログ記事 「分散トレーシングによるソフトウェア信頼性の構築」 • ビジネスと運⽤の課題解決に、オブザーバビリティがカギとなる理由 • 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 を無料で試⽤する

49.

.NETラボ 勉強会 2022年4⽉ 2022/4/23 13:30-18:00 https://dotnetlab.connpass.com/event/243974/

50.

Elastic セキュリティワークショップ 2022/4/27 14:00-17:00 https://www.elastic.co/jp/virtual-events/elastic-security-workshop

51.

Jaguʻeʼr Cloud Native #5 クラウドネイティブ設計コンペバトル 2022/4/28 13:00-15:00 https://jaguer-cloud-native.connpass.com/event/244567/ Jaguʼeʼr 会員企業所属のみです。ごめんなさい︕

52.

Thank you for your attention!