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

Start graceful degradation

Start graceful degradation

『障害を前提に準備する』
LINE株式会社 Toshiya Kato(@maruloop https://twitter.com/maruloop )

SRE大集合!みんなで学ぶ、信頼性を高めるための取り組みLT大会
https://findy.connpass.com/event/281605/

LINE Developers

May 18, 2023
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. 私たちの基本的なアーキテクチャ • 実際のビジネスロジックは各マイクロサービスで実施 • クライアントとサーバーサイドの間にgatewayがある • 認証や流量制限などの機能を持つ LINE App Gateway

    Microservice Microservice Microservice Microservice Microservice Microservice 認証 流量制限 Etc… 流量制限の機能を流用すれば、User * API単位にエラー注入ができそう!
  2. エラー注入のワークショップを開催 • 参加者: • 企画/スクラムマスター • サーバーサイドエンジニア • クライアントサイドエンジニア •

    QAエンジニア • 時間:1時間/回 • 頻度: (今のところ)1回/年 • 環境:開発環境 進め方 1. 事前にAPI一覧をアクセス数順に準備 全APIを確認するのは時間がかかりすぎるため 優先度をアクセス数でつける
  3. エラー注入のワークショップを開催 • 参加者: • 企画/スクラムマスター • サーバーサイドエンジニア • クライアントサイドエンジニア •

    QAエンジニア • 時間:1時間/回 • 頻度: (今のところ)1回/年 • 環境:開発環境 進め方 1. 事前にAPI一覧をアクセス数順に準備 2. APIごとにエラー注入を行う
  4. エラー注入のワークショップを開催 • 参加者: • 企画/スクラムマスター • サーバーサイドエンジニア • クライアントサイドエンジニア •

    QAエンジニア • 時間:1時間/回 • 頻度: (今のところ)1回/年 • 環境:開発環境 進め方 1. 事前にAPI一覧をアクセス数順に準備 2. APIごとにエラー注入を行う 3. みんなで影響を確認
  5. エラー注入のワークショップを開催 • 参加者: • 企画/スクラムマスター • サーバーサイドエンジニア • クライアントサイドエンジニア •

    QAエンジニア • 時間:1時間/回 • 頻度: (今のところ)1回/年 • 環境:開発環境 進め方 1. 事前にAPI一覧をアクセス数順に準備 2. APIごとにエラー注入を行う 3. みんなで影響を確認 4. APIの重要度をランクづけ 1. High: ユーザー体験に致命的なダメージ 2. Middle: ユーザーは気づくが、不満は少なそう 3. Low: ユーザーは気づかない Rank Example High スタンプの購入ができない Middle レコメンドが表示されない Low 内部的なログの送信, 日次同期の失敗
  6. エラー注入のワークショップを開催 • 参加者: • 企画/スクラムマスター • サーバーサイドエンジニア • クライアントサイドエンジニア •

    QAエンジニア • 時間:1時間/回 • 頻度: (今のところ)1回/年 • 環境:開発環境 進め方 1. 事前にAPI一覧をアクセス数順に準備 2. APIごとにエラー注入を行う 3. みんなで影響を確認 4. APIの重要度をランクづけ 1. High: ユーザー体験に致命的なダメージ 2. Middle: ユーザーは気づくが、不満は少なそう 3. Low: ユーザーは気づかない 5. HighのものをMiddle以下にできるか検討
  7. まとめ • Graceful Degradationを実践し、エラー時にもユーザー体験を損なわないようにしている • 実際にエラーを注入し、ステークホルダー全員で挙動を確認している • 既存のエラーハンドリングだけでなく、将来のエラーハンドリングも改善できるように巻き込む • SREロールとしての私はワークショップの企画まで行った

    • ワークショップの進行やエラーハンドリングの改善など、すべて開発者たちに移譲した • SREプラクティスのEnablingだけでうまく回った事例 • どうやら新機能開発の中で、SREsの介在なしに自然とエラー注入試験も行われ始めている