-shared-img-thumb-YUKA160322230I9A4320_TP_V

昨今、仕事や日常生活の至るところで情報システムが広く使われています。そのせいか、「システムが○時間停止した」「システムトラブルにより、○○万人のユーザーが影響を受けた」というニュースをよく耳にします。

世間では、「システムは、よくトラブルを起こすもの」という認識が広まっているようです。実際のところ、止まらずに動き続けるシステムを構築することは、なかなか難しいです

ここでは、「システムが止まる原因は何か」「止まりにくいシステムを構築するにはどのようなことを行うべきか」についてお話していきます。ここで述べる内容を理解することにより、トラブルを起こしにくいシステムの構築やメンテナンスの方法について学ぶことができます。

システムが止まる原因は何か

つい先ほどまで普通に使えていたシステムが、突然停止して誰も使えなくなったとしましょう。そのような場合、システムが停止した原因としてどのようなものが考えられるでしょうか。

システムが停止する原因は、様々です。大きく分けて、「ハードウェア(サーバーやネットワーク機器など)のトラブル」「ソフトウェア(システムのプログラムなど)のトラブルがあります。トラブルを早く復旧するには、原因がハードウェアにあるのか、それともソフトウェアにあるのかを見極めることが必要です。

ハードウェアは、どうしても一定の確率で故障するものです。そのため、「故障の原因を抑える」ことに力を注ぐよりも「故障が起きた場合にいかに早く復旧するか」に注力した方が現実的です。また、ハードウェア故障の場合は故障した機器を交換すれば基本的に保守対応が終わります。そのため、復旧は比較的容易であると考えられます。

その一方で、原因がソフトウェアにある場合は内容の分析が必要です。ソフトウェアのバグの場合、もしくは入力されたデータに問題があって特定の処理において動作が止まってしまい、後続の処理に進めなくなるという場合もあります。

また、いくつかのシステムがつながってお互いに情報連携して動作しているときは「接続相手先のシステムから送られてくる電文に問題があって、それに誘発されて自社の構築したシステムが停止する」ということもあります。そのような場合、「相手先システムの電文を直してもらう」か「自社のシステムが止まらないように修正する」かどちらかの判断となります。

稼働前のテストを徹底する

システムを構築するのであれば、原因が何であろうと簡単に止まってしまうのではなくユーザーが安心して使い続けられるようなシステムを目指すべきです。それでは、ソフトウェアに原因があるシステム停止を起こさないようにするにはどうしたらよいでしょうか。

それには、「稼働前にテストを徹底して行うこと」が重要になります。具体的には、「実運用に即したテストデータを用意する」「テストデータをシステムに流してその結果が正しいことを確認する」「ピーク時に近い負荷をシステムにかけたテストを行う」というところがポイントとなります。

テストデータは、なるべく実際のデータに近い方が良いです。その方が、システムに隠れている問題点を見つけやすくなります。例えば、顧客情報のテストデータは「テスト A」「テスト B」というような名前よりも、「鈴木 一郎」「佐藤 花子」というように実際にありそうな名前にします。

また、テストデータをシステムに流したら、全件についてテストの結果を確認します。それによって、ソフトウェアの問題点を見つけられる可能性が高まります。

そして、システムに負荷をかけるテストも行うべきです。これを行うことで、小規模なテストでは分からないけれども実運用において初めて発覚するようなパフォーマンスの問題など(非機能要求)に気づくことができます。

システムを止めないメンテナンス方法

稼働後にシステム停止を招かないようにするには、稼働中のシステムのメンテナンス(保守)も重要になってきます。具体的には、「トラブルの予兆を察知する」ことと「システムの動作に支障が出ないうちに手を打つ」ことがポイントです。システムはいきなり停止してしまうことは少なく、たいていの場合トラブルの予兆があります。

サーバーやネットワーク機器であれば、動作状態を示すLEDランプの色が変わります(これまで緑色だったのがオレンジ色になるなど)。システムの動作であれば、「最近、何となくパフォーマンスが悪くなったような気がする」「時々、極端に遅いことがある」「動作ログに、エラーが出るようになった」といった具合です。

これらの現象は、すべて何らかのトラブルの予兆と考えられます。予兆の段階、すなわちシステムに不具合が出ていないうちであれば、システムのユーザーに迷惑をかけることなく対処がしやすくなります。早くトラブルの予兆に気づくためには、システムの日常運用管理手順を確立するのが最も確実です。

このように、安心して動き続けてくれるシステムを構築するには「稼働前のテストを徹底する」「メンテナンスでトラブルの予兆を察知する」ことが重要になります。ここで述べた手法を実践することにより、ユーザーが安心して使えて満足度の高いシステムの構築が可能になりますので覚えておいてください。