# 変化に追随する設計 ## 定義 変化に追随する設計(design for a changing landscape)とは、短期・中期・長期という異なる時間軸で発生する変更に対し、高い信頼性を保ったまま頻繁かつ迅速に対応できるように、あらかじめアーキテクチャとプロセスを設計しておく取り組みである。ここでの変更には、インシデント対応に起因する変更・新規発見の脆弱性への対応・製品や機能の変更・内発的な姿勢改善・規制のような外発的要求という5類型が含まれる。この概念の中心的な主張は、セキュリティ変更も他の通常のソフトウェア変更と同じ信頼性要件・リリースエンジニアリング原則(段階的・文書化・テスト済み・分離・適格化・段階的ロールアウト)に従うべきであり、変わるのはロールアウトのタイムラインだけだ、という点にある。変更の速度は深刻度・依存するシステムやチーム・機微度・締め切りという4要因で決まり、単一の一律ルールは存在しない。(Source: [[@2020__OReilly__Building Secure and Reliable Systems - Chapter 7 Design for a Changing Landscape]] ch.7 §Types of Security Changes, §Designing Your Change, §Different Changes: Different Speeds, Different Timelines) 変化への追随性を高める代表的なアーキテクチャ選択として、依存関係を最新に保ち頻繁に再ビルドすること、自動テストを伴う頻繁なリリース、不変(immutable)なコンテナイメージへのパッチ適用、独立にスケール・ロールアウトできるマイクロサービス化の4つが挙げられる。これらは平時の変更容易性を高めるだけでなく、緊急時に最新の修正を迅速に取り込める体制を同時に用意することにもなる。(Source: [[@2020__OReilly__Building Secure and Reliable Systems - Chapter 7 Design for a Changing Landscape]] ch.7 §Architecture Decisions to Make Changes Easier) ## 横断的知見 - 現時点では本 concept は本章(ch.7)単独のソースに基づく。ロールアウトの速度・段階性を扱う [[ソフトウェア変更管理]]・[[継続的デプロイ]]・[[カナリアテスト]] は第9章・第14章の担当者がすでに他ソースから積み増しているため、本ページはそれらと重複しない「変更の時間軸(短期・中期・長期)によって設計判断が変わる」という切り口に特化して育てる。今後、複数ソースを突き合わせた知見が得られ次第この節へ追記する。 ## 未解決の問い - 短期(ゼロデイ)・中期(姿勢改善)・長期(外部要求)という3つの時間軸の分類は、[[脆弱性ライフサイクルと協調的な脆弱性開示]] concept が扱うベンダー・研究者・諜報機関等のステークホルダーモデルとどう対応するか。ゼロデイ対応(短期)は脆弱性サイクルのどの段階に位置づけられるか、両concept間の明示的な対応はまだ作成していない。 - 「変更を加速する際はロールアウト順序を変えて高リスクシステムを先に対処する」という本章の指針は、[[カナリアテスト]] concept が集約するリスクベースの段階的曝露設計(コホート比較・閾値効果への対応)とどこまで技術的に接続できるか。 - 業界(組織)によって同じ種類の変更でも許容される速度が数日から数か月まで大きく異なるという本章の観察を、定量的に裏付けるデータや事例は他章・他ソースに存在するか。 - 依存関係を最新に保ち頻繁に再ビルドするという指針は、[[技術的負債]] concept が扱う「負債の複利的増大」との関係でどう位置づけられるか。依存更新の停滞そのものを技術的負債の一種とみなせるかは、両concept間でまだ検討していない。 ## 関連 - 概念: [[ソフトウェア変更管理]] / [[継続的デプロイ]] / [[カナリアテスト]] / [[脆弱性ライフサイクルと協調的な脆弱性開示]] / [[技術的負債]] / [[大規模な移行の遂行]](長期の時間軸を専門に扱う姉妹concept) - source: [[@2020__OReilly__Building Secure and Reliable Systems - Chapter 7 Design for a Changing Landscape]] - 実体: [[Google Chrome]] ## 出典 - Heather Adkins et al. (eds.), *Building Secure and Reliable Systems*, O'Reilly Media, 2020, Chapter 7 (Written by Maya Kaczorowski, John Lunney, and Deniz Pecel).