第3章. アーキテクトとデザイン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
人生を可能にしているのは、永久に続く耐え難い不確実性だけだ。
アーシュラ・K・ル=グウィン『闇の左手
システム をレジリエンスに向けて進化させると決めたとき、システムのアーキテクトと設計は、 現実の実行時間の中でシステムが熟成していくにつれて、システムを再設計するという避けられないサイク ルになる最初のステップである。このフェーズでは、システムの機能、特徴、関係を詳細に記述することで、ソフトウ ェアエンジニアがシステムを構築して提供する方法を明確にする。システムの振る舞いに関するメンタルモデルを最初に形成するのもこのフェーズである。また、図3-1に示すように、システムのドラゴンのスパイラルに初期化するのもこのフェーズである。繰り返しのたびに、私たちのシステムは芽を出し、新たな相互作用と相互接続を生み出し、より単純な "始まり "を難解にしていく。
われわれのシステムは常に変化している。 積極的な変化のプロセスであり、われわれの信念とは対照的である。なぜなら、レジリエンスは動詞だからである。現在最適なアーキテクチャが、将来、 システムの妨げになる可能性があるからである。第 1 章で説明したように、レジリエンスとは、何に対する、何であるかということである。システムの設計とアーキテクトを行う際には、レジリエンス設計は本質的にコンテクストに依存することを受け入れなければならない。あなたは、システムとそれを取り巻く蛇行した状況が展開する中で、その生涯にわたってシステムを管理するキュレーターなのだ。インシデントから回復し、不測の事態に適応し、時間と共に成功するように進化するシステムを育てるのだ。
図3-1. システムの相互作用が複雑になるにつれて、ドラゴンのスパイラルが展開する(出典:Stack Exchangeの投稿)
本章の目標は、設計の各反復においてシステムのレジリエンスをサポートするために、シス テムのローカルなコンテキストに基づいて、システムに組み込むことができる設計パターンと設計に基 づく緩和策を理解してもらうことである。レジリエンスの利点に気づかないまま、これらのデザインパターンのいくつかをすでに採用している可能性は高い。Safe-to-fail 設計の考え方では、リソースは有限であり、慎重に投資しなければならないことを受け入れる必要がある。我々は、疎結合と線形性に投資することで、設計とアーキテクチャにおけるレジリエンスと便宜性のトレードオフを乗り越えることで、大惨事の「デンジャー・ゾーン」を回避する方法を探る。また、設計とアーキテクチャに疎結合と線形性を導入することで、ソフトウェアデリバリーのライフサイクルの残りの部分を通して可能性を維持する機会についても紹介する。
この章が終わるころには、システムのレジリエンスについて、その初期の概念から、そして我々の創造物が成長し、多産なドラゴンに進化していく過程で、どのように影響を与えることができるかを理解できるようになるだろう。 ...