BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 必要最小限のアーキテクチャとは

必要最小限のアーキテクチャとは

原文(投稿日:2014/11/08)へのリンク

アジャイルとは,必要最小限の要件と,必要最小限のアーキテクチャとのバランスである。対照的にウォーターフォール開発では,すべての要件を紙面に書き出した上で,それらの仕様に対してソフトウェアを構築する。これは長いプロセスである上に,実際のユーザからのフィードバックを欠いた製品が完成することも珍しくない。実行可能な最小限の製品を,最小限のアーキテクチャを使って開発することが必要なのは,そのためだ。

Kavis Technology社のブログにあるように,実行可能な最小限の製品を開発する上で課題となるのは,そのための適当なアーキテクチャが存在しないことだ。

私はまた,ひたすらアーキテクチャに注力する一連のスプリント(私たちは配管/plumbingと呼んでいます)へと進むチームを,いくつも見てきました。このアプローチでは行き過ぎとなり,エンドユーザに何の成果も見せられないまま,設計と開発に何ヶ月も費やすことがあります。これはアジャイルの目的に反しています。私たちに必要なのは,市場投入のスピードとアーキテクチャのバランスです。MVA(Minimum Viable Architecture/実行可能な最小限のアーキテクチャ)が必要なのです。

Kavis Technology社のブログの筆者は,アーキテクトが最小限のアーキテクチャを作る作業を支援する目的で,プロダクトオーナにいくつかの質問をするように推奨する。

  • 最初のローンチ時点でシステムを利用するユーザの数は?当初6ヶ月は?年内では?
  • ローンチ時のユーザは内部ユーザか外部ユーザか,その両方か?
  • ローンチ時点で想定されるトランザクションは,1秒あたり何件か?当初6ヶ月は?年内では?
  • ローンチ時点のプロダクトに期待されているのはアルファ版か,ベータ版か,あるいは製品準備版か?
  • ローンチ時のシステムには,何人のユーザが追加される予定か?
  • ローンチ時には,どのレベルのセキュリティと監査機能が要求されているのか?6ヶ月以内は?年内では?

Randy Shoup ConsultingのコンサルティングCTOであるRandy Shoup氏は,先日のプレゼンテーションで,実行可能な最小限のアーキテクチャについて説明した。氏はスタートアップする製品のアーキテクチャについて,製品調査,開発実施,スケーリングの各段階の面から説明する。

調査フェーズの間は"プロトタイプ"アーキテクチャを使用するべきだ,と氏は言う。可能な限り迅速かつ安価に,スペースを探ることが,ここでの作業の目標だ。実施フェーズでは"必要十分(Just Enough)"アーキテクチャを使用するとよい。この段階で目指すのは,ユーザの目標を最低限で満たすことだ。ここではモノシリックなアーキテクチャと,最小限のインフラストラクチャの利用が許可されている。"必要十分"アーキテクチャを使用することの利点は,次のとおりだ。

  • 最初はシンプルに
  • インプロセスのレイテンシ
  • 単一のコードおよびデプロイユニット
  • 最小限で効率的なリソース

必要最小限のアーキテクチャを使用している間は,モジュール性や詳細なログ,継続的デリバリなどを心がけるべきだ,と氏は言う。さらに,Thoughtworksのコンサルタントで著作者のMartin Fowler氏が提唱する犠牲的アーキテクチャ(Sacrificial Architecture)を引き合いに出しながら,必要十分なアーキテクチャのコンテキストにおいて,次のように述べている。

今書くことのできる最善のコードは,数年の後には破棄されることになるのです。

実施フェーズの後には,スタートアップのスケーリングフェーズが来る。このステージでチームが使うのは"次世代(Next-Gen)"アーキテクチャだ。目標は,急速に成長するビジネスの前を行くことにある。これにはチームのスケーリング,アーキテクチャのスケーリング,同時実効性と効率性への配慮などが含まれる。

完璧なシステムの構築が正しいアプローチであることはほとんどない。過剰設計のアーキテクチャを構築しようとしてはいけない。氏は言う。

当初の技術的判断を後悔することがないのであれば,おそらくそれは過剰設計です ... アーキテクチャの再設計は成功のサインです。その必要がないのならば,過剰開発だったのか,そもそも不要な開発だったのか,いずれかです。

この記事に星をつける

おすすめ度
スタイル

BT