システム開発の要件定義では機能要件・非機能要件が注目されますが、それと同様に重要なのが「インフラ要件」です。
インフラ要件とはシステムを動かすための基盤(インフラストラクチャ)に関する要件であり、ハードウェア・ネットワーク・クラウド・セキュリティなど幅広い領域を含みます。
本記事では、要件定義におけるインフラ要件の意味・主な検討項目・具体的な内容・現代のクラウド環境でのインフラ要件の考え方について詳しく解説していきます。
インフラエンジニア・SE・ITコンサルタントをはじめ、システム調達に携わる方に役立つ内容をお届けします。
インフラ要件とは何か?要件定義における位置づけ
それではまず、インフラ要件の意味と要件定義における位置づけについて解説していきます。
インフラ要件とは、アプリケーションシステムを動作させるための基盤(サーバー・ネットワーク・ストレージ・クラウド環境など)に関する要件を定義したものであり、非機能要件の一部として位置づけられることが多い概念です。
インフラ要件が必要な理由
アプリケーション機能がいくら優れていても、それを動かすインフラが適切に設計されていなければ、パフォーマンスの低下・障害の頻発・セキュリティ事故などの深刻な問題が発生します。
要件定義の段階でインフラ要件を明確にしておくことで、後の設計フェーズでの手戻りを防ぎ、適切なインフラコストの見積もりが可能になります。
「アプリを作ってからインフラを考える」という順序では、アプリケーションの要件と合わないインフラ構成になるリスクがあるため、要件定義の段階から並行して検討することが重要です。
インフラ要件と非機能要件の関係
インフラ要件は非機能要件の中の性能要件・可用性要件・セキュリティ要件・保守性要件などと密接に関係しています。
たとえば「稼働率99.9%以上」という可用性要件は、冗長構成のサーバー・ロードバランサー・フェイルオーバー機能といったインフラ構成の要件に展開されます。
非機能要件を実現するために必要なインフラ要件を洗い出すという観点で検討を進めることが効果的でしょう。
インフラ要件の主な分類
インフラ要件は大きく以下の領域に分類できます。
・サーバー・コンピューティング要件
・ネットワーク要件
・ストレージ・データベース要件
・セキュリティインフラ要件
・クラウド・仮想化要件
・運用・監視要件
・バックアップ・災害対策要件
インフラ要件の主な検討項目
続いては、インフラ要件の主な検討項目を確認していきます。
インフラ要件の検討では多岐にわたる項目を漏れなく確認することが重要です。
サーバー・コンピューティング要件
サーバーに関する主な検討項目は以下の通りです。
| 項目 | 検討内容 |
|---|---|
| CPU・メモリ | 同時アクセス数・処理量に基づく必要スペック |
| OS | Windows Server・Linux等のOS種別・バージョン |
| 冗長化 | クラスタリング・フェイルオーバーの必要性 |
| 仮想化 | 物理サーバー・仮想マシン・コンテナの選択 |
| スケーラビリティ | 将来の拡張に対応できる構成かどうか |
サーバースペックの見積もりは予想アクセス数・データ量・バッチ処理の規模などの性能要件をもとに行うことが基本であり、過剰スペックも過小スペックも避けることが重要です。
ネットワーク要件
ネットワークに関する主な検討項目としては、帯域幅(必要なネットワーク速度)・遅延(許容できるレイテンシ)・接続方式(インターネット・専用線・VPN)・ファイアウォール・ロードバランサーの要否などがあります。
リモートアクセスやモバイル対応が必要な場合は、VPNやゼロトラストネットワークの採用も検討事項となるでしょう。
バックアップ・災害対策要件
データの消失リスクに対応するためのバックアップ要件も重要な検討項目です。
RPO(Recovery Point Objective=目標復旧時点)とRTO(Recovery Time Objective=目標復旧時間)を明確にした上で、バックアップ頻度・バックアップ方式・DR(ディザスタリカバリ)サイトの要否などを決定します。
クラウド環境でのインフラ要件の考え方
続いては、クラウド環境でのインフラ要件の考え方を確認していきます。
現代のシステム開発ではオンプレミス(自社管理サーバー)よりもクラウドを活用するケースが増えており、インフラ要件の検討においてもクラウド特有の観点が重要になっています。
クラウドサービスモデルの選択
クラウドを利用する場合は、IaaS・PaaS・SaaSという三つのサービスモデルから要件に応じて選択することが必要です。
IaaSは仮想マシン・ネットワークなどのインフラを提供するサービスであり、高い柔軟性がある反面管理の手間が大きくなります。
PaaSはアプリケーション実行環境を提供するサービスでインフラ管理の負担が軽減され、SaaSは完成したアプリケーション機能をサービスとして利用する方式です。
クラウドコストとインフラ要件の最適化
クラウド環境ではインフラリソースを従量課金で利用するため、コストの観点からもインフラ要件の適切な定義が重要です。
過剰なスペックを要件として定義するとクラウドコストが不必要に膨らむため、実際のワークロードに基づいたリソース要件の定義と、オートスケーリングの活用が現代のクラウドインフラ設計の基本となります。
セキュリティインフラ要件
クラウド環境でのセキュリティインフラ要件として、共有責任モデルの理解が不可欠です。
クラウドプロバイダーが責任を持つ領域と、ユーザーが責任を持つ領域を明確にした上で、アイデンティティ管理・アクセス制御・データ暗号化・通信暗号化・セキュリティ監視などの要件を定義することが重要でしょう。
まとめ
本記事では、インフラ要件の定義・要件定義における位置づけ・主な検討項目・クラウド環境での考え方について解説してきました。
インフラ要件はシステムを動かすための基盤に関する要件であり、サーバー・ネットワーク・ストレージ・セキュリティ・バックアップ・クラウド構成など多岐にわたる項目を要件定義の段階から検討することが重要です。
機能要件と非機能要件を実現するために必要なインフラ要件を早期に明確化することが、プロジェクトのコスト・品質・スケジュールの適切な管理につながるシステム開発の重要な取り組みです。
インフラ要件の定義に積極的に取り組み、安定したシステム基盤の設計を実現していきましょう。