Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Application Signalsで始めるSLO ユーザー満足度を数値化する第一歩

Application Signalsで始めるSLO ユーザー満足度を数値化する第一歩

JAWS FESTA 2024 in 広島の発表資料です。
https://jawsfesta2024.jaws-ug.jp/

Application Signalsで始めるSLO ユーザー満足度を数値化する第一歩
https://jawsfesta2024.jaws-ug.jp/sessions/timetable/D-3/

登壇者
ニフティ株式会社
浅見 則彦 (@rubihiko: https://x.com/rubihiko)

ニフティ株式会社

October 12, 2024
Tweet

More Decks by ニフティ株式会社

Other Decks in Technology

Transcript

  1. 浅見 則彦 / Asami Norihiko • Work ◦ ニフティ株式会社 SREチーム

    • Communiy ◦ AWS community builder | Cloud Operations • 好きなAWSサービス ◦ Amazon CloudWatch @rubihiko rubihiko
  2. 本セッションについて 話すこと • Application Signalsの概要と主要機能 • SLI/SLOの基本概念と重要性 • ユーザーが満足しているかどうかを可視化するには •

    Application Signalsを使ったSLOの設定手順 話さないこと • オブザーバビリティの実装について • SLO以外の機能について(Synthetics Canaries, RUM, Evidently)
  3. 昨年のre:Inventで発表がありました • AWS re:Invent 2023 - Keynote with Dr. Werner

    Vogels ◦ https://youtu.be/UTRBVPvzt9w?si=ByHWl6IJRAmKC3Ou&t=3020 • AWS re:Invent 2023 - [LAUNCH] Application monitoring for modern workloads (COP351) ◦ https://youtu.be/T2TovTLje8w?si=gPFWo7u-n_lRCQ5r • アプリケーションモニタリング (APM) 用の Amazon CloudWatch Application Signals の一般提供を開始 ◦ https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-cloudwatch-ap plication-signals-application-monitoring/
  4. Application Signals | サービス 対応プラットフォーム • EKS • EC2 •

    Kubernetes • ECS、その他 アプリケーションが計装(イ ンストゥルメンテーション) されており、テレメトリデー タを発信していれば表示さ れます 計装するには、以下を使う • AWS Distro for OpenTelemetry (ADOT) • CloudWatchエー ジェント
  5. サービス | サービスオペレーション • 機能一覧 • SLI • レイテンシー (p50,

    p90, p99) • 障害 • エラー • 可用性 • トレース • など
  6. Synthetics Canaries, RUM, Evidently • Synthetics Canaries: ◦ 合成モニタリング、外形監視、Canaryという単位で実行されるスクリプトで監視できる •

    RUM: ◦ リアルタイムユーザーモニタリング、クライアント側のデータ分析できる • Evidently: ◦ フューチャーフラグ、A/Bテスト、新しい機能リリースを安全に検証できる
  7. SLI/SLOについて Application Signals の概念 https://catalog.us-east-1.prod.workshops.aws/workshops/31676d37-bbe9-4992-9cd1-ceae13c5116c/ja-JP/aws-native/app-m onitoring/application-signals/concepts “Service Level Indicator (SLI)

    - Service Level Objective (SLO) を達成しているかどうかを判断するために使用される指標です。SLI は、レイテ ンシや可用性など、ユーザーが実際に体験しているエクスペリエンスを表し、しき い値を使用してそれが許容できるエクスペリエンスかどうかを判断します。 Service Level Objective (SLO) - お客様の期待に対するサービスの信頼 性を監視するメカニズムです。SLO では、SLI を定義し、長期間にわたってサー ビスが SLI に準拠する頻度を示す達成目標を定義します。 例えば、 「GetResource API は、14日間のローリングで、1分間の99.9%が 1000ms未満のレイテンシを達成する」などです。”
  8. SLI/SLO/SLA SLO(Service Level Object) サービスレベルの目指す べき目標のことで、SLIの 目標値になります。 SLA(Service Level Agreement)

    サービスレベルを保証す るユーザーとの合意のこ とで、契約です。 例) 対象サービスの30日間の稼 働率が99%以上を保証する。下 回った場合は全額返金する。 例) 対象サービス(機能)の30日 間のリクエストの成功率(SLI)の目 標値は99.9%とする SLI(Service Level Indicator) サービスレベルの指標の ことで、可用性やレイテン シーなどがよく使われま す。 例) 対象サービス(機能)のリクエ ストの成功率を指標とする サービスの信頼性と性能を測定・管理するための重要な概念です
  9. 基本的な計算式 例: あるAPIエンドポイントの1000リクエスト中、5XXが100リクエストあった場合の信頼性は・・・ • 良いリクエスト: 900 (5XX以外のリクエスト数) • 悪いリクエスト: 100

    (5XXのリクエスト数) • 有効なリクエスト: 900+100=1000 (良いリクエストと悪いリクエストの合計) • (900 / 1000) * 100 = 90% The Art of SLOs より https://sre.google/intl/ALL_jp/reso urces/practices-and-processes/art -of-slos/ × 100 良いイベント 有効なイベント SLI[%] =
  10. Application Signalsでは以下のよう計算 “SLI には、Application Signals で収集した新規の標準アプリケーションメトリクスの 1 つ、あるいは、任意の CloudWatch メトリクスまたはメトリクス式を使用できます。標準ア

    プリケーションメトリクスとして SLI に使用できるのは、Latency と Availability です。 Availability は、成功の応答をリクエストの合計で割った数値で表し、(1 - 障害率)*100 のように計算します。ここでの Fault 応答数は 5xx エラーの件数を意味し、成功の応答と は 5XX エラーのない応答を指します。4XX 応答は成功の応答と見なされます。” https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html • 障害率が10%だとすると • (1 - 0.1) * 100 = 90%
  11. エラーバジェットについて エラーバジェット = 1 - SLO 期間ベースの SLO のエラーバジェットと達成度の計算 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWat

    ch-ServiceLevelObjectives.html#CloudWatch-ServiceLevelObjectives-budget リクエストベースの SLO のエラーバジェットと達成度の計算 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Service LevelObjectives.html#CloudWatch-ServiceLevelObjectives-budget-request • 期間ベース(残り時間で表現) • リクエストベース(残りカウントで表現) 許容できるエラーの予算
  12. (クリティカル) ユーザージャーニー ステージ ユーザーの行動 タッチポイント ユーザーの思考 ユーザーの感情 機会 発見 ウェブサイトを見つける

    検索エンジン/紹介 「オンラインで予約できるクリニックがあ るんだ」 興味 (+) SEO最適化、口コミ促進プログラム 登録 アカウント作成 登録ページ 「必要な情報は最小限で良いな」 安心 (+) ソーシャルログインの追加 ペット登録 ペット情報入力 ペット登録フォーム 「詳細な情報を入力できるのは良いけ ど、少し面倒かな」 やや煩わしさ (-) フォームの簡素化、段階的な情報収集 予約 獣医と日時の選択 予約ページ 「空き状況が一目で分かって便利」 満足 (++) AIによる最適な予約時間の提案 診療前 リマインダー確認 Eメール/アプリ通知 「忘れずに済んで助かる」 安心 (+) 予約変更のワンクリック対応 診療 クリニック訪問・診療 実際のクリニック 「予約情報とペット情報が連携していてス ムーズ」 満足 (++) クリニックでのデジタルチェックイン フォローアップ 診療記録確認 アプリ/ウェブサイト 「次回のケアが分かりやすい」 安心 (+) ペットの健康状態グラフ化 継続利用 次回予約・情報更新 アプリ/ウェブサイト 「定期的なケアが簡単に管理できる」 満足 (++) ロイヤリティプログラムの導入
  13. SLOドキュメントに落とし込む カテゴリ 機能 SLI SLO ウィンドウ 可用性 GET /owners/*/pets/{petId}/visits 1分間の成功したリクエストの割合

    99% 7, 14, 28日 可用性 POST /owners/*/pets/{petId}/visits 1分間の成功したリクエストの割合 99.5% 1日 レイテンシ GET /owners/*/pets/{petId}/visits 5分間の P50 レイテンシー < 100ms P90 レイテンシー < 300ms P99 レイテンシー < 500ms 99.9% 3, 7, 14日 レイテンシ POST /owners/*/pets/{petId}/visits 5分間の P50 レイテンシー < 200ms P90 レイテンシー < 500ms P99 レイテンシー < 800ms 99.9% 3, 7, 14日 エラー POST /owners/*/pets/{petId}/visits 15分間のエラー率 < 0.1% 99.9% 1日
  14. SLI/SLO作成 (期間ベース - 可用性) SLO: 1日に99%以上を維持することを目標とする • SLO測定の間隔: 1日 (1,3,7,14,28やカレンダー選択も(1ヶ月等))

    • 達成目標値: 99% エラーバジェット: 1日に14.4分 • 1% (=1-SLO=1-0.99=0.01) • 1440分 (=1日 * 24 * 60) • 14.4分(=1440分 * 1%)
  15. SLI/SLOの作成(リクエストベース - 可用性) SLO: 1日に80%以上を維持すること目標とする • 間隔: 1日,3日,7日,28日 など間隔を指定 •

    達成目標: 80%など エラーバジェット: 1日リクエストの20% • 20% (=1-SLO=1-0.8=0.2) • 予算: 20リクエスト (=有効なリクエスト * エラーバジェット = 100 * 0.2) • 減少例) ◦ 悪いリクエスト: 10 ◦ 残り予算: 10リクエスト (=予算 - 悪いリクエスト = 20 - 10)
  16. CloudWatch メトリクスでSLO作成 (リクエストベース) リクエストベースの場合 • ターゲットリクエスト ◦ Good Requests ◦

    Bad Requests • 合計リクエスト (ターゲットリクエスト / 合計リクエスト) * 100
  17. まとめ • Application SignalsはAWSネイティブでSLO作れる • ユーザージャーニーから機能を洗い出すと効果的に SLI/SLOを決めることができる • SLOドキュメントからApplication Signalsの設定に落と

    し込むと作りやすい • 計装していなくても、CloudWatchメトリクスベース SLI/SLOを作成することができる • SLOダッシュボードを活用すると誰でもサービスが使える かどうか、ユーザーが満足しているかどうか分かる
  18. 学習コンテンツ • Application Signalsを使用したアプリケーションパフォーマンスモニタリング ◦ https://catalog.workshops.aws/observability/ja-JP/aws-native/app-monitor ing/application-signals • opsjaws-application-signals-handson ◦

    https://github.com/YoshiiRyo1/opsjaws-application-signals-handson • Service level objectives (SLOs) ◦ https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cloud Watch-ServiceLevelObjectives.html • Application Signals ◦ https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cloud Watch-Application-Monitoring-Sections.html • SRE Books ◦ https://sre.google/books/ • The Art of SLOs ◦ https://sre.google/intl/ALL_jp/resources/practices-and-processes/art-of-sl os/