Created
May 12, 2020 08:04
-
-
Save KengoTODA/48cee982241f5089404649e24bbcc3a0 to your computer and use it in GitHub Desktop.
team and tech-practice
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| digraph "team and tech-practice" { | |
| compound=true; | |
| # Tech Practice (The Four Key Metrics) | |
| "Deployment Frequency" [shape=diamond] | |
| "Short Lead Time for Changes" [shape=diamond] | |
| "Short Time to Restore Service" [shape=diamond] | |
| "Low Change Failure Rate" [shape=diamond] | |
| # Tech Practice | |
| "デプロイブランチをデプロイ可能に保つ" [shape=box] | |
| "小さい変更をこまめにデプロイブランチに入れる\n(デプロイブランチ以外のブランチを短命に保つ)" [shape=box] | |
| "ビルドやテスト、デプロイなどを継続的に統合し実行する(CI)" [shape=box] | |
| "デプロイとリリースの分離" [shape=box] | |
| "開発環境と本番環境の差を最小化" [shape=box] | |
| "高速な修正のデリバリ" [shape=box] | |
| "Iterativeな開発プロセス" [shape=box] | |
| "自信を持って変えられるコードベース" [shape=box] | |
| "本番環境の安定化" [shape=box] | |
| # tech solution | |
| "こまめなピアレビュー" [shape=octagon] | |
| "Pull Request (PR)" [shape=octagon] | |
| "分散ビルド・分散テスト" [shape=octagon] | |
| "単体テスト自動化" [shape=octagon] | |
| "統合テスト自動化" [shape=octagon] | |
| "API ドキュメント" [shape=octagon] | |
| "品質指標の可視化" [shape=octagon] | |
| "Feature Toggle" [shape=octagon] | |
| "機械的な解析による潜在バグの発見" [shape=octagon] | |
| "リファクタリング" [shape=octagon] | |
| "Test-Driven Development (TDD)" [shape=octagon] | |
| "Consumer-Driven Contract Test" [shape=octagon] | |
| "実装とテストを同一リポジトリで管理" [shape=octagon] | |
| "実装とドキュメントを同一リポジトリで管理" [shape=octagon] # あるいはコードからの自動生成 | |
| "Blue/Green Deployment" [shape=octagon] | |
| subgraph cluster_testInProd { | |
| color = black; | |
| label = "本番環境におけるテスト"; | |
| "A/B Testing" [shape=octagon] | |
| "Canary Release" [shape=octagon] | |
| "Chaos Engineering" [shape=octagon] | |
| } | |
| "データマイグレーション自動化" [shape=octagon] | |
| "永続層の前方互換性" [shape=octagon] | |
| "永続層の後方互換性" [shape=octagon] | |
| "非同期データマイグレーション" [shape=octagon] | |
| "旧バージョンへの切り戻し" [shape=octagon] | |
| "インフラストラクチャの自動化(IaC)" [shape=octagon] | |
| "コンテナや仮想マシン" [shape=octagon] | |
| "インタフェース定義(GraphQL, gRPG, OpenAPI, etc.)" [shape=octagon] | |
| "GitOps" [shape=octagon] | |
| "ChatOps" [shape=octagon] | |
| "Immutable Infrastructure" [shape=octagon] | |
| "デプロイの自動化" [shape=octagon] | |
| "Circuit Breaker" [shape=octagon] | |
| # バージョンコントロール は当然やるものとして除外 | |
| # 境界づけられたコンテキスト? | |
| # team solution | |
| "cross-functional team" | |
| "心理的安全性" | |
| "継続的な内省の機会" | |
| "Blameless postmortem" | |
| "保守しやすい単位でのチーム分割" | |
| "開発効率(Velocity)の把握" | |
| "Self-Organized Team" | |
| "チームメイトの継続的な成長" | |
| "Unlearningを伴う高速な学習サイクル" | |
| subgraph cluster_example { | |
| color = black; | |
| label = "凡例"; | |
| "Technical Practice" [shape=box] | |
| "Technical Solution" [shape=octagon] | |
| "Team Solution" | |
| "Key Metrics" [shape=diamond] | |
| } | |
| # relation | |
| "単体テスト自動化" -> "Pull Request (PR)" [label="supports"] | |
| # 間接的に依存しているので明示的な依存を除く | |
| # "統合テスト自動化" -> "Pull Request (PR)" [label="supports"] | |
| # "ビルドやテスト、デプロイなどを継続的に統合し実行する(CI)" -> "自信を持って変えられるコードベース" [label="supports"] | |
| "統合テスト自動化" -> "リファクタリング" [label="supports"] | |
| "統合テスト自動化" -> "Consumer-Driven Contract Test" -> "保守しやすい単位でのチーム分割" [label="supports"] | |
| "単体テスト自動化" -> "Test-Driven Development (TDD)" [label="supports"] | |
| "リファクタリング" -> "Test-Driven Development (TDD)" [label="supports"] | |
| "Pull Request (PR)" -> "Test-Driven Development (TDD)" [label="supports"] | |
| "実装とテストを同一リポジトリで管理" -> "Consumer-Driven Contract Test" [label="supports"] | |
| "実装とテストを同一リポジトリで管理" -> "Pull Request (PR)" [label="supports"] | |
| "実装とドキュメントを同一リポジトリで管理" -> "API ドキュメント" [label="supports"] | |
| "Iterativeな開発プロセス" -> "開発効率(Velocity)の把握" [label="supports"] | |
| "cross-functional team" -> "こまめなピアレビュー" [label="supports"] | |
| "Pull Request (PR)" -> "こまめなピアレビュー" [label="supports"] | |
| "心理的安全性" -> "こまめなピアレビュー" [label="supports"] | |
| "品質指標の可視化" -> "こまめなピアレビュー" [label="supports"] | |
| "こまめなピアレビュー" -> "小さい変更をこまめにデプロイブランチに入れる\n(デプロイブランチ以外のブランチを短命に保つ)" [label="supports"] | |
| "機械的な解析による潜在バグの発見" -> "Pull Request (PR)" [label="supports"] | |
| "分散ビルド・分散テスト" -> "Pull Request (PR)" [label="supports"] | |
| "Feature Toggle" -> "デプロイとリリースの分離" -> "デプロイブランチをデプロイ可能に保つ" [label="supports"] | |
| "ビルドやテスト、デプロイなどを継続的に統合し実行する(CI)" -> "デプロイブランチをデプロイ可能に保つ" [label="supports"] | |
| "こまめなピアレビュー" -> "デプロイブランチをデプロイ可能に保つ" [label="supports"] | |
| "Pull Request (PR)" -> "ビルドやテスト、デプロイなどを継続的に統合し実行する(CI)" -> "小さい変更をこまめにデプロイブランチに入れる\n(デプロイブランチ以外のブランチを短命に保つ)" [label="supports"] | |
| "心理的安全性" -> "継続的な内省の機会" [label="supports"] | |
| "Blameless postmortem" -> "継続的な内省の機会" [label="supports"] | |
| "心理的安全性" -> "Blameless postmortem" [label="supports"] | |
| "Iterativeな開発プロセス" -> "継続的な内省の機会" [label="supports"] | |
| "API ドキュメント" -> "保守しやすい単位でのチーム分割" [label="supports"] | |
| "Circuit Breaker" -> "保守しやすい単位でのチーム分割" [label="supports"] | |
| "保守しやすい単位でのチーム分割" -> "Self-Organized Team" [label="supports"] | |
| "インタフェース定義(GraphQL, gRPG, OpenAPI, etc.)" -> "Circuit Breaker" [label="supports"] | |
| "インタフェース定義(GraphQL, gRPG, OpenAPI, etc.)" -> "保守しやすい単位でのチーム分割" [label="supports"] | |
| "インタフェース定義(GraphQL, gRPG, OpenAPI, etc.)" -> "API ドキュメント" [label="supports"] | |
| "旧バージョンへの切り戻し" -> "A/B Testing" [label="supports", lhead=cluster_testInProd] | |
| "Feature Toggle" -> "旧バージョンへの切り戻し" [label="supports"] | |
| "永続層の前方互換性" -> "旧バージョンへの切り戻し" [label="supports"] | |
| "旧バージョンへの切り戻し" -> "本番環境の安定化" [label="supports"] | |
| "高速な修正のデリバリ" -> "本番環境の安定化" [label="supports"] | |
| "旧バージョンへの切り戻し" -> "Blameless postmortem" [label="supports"] | |
| "コンテナや仮想マシン" -> "開発環境と本番環境の差を最小化" [label="supports"] | |
| "インフラストラクチャの自動化(IaC)" -> "Immutable Infrastructure" [label="supports"] | |
| "インフラストラクチャの自動化(IaC)" -> "デプロイの自動化" [label="supports"] | |
| "コンテナや仮想マシン" -> "Immutable Infrastructure" [label="supports"] | |
| "Immutable Infrastructure" -> "開発環境と本番環境の差を最小化" [label="supports"] | |
| "Immutable Infrastructure" -> "高速な修正のデリバリ" [label="supports"] | |
| "デプロイの自動化" -> "高速な修正のデリバリ" [label="supports"] | |
| "永続層の後方互換性" -> "非同期データマイグレーション" [label="supports"] | |
| "デプロイの自動化" -> "非同期データマイグレーション" [label="supports"] | |
| "ChatOps" -> "デプロイの自動化" [label="supports"] | |
| "GitOps" -> "デプロイの自動化" [label="supports"] | |
| "統合テスト自動化" -> "自信を持って変えられるコードベース" [label="supports"] | |
| "開発環境と本番環境の差を最小化" -> "自信を持って変えられるコードベース" [label="supports"] | |
| "自信を持って変えられるコードベース" -> "小さい変更をこまめにデプロイブランチに入れる\n(デプロイブランチ以外のブランチを短命に保つ)" [label="supports"] | |
| "継続的な内省の機会" -> "チームメイトの継続的な成長" [label="supports"] | |
| "継続的な内省の機会" -> "Self-Organized Team" [label="supports"] | |
| "開発効率(Velocity)の把握" -> "Self-Organized Team" [label="supports"] | |
| "Immutable Infrastructure" -> "Blue/Green Deployment" [label="supports"] | |
| "Blue/Green Deployment" -> "本番環境の安定化" [label="supports"] | |
| "リファクタリング" -> "自信を持って変えられるコードベース" [label="supports"] | |
| "非同期データマイグレーション" -> "本番環境の安定化" [label="supports"] | |
| "本番環境の安定化" -> "Canary Release" [label="supports", lhead=cluster_testInProd] | |
| "本番環境の安定化" -> "自信を持って変えられるコードベース" [label="supports"] | |
| "データマイグレーション自動化" -> "非同期データマイグレーション" [label="supports"] | |
| "データマイグレーション自動化" -> "永続層の前方互換性" [label="supports"] | |
| "データマイグレーション自動化" -> "永続層の後方互換性" [label="supports"] | |
| "Canary Release" -> "Unlearningを伴う高速な学習サイクル" [label="supports", ltail=cluster_testInProd] | |
| "Unlearningを伴う高速な学習サイクル" -> "チームメイトの継続的な成長" [label="supports"] | |
| # Observable Via... | |
| "デプロイブランチをデプロイ可能に保つ" -> "Deployment Frequency" [label="observable via"] | |
| "Unlearningを伴う高速な学習サイクル" -> "Short Lead Time for Changes" [label="observable via"] | |
| "小さい変更をこまめにデプロイブランチに入れる\n(デプロイブランチ以外のブランチを短命に保つ)" -> "Low Change Failure Rate" [label="observable via"] | |
| "本番環境の安定化" -> "Short Time to Restore Service" [label="observable via"] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment