QCon Londonカンファレンスの2日目に、ThoughtWorksのCTOであるレベッカ・パーソンズ氏は進化するアーキテクチャのアイデアを再考し、それが2025年にむけて進化する可能性について語った。進化型アーキテクチャの定義から始めてそれぞれの「イリティ(ilities)」と呼ばれる属性にふれ、次の時代にどのように進化していくかを予想した。彼女は「進化はするが、革命は起こらない」と結論づけた。
進化型アーキテクチャは、複数の次元にわたるガイド付きの段階的な変更をサポートするものである。
パーソンズ氏は、なぜアジャイルやエマージェントではなく進化型という言葉が使われるのか洞察を述べた。「進化的アーキテクチャ ―絶え間ない変化を支える」の共著者ニール・フォード氏との建設的だが馴れ合いではない会話を経てこの名前は定着した。当初フォード氏は「エマージェント」アーキテクチャと呼んでいた。コードは良し悪しで合意をとるのは比較的簡単だが、アーキテクチャとなるとそうはいかない。定義のガイドパートでは何が良いアーキテクチャが構成するのか、について言及している。
それが、私たちが適応度関数の概念を導入した理由である。適応度関数は、特定のシステムが望ましい行動特性をどれだけよく反映しているかを客観的に評価するものである。
次にパーソンズ氏はこれを運用することの重要性に着目した:新しい機能をインクリメンタルに追加して、本番環境への道筋でメカニズムを提供するにはどうすればいいのか?
進化型アーキテクチャの重要なプラクティスと促進要因は継続的デリバリーと継続的デプロイメントを実現させる厳格さと自動化の推進度である。
これらの適応度機能はデプロイメントパイプラインに組み込む必要がある。。
定義の最後のパートでは多次元的な側面であることを強調し、数年前のWikipediaに掲載されていた「ilities」のリストをスライドで紹介した。リストは例えば「オブザーバビリティ」に重点を置くなど、その後も進化している。リストの誤謬点としては、「1回限りのものもある、たとえば"Evolability"なんて無視するべきだ。」というように、いくつかの項目は相互に排他的であるため、すべての項目を最大化することはできない、ということである。
次にパーソンズ氏は、進化型アーキテクチャの今日の原則に目を向け、今後2年間でどのように進化していくのか推測した。
個人的にはSOAの最初の試みが失敗した理由は、私たちが概念の周りに境界線を引いていた以上に、システムの周囲に境界線を引いていたからだと考えています。。
最後の責任ある瞬間: システムに関する情報をできるだけ多く持つために、決定を最後の責任ある瞬間まで遅らせたい。トレードオフを行う必要があるのは、「-ilities」と適応度関数に変換する方法です。
進化可能性のための設計と開発: 進化可能性がシステムにとって重要である場合、コードをどのように書くかだけでなく、コードをどのように構成するかも重要である。
可読性が重要でありここでソフトウェア品質メトリクスの出番となる。そして境界性、結合性、凝集性について話すタイミングが来るのだ。
ポステルの法則: 受け取るものには寛大であり、送るものには慎重であれ。
郵便番号だけでいいなら、住所の検証はしないことだ。そうすれば、もし私がデータを2行に分けても、あなたはそれに気にする必要はないのである。
テスト容易性の設計: 何かをテストする能力と、何かがどれだけテスト可能であるかは、境界線をどれだけうまく引けたかをかなりよく示すものだ。テストピラミッドのすべてのレベルに焦点を当てれば、システムのためのより良いアーキテクチャを持つことができる。
コンウェイの法則: どんなシステムでも組織のコミュニケーション機能が反映される。
3段階のパイプラインが必要なら、3つのグループを持つ必要がある。
最後に、これらの原則が今後2年間でどのような影響を受けるかを見解を述べた。 パーソンズ氏によれば、「最後の責任ある瞬間」も「ポステルの法則」も影響を受けない**。
原理原則は変わらなくても、より堅牢で、より "免疫"的なシステムを構築するためのイノベーションが起こるだろう。IoT、拡張現実、仮想現実のようなシステムの複雑さにイノベーションを取り入れるだけでなく、機械学習モデルをテストする方法にもイノベーションが起こるだろう。AIによる開発支援は、テストファースト開発(開発者がテストを書き、AIがコードを生成する、あるいはその逆)のような、さまざまなタイプの開発手法を促進することになるだろう。
これらはすべて、継続的デプロイメント・パイプラインの強化、本番環境でのテストへの依存度の向上、適応度機能およびアプローチ群の拡大によって可能になる。
彼女は、次のように結論付けて講演を締めくくった。
この原則は時代を超えて不変であり、私たちが見逃している原則があることを示すものはまだない。実践は進化するが根本的に変わらない。進化型アーキテクチャは進化するだろうが、革命は起こらないだろう。