『インフラデザインパターン──安定稼動に導く127の設計方式』より転載
はじめに
インフラデザインパターンは、インフラ開発における問題発生の抑制や生産性の向上、人材育成などを目的に、インフラ技術者たちが編み出した設計方式を概念化・抽象化して名前(パターン名)を付け、その特徴や留意点を記載したものです。特にインフラについて経験の浅い技術者(アプリケーション開発者も含む)や、システム構築に責任を持つプロジェクトマネージャ、企業の情報システム部門でシステムの企画や導入の意思決定を行う人、ベンダーの提案や設計を評価・比較する人に向けてまとめられています。
現在は、システムやインフラ開発の情報がたくさんあり、容易に入手できます。インフラのスキルがあまり高くない人でも、そういった情報を使えば簡単に開発ができそうに思われがちですが、多くの場合それほど簡単にはできません。インフラのスキルがあまり高くないと、たとえばユーザなど関係者間での意思疎通が十分にできずに運用しにくいシステムとなる(運用に多大なコストや手間がかかる)場合があります。その結果、過剰投資となるリスクや、過小要件により稼働後のトラブルが多発するリスクが高まります。
このような事態を防ぐためには、スキルが高い技術者が要件定義などの上流工程に参画することが有効です。スキルの高い技術者は、さまざまな要件に対し類似の設計を行ったことがあり、加えてさまざまな課題に対応した経験があります。スキルの高い技術者は多くの場合、それらの経験から得たノウハウを応用して効率的に検討を進めることができます。
どうしたらスキルの高い技術者のノウハウを効率的かつ俯瞰(ふかん)的に学ぶことができるのでしょうか。要件定義といった上流工程に参画できる人数は少なく、経験できる人は限られます。また単に経験を積むだけでスキルを向上させるには限界があります。システム化の対象範囲が飛躍的に広がり、複雑化や多様化が進む今、新しくインフラ開発に従事する人たちに、上流工程のノウハウを体系的に伝達することは課題です。
そういった課題を解決する方法の一つに「デザインパターン」があります。デザインパターンは、よくある課題をうまく解決するための典型的な方法です。デザインパターンで有名な本に『オブジェクト指向における再利用のためのデザインパターン』(注)があります。この本で紹介されているデザインパターンをうまく使うことで、開発品質と生産性の向上を実現できます。このように主にソフトウェアで適用されてきたデザインパターンの手法をインフラに適用させたのが、本書で紹介するインフラデザインパターンです。
筆者らが所属するNTTデータでは、毎年100以上のシステムのノウハウを調査・研究してインフラデザインパターンの開発を行っており、インフラデザインパターンはこれまでに数百のプロジェクトで幅広く利用されています。実際に、「一般的なインフラ構成としてどんな選択肢があるのかがわかりやすかった」「設計の妥当性を確認することに役立った」「検討漏れの防止に利用することで品質を上げることができた」「設計検討のスピードアップに貢献した」などの声があり、約90%以上のユーザから品質向上やリスク回避、検討工数の削減などの効果があったと報告されています。
囲碁や将棋では「定石」を、空手や柔道では「型」を学ぶことで、状況に応じた基本的な対応をとることができます。インフラ開発においても、インフラデザインパターンをベースとして設計することで、スキルのあるインフラ技術者が行う検討に近づくことができるでしょう。
本書の特徴
本書ならではのポイントとして次の点があります。
- 全デザインパターンは特定の製品に依存していない
- 要件定義といった上流工程で使うことを意識して構成している
1点目についてですが、本書ではインフラのデザインパターンをより概念的なものとしてまとめています。これによりインフラデザインパターンをもとにした設計は、さまざまなベンダー製品で実現できます。そのため純粋に中立的な立場で、提案や設計が要件に十分適合しているのかを検討もしくは評価・比較しやすくなります。さらに、システム業界ではさまざまな製品が移り変わりますが、そういった製品の移り変わりの影響をあまり受けず、長い間使い続けることができます。本書にはそういった特徴を持つ127のデザインパターン(119パターン+8タイプ)を紹介しています。
2点目についてですが、要件定義といった上流工程はシステムの品質に大きな影響を与えます。本書は、そういったシステム開発で重要となる要件定義工程を意識し、要件定義の品質を上げることを目指しています。
本書では、要件定義において非機能要件検討などで利用できるよう、可用性、性能・拡張性、セキュリティ、運用・保守性といった非機能要件別や、クラウドコンピューティング、ネットワーク構成、ストレージ構成などのインフラ構成別にデザインパターンを解説しています。
すべてのデザインパターンには、特徴を把握しやすいように簡潔なイメージ図を掲載しました。システムに関する用語は似て非なるものが多いなか、本書を「会話ツール」として利用することで、異なるバックグラウンドを持つユーザやベンダーなどの多くの関係者が参画する要件定義において、全員が同じ認識を持ちやすくなります。関係者が同じ認識を持つことで、要件に対し適切な設計を議論でき、最適な構成を検討しやすくなります。要件定義後に環境変化などにより要件自体が変更になった場合も、要件と設計方式の関係が明確であるため、迅速に対策を検討しやすくなるでしょう。
さらに、各デザインパターンの「できること」だけでなく、「できないこと」や「留意点」も掲載しました。これにより、要件定義といった上流工程で早期にリスクを整理しやすくなり、早期に対策を打てるようになります。また、本書を使って要件定義の結果をレビューすることで、検討結果の妥当性や検討漏れの確認にも利用できます。