ハードウエアの仕様や障害対策の方法など,情報システムを支える「基盤」に関する知識は,その分野の専門家だけのものと考えるITエンジニアは多い。しかし,そうした考え方は正しいとは言えない。システム基盤は性能や可用性といった,情報システムの非機能要件を左右する。その重要性を認識しよう。

見積書

 こうした見積書を目にしたことはないだろうか。ここで「上記開発に伴う付帯作業一式」という言葉に着目してほしい。この作業には,どんなものが含まれているのか。

 まず,アプリケーションを稼働させるサーバーやデータを格納するストレージの仕様,ネットワークの伝送速度などを決める作業がある。こう言うと簡単そうだが,プロセサの種類や数,メモリー容量,データ入出力速度など,決めなければいけない項目は決して少なくない。

 障害対策に関する作業も含まれる。例えば,サーバーが故障した場合に備えて,予備のサーバーを用意するクラスタ構成をとるとしよう。その場合,稼働させるアプリケーションの重要度によって,予備サーバーを常に稼働させておくのか,本番サーバーがダウンしてから起動するのかといった対応策をはじめ,データのバックアップをどのくらいの間隔でとるのかなどを決める必要がある。

 さらに,現行のシステム構成で処理をまかなえなくなった場合に備えて,システムを拡張する方法を前もって検討しておく必要もある。ほかにも個人情報保護や不正侵入,ウイルス対策など,セキュリティ対策にも手を抜くわけにはいかない。

「基盤」が軽視される理由

 いずれも情報システムの「基盤」を構築する極めて重要な作業ばかりである。それにもかかわらず,冒頭のケースでは“付帯作業”という一言で片付けられてしまっているわけだ。

 極端に言えば,システム基盤を単なる「オマケ」としてしか見ていない,あるいは軽視しているエンジニアが多いのだ。

 その大きな理由は3つある。1つはサーバーやネットワークの価格性能比が急激に向上したことだ。ムーアの法則を持ち出すまでもなく,プロセサの処理性能が大幅に向上し続けていることはご存じの通り。ハードディスクも,単位面積当たりの記録容量は年平均で60%以上も向上を続けている。今ではサーバーにテラバイト級のディスク装置を接続することも珍しくなくなった。高性能・大容量のコンピュータ資源が比較的安価に手に入るようになった結果,「必要な性能を実現できなかったら,リソースを後から追加すればいい」と考える傾向が強まっている。

 第二は,システム開発におけるITエンジニアの役割の専門化,細分化が進んだこと。オープン化が進んだ今,ITベンダー1社の製品だけでシステムを構築するケースはほとんどない。ITエンジニアは様々な製品や技術を使いこなし,組み合わせなければならない。そのために必要な知識やスキルは高度になる一方だ。

 必然的に製品や技術ごとに専門家が生まれ,アプリケーションの設計,開発,運用,そして基盤の設計と,役割も細分化されていった。こうしてアプリケーション開発担当者とシステム基盤開発担当者が分離した結果,サーバーの設置作業やネットワークの配線作業を見たこともないITエンジニアが増えた。

基盤の挙動が見えにくい

 3つ目の理由は,アプリケーション開発者にとって,システム基盤の動作が見えにくくなっていることだ。

 ここで図1を見ていただきたい。通常,システム基盤は「ハードウエア基盤」と「ソフトウエア基盤」から成る。ハードウエア基盤はサーバーやネットワーク,ストレージなど。ソフトウエア基盤は,OSに加えて,データベース,メッセージ連携,トランザクション処理,ジョブ管理などを司るミドルウエアなどで構成される。

図1●情報システムの構造と,システム基盤の位置づけ
図1●情報システムの構造と,システム基盤の位置づけ
性能や信頼性といった品質を作り込むには,設計・開発対象であるシステム基盤の構造を知ることが欠かせない

 最近はアプリケーションとシステム基盤の間にユーザー認証やエラー制御といったアプリケーション共通の制御機能,クラスタリングやフェイルオーバーといったシステム制御機能などを実装するシステムも増えている。このようにミドルウエアの“厚み”が増した結果,アプリケーション開発者にとっては,システム基盤の働きが見えにくくなってきたのだ。加えてビジュアル開発ツールの普及も,この傾向に拍車をかけている。