Slide 1

Slide 1 text

twitter.com/toricls 緩やかに死んでいくシステム Tori June. 30, 2021

Slide 2

Slide 2 text

twitter.com/toricls Tori Hara / Sr. Product Developer Advocate Elastic Containers, AWS ❤ AWS Fargate, AWS App Runer, AWS Lambda toricls New!

Slide 3

Slide 3 text

twitter.com/toricls https://speakerdeck.com/toricls/for-whom-that-platform-runs https://speakerdeck.com/toricls/the-debt Mar. 12, 2021 Sep. 9, 2020

Slide 4

Slide 4 text

twitter.com/toricls システムの継続的改善

Slide 5

Slide 5 text

twitter.com/toricls なぜシステムを改善していくのか 実装当時に最適解と考えられたものが 時間の経過とともに 最適とは評価され得なくなるから https://speakerdeck.com/toricls/the-debt

Slide 6

Slide 6 text

twitter.com/toricls 『時間の経過』がもたらすもの ▶︎ ビジネスを取り巻く状況の変化 ▶︎ ⾃⾝の持つ知識や理解、洞察⼒の深化 ▶︎ システムに関わる組織・チームの規模や役割の変化 ▶︎ テクノロジの進歩や進化、新たな技術的選択肢の登場 https://speakerdeck.com/toricls/the-debt

Slide 7

Slide 7 text

twitter.com/toricls 『時間の経過』がもたらすもの ▶︎ ビジネスを取り巻く状況の変化 ▶︎ ⾃⾝の持つ知識や理解、洞察⼒の深化 ▶︎ システムに関わる組織・チームの規模や役割の変化 ▶︎ テクノロジの進歩や進化、新たな技術的選択肢の登場 →『最適』が変化していくから、継続的改善が必要 https://speakerdeck.com/toricls/the-debt

Slide 8

Slide 8 text

twitter.com/toricls システムの継続的改善可能性と容易性

Slide 9

Slide 9 text

twitter.com/toricls システムの継続的改善可能性と容易性 ▶︎ ビジネスが⾦を稼いでいる、あるいは稼ぎそうである ▶︎ 適切な戦略に基づく優先順位 ▶︎ 疎結合なビルディング・ブロックの組み合わせ ≒ システム構成要素の⼊れ替え・追加可能性と容易性 ↔︎ フルスクラッチ💸 ▶︎ etc., etc.

Slide 10

Slide 10 text

twitter.com/toricls 『⼈間による』システムの継続的改善可能性 ▶︎ 継続的改善の必要性を理解するリーダー層 ▶︎ ステークホルダのシステムへのオーナーシップ ▶︎ 適切な粒度のゴール設定と効果測定、やり切る⼼ ▶︎ そのシステムのアーキテクチャ(とビジネスドメイン)への知⾒ ▶︎ AWS を使っているなら AWS 各サービスへの知⾒も ▶︎ etc., etc.

Slide 11

Slide 11 text

twitter.com/toricls 『⼈間による』システムの継続的改善可能性 ▶︎ 継続的改善の必要性を理解するリーダー層 ▶︎ ステークホルダのシステムへのオーナーシップ ▶︎ 適切な粒度のゴール設定と効果測定、やり切る⼼ ▶︎ そのシステムのアーキテクチャ(とビジネスドメイン)への知⾒ ▶︎ AWS を使っているなら AWS 各サービスへの知⾒も ▶︎ etc., etc.

Slide 12

Slide 12 text

twitter.com/toricls “今⽇から新しい会社で働くことになりました!” ✨ ✨ ✨

Slide 13

Slide 13 text

twitter.com/toricls 今⽇から新しい会社で働くあなた 🙋 ユーザー 🕵 リクエスト レスポンス 謎の⼒

Slide 14

Slide 14 text

twitter.com/toricls 🕵 今⽇から新しい会社で働くあなた 🙋 ユーザー リクエスト レスポンス 謎の⼒ Needs to be a “Detective” 🕵 ▶︎ ⻑⽼への(度重なる)ヒアリング ▶︎ コードの読み込み ▶︎ (もしあれば)過去イシューやプルリクからの解きほぐし ▶︎ (もしあれば)過去の障害情報や対応履歴からの解きほぐし ▶︎ etc., etc.

Slide 15

Slide 15 text

twitter.com/toricls 継続的な改善を殺すもの

Slide 16

Slide 16 text

twitter.com/toricls 継続的な改善を殺すもの (の⼀例) ▶︎ 主体的思考の⽋如と緩慢なオーナーシップ ▶︎ 「そうなっている理由」を説明できない ▶︎ e.g. 事情もサイズも能⼒も違うキラキラ他社事例を鵜呑みにしたコピー ▶︎ 肥⼤化した組織やチームによる緩慢かつ遅い(あるいは存在しない)意思決定 ▶︎ チーム開発意識の⽋如 ▶︎ 永遠に⾃分が開発・運⽤することが前提になってはいませんか ▶︎ 個⼈で開発しているつもりになってはいませんか ▶︎ 組織内で知⾒の共有ではなく、安易に “Wrap” していませんか ▶︎ ⻑⽼だけが知るシステム全体概要と退職・異動済みの⻑⽼たち ▶︎ etc., etc.

Slide 17

Slide 17 text

twitter.com/toricls 継続的な改善を⽌めないために

Slide 18

Slide 18 text

twitter.com/toricls 継続的な改善を⽌めないために at AWS ▶︎ 組織のスピードとスケーラビリティ ▶︎ チームを⼩さく保つ / 2-pizza team ▶︎ チーム内あるいは他チームとの依存関係を減らし、各チームが 主体的かつ迅速に意思決定と改善を⾏うことを可能にする (≒マイクロサービス) ▶︎ デザインドキュメント ▶︎ etc., etc.

Slide 19

Slide 19 text

twitter.com/toricls デザインドキュメント - Amazon ECS アーキテクチャ全体概要

Slide 20

Slide 20 text

twitter.com/toricls デザインドキュメント - Amazon ECS Exec

Slide 21

Slide 21 text

twitter.com/toricls なぜデザインドキュメントを書き、更新していくのか at AWS ▶︎ 改善の適切なアプローチを最短パスで発⾒するため ▶︎ 既存システムや仕組みがなぜそうなっているのか?を理解せずに適切なアプローチでの改善は 難しい ▶︎ ⻑⽼への不必要な依存度を減らし、⾃律的に改善タスクを進めたい ▶︎ コードから分からないことの情報としての重要性 ▶︎ (そもそも)初期デザイン時に適切なレビューを実施するため ▶︎ コラム: AWS における Principal Engineer の役割 ▶︎ e.g. 2019 年 CloudWatch での⽉あたりの観測メトリクス 1,000 兆、イベントのトリガー 3.9 兆、 受け取りログ 100 ペタバイト

Slide 22

Slide 22 text

twitter.com/toricls デザインドキュメントに何を書くか

Slide 23

Slide 23 text

twitter.com/toricls デザインドキュメントの項⽬例 ▶︎ プロダクト開発・機能開発・改善の背景 ▶︎ 課題は何か = 何を解決するのか ▶︎ システムの技術的全体概要やアーキテクチャー図 ▶︎ スコープ ▶︎ ⽤語集 ▶︎ 選定した解決⼿段について ▶︎ 選定の根拠、トレードオフ ▶︎ 詳細なアーキテクチャー図など ▶︎ PoC の内容と結果 ▶︎ 選定しなかった解決⼿段 x N について ▶︎ ⼿段の概要と不採⽤の根拠 ▶︎ 外部依存の概要 ▶︎ 機能そのもの、解決⼿段についてセキュリティ観点 からの考察 ▶︎ 現時点で考えられるリスク x N ▶︎ リスクの概要 ▶︎ 考えられるリスクへの対応策 ▶︎ 現時点で対応策をとらない理由 ▶︎ テスト観点からの考察 ▶︎ 運⽤観点からの考察 ▶︎ References ▶︎ etc., etc.

Slide 24

Slide 24 text

twitter.com/toricls デザインドキュメントの項⽬例 ▶︎ プロダクト開発・機能開発・改善の背景 ▶︎ 課題は何か = 何を解決するのか ▶︎ システムの技術的全体概要やアーキテクチャー図 ▶︎ スコープ ▶︎ ⽤語集 ▶︎ 選定した解決⼿段について ▶︎ 選定の根拠、トレードオフ ▶︎ 詳細なアーキテクチャー図など ▶︎ PoC の内容と結果 ▶︎ 選定しなかった解決⼿段 x N について ▶︎ ⼿段の概要と不採⽤の根拠 ▶︎ 外部依存の概要 ▶︎ 機能そのもの、解決⼿段についてセキュリティ観点 からの考察 ▶︎ 現時点で考えられるリスク x N ▶︎ リスクの概要 ▶︎ 考えられるリスクへの対応策 ▶︎ 現時点で対応策をとらない理由 ▶︎ テスト観点からの考察 ▶︎ 運⽤観点からの考察 ▶︎ References ▶︎ etc., etc.

Slide 25

Slide 25 text

twitter.com/toricls このセッションでは、システムの継続的改善を殺すものとして 主に「ドキュメンテーションの⽋如」に⾔及しました

Slide 26

Slide 26 text

twitter.com/toricls 『継続的に改善できる』システムにしていくために いま着⼿すべきことは何か? あらためて、考えてはみませんか? \ thank you 🙌 /