【68】ハードウェアの理解も必要
多くのソフトウェアアーキテクトにとって、ハードウェアの性能計画は少々苦手な分野ですが、アーキテクトの仕事の重要な一部であることに間違いはありません。ソフトウェア・アーキテクトがハードウェアについて適切な考えを持てない理由はいくつかありますが、特に大きいのは、ハードウェアについての理解不足と不明確な要件です。
私たちがハードウェアの検討に目をつぶってしまう最大の理由は、私たちがソフトウェア中心の考え方をしていて、ハードウェアの要求をつい見落としてしまうことにあります。高水準言語やソフトウェア・フレームワークによって私たちがハードウェアから自然に切り離されているということがそれに拍車をかけています。
要件がはっきりしないこともハードウェアの検討が不十分になる大きな理由です。要件は変わる場合がありますし、しっかりと理解されていない場合もあります。アーキテクチャーが発展すると、ハードウェアの問題も変化します。また、クライアントは、自らのユーザーベースやシステムの利用状況について十分に理解できていなかったり、予測できなかったりすることがあります。そして、ハードウェアは絶えず進化しています。過去のハードウェアの知識は、現在では通用しません。
ハードウェアについての専門知識がなければ、開発しようとしているシステムのハードウェア構成見積もりは、かなりの確率で外れます。一部のソフトウェア・アーキテクトは、見積もりが外れることを見越して安全率を高めに設定しています。しかし、そのような安全率は、別に客観的な評価やメソドロジーの基礎があってはじき出された数字ではありません。このような方法でハードウェアを選ぶと、たいていはハードウェアの能力が過度に高くなって、需要のピークになってもフル活用されません。そのため、システムが必要とする以上のハードウェアを顧客に無駄に買わせることになります。
ハードウェア計画がお粗末なものにならないようにするためにもっとも効果的なのは、インフラ・アーキテクトとの密接な連携です。インフラ・アーキテクトは、ソフトウェア・アーキテクトとは異なり、ハードウェアの性能計画の専門家なので、チームのメンバーとして参加してもらうべきです。しかし、すべてのソフトウェア・アーキテクトがインフラ・アーキテクトの力を借りるというぜいたくを享受できるわけではありません。その場合でも、ソフトウェア・アーキテクトがハードウェア計画で大きく道を踏み外さないようにするための方法はいくつかあります。
まず、過去の経験です。あなたは過去にシステムを実装したことがあるわけですし、たとえ当時はあと知恵だったとしても、ハードウェアの性能計岡についてある程度の知識をつかんだはずです。
また、クライアントにこの問題を話して、ハードウェアの性能計画のために資金を残しておいてもらうようにすることもできるはずです。性能計画のために先に予算を立てておいた方が、必要以上にハードウェアを買うよりも、コスト的には効果的です。この場合、鍵を握っているのは水平スケーラビリティです。最初から買いすぎるのではなく、必要に応じてハードウェアを買い増ししていくのです。水平戦略を成功させるためには、ソフトウェア・アーキテクトは処理能力をコンスタントに計測する必要があります。また、パフォーマンスが予測できる環境で実行できるようにするために、ソフトウェア・コンポーネントを互いに切り離しておくことが大切です。
ハードウェアの性能計画は、ソフトウェア・アーキテクチャーと同じくらい重要です。インフラ・アーキテクトがいるかどうかにかかわらず、高い優先順位を与える必要があります。アーキテクトにとって、ビジネスのニーズにソフトウェアによるソリューションをリンクするのと同じように、ソフトウェアにハードウェアをリンクすることも大切な仕事の一部です。