BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 進化的アーキテクチャの特徴

進化的アーキテクチャの特徴

原文(投稿日:2016/03/31)へのリンク

進化的アーキテクチャの第一原則は非破壊的な変更をサポートすることだ。進化的アーキテクチャの特徴と原則についての記事でRebecca Parsons氏Neal Ford氏マイクロサービスアーキテクチャは、進化的アーキテクチャの優れた例になると書いている。彼らの考えではマイクロサービスはドメイン駆動設計(DDD)で言う境界付けられたコンテキストの原則に従うため、進化的アーキテクチャの原則に適う。

Thoughtworks社で働く2人は、進化的アーキテクチャの定義はまだ固まっていないものの、現時点では次のように定義している。

進化的アーキテクチャの第一の原則は、複数の次元で継続的かつ漸進的な変更を支援することです。

進化的アーキテクチャには多くの特徴がある。2人が示しているのは、以下の通り。

  • モジュールと結合: 技術的設計でモジュールをサポートし、しっかり定義された境界によってコンポーネントを分離する。これによって非破壊的な変更を簡単に実現できるようになる。開発者にとって非破壊的変更は大きな利点がある。反対に泥だんごアーキテクチャはモジュール性がなく、それゆえ、進化できない。
  • ビジネス能力に沿った組織化: ドメインレベルでのモジュール化はドメイン駆動設計(DDD)で実現される。マイクロサービスでドメインに沿って分離するのは、SOAのように技術レイヤで分離することとは大きく異なる。
  • 実験: 進化的アーキテクチャがビジネスに与える強力な力が実験だ。アプリケーションの変更は些細なこととなり、A/Bテストカナリアリリースなどが可能になる。また、マイクロサービスアーキテクチャは同じサービスの複数のバージョンを同時に動かすこともできる。これによって、実験が可能になり仮説駆動開発が可能になる。

また、原則を通じて進化的アーキテクチャを概観することもできる。原則は、アーキテクチャや設計手法の特徴を示している。アーキテクチャについての意思決定をするときに関する原則は以下の通り。

  • 適応度関数: アーキテクチャの適応度関数はシステムの重要な特徴を定義する。例えば、稼働時間、スループット、可用性、セキュリティだ。レーダーチャートを使って視覚化することもできる。
  • 痛みを先に: プロジェクトにおいて、痛みを産みそうなものを先に手をつける。こうすることで、痛みの原因となる問題の特定が早まり、痛みの除去のための自動化が進みやすくなる。デプロイのパイプラインのような継続的デリバリやデータベースの移行などは進化的アーキテクチャを簡単にする。
  • 最終責任時点: 従来のアーキテクチャと進化的アーキテクチャの大きな違いは意思決定のタイミングだ。例えば、構造や技術スタック、通信パターンなどの決定の場合、従来のアーキテクチャではコードを書く前に行われる。進化的アーキテクチャでは、最終責任時点の前までに決定できればよい。その時点で決定をするのは難しいかもしれないが、適応度関数が指針を示してくれる。ただし、アーキテクチャに重大な影響を与える決定や成功にとって重要な要因になる決定は早めにするべきだ。

Parsons氏とFord氏は、継続的デリバリDevOpに言及しつつ、アーキテクチャとは、現在進行のプロセスのスナップショットであり、進化的アーキテクチャにとっては運用を意識することが極めて重要だと結論付けている。

Ford氏は進化的アーキテクチャについてのウェビナーを開催している。

QCon London 2015では、Parsons氏はこのテーマでプレゼンをしている。

Jimmy Bogard氏は2010年に進化的アーキテクチャについてブログで書いている

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT