久しぶりの投稿ですが、お付き合いください。
システム障害
システム障害がひとたび発生すると、我々が生活する日常生活や社会に多大な影響をおよぼします。
今やITシステムは、我々の日常生活になくてはならないものになっています。
例えば、みずほ銀行のシステムトラブルなどはわかりやすい例ですが、ひとたびITが止まると、ATMからお金が引き出せなくなるとか、
docomo、au、SoftBankでシステムトラブルが発生すると、スマホが使えなくなるとか、日常生活がたちまち不便になるくらい、ITは一般的な社会インフラとしての重要性が高まっています。
ITエンジニアとして、ITサービスをお客さまへ提供してるが、
毎回システム変更するたびに、何かしらのシステム障害が発生しないか、いつも心配になる。
いったん障害が発生すると、お客からクレームになるし、会社のイメージダウンにつながる。システム障害を起こさないようにするには、どうしたらいいんだろうか?
今回は、システム障害をどうすれば防ぐことができるのか?IT業界35年の私の経験から、システム障害の防止についてお話します。ITを維持管理している方、システムをこれから構築しようとしている方、ITエンジニアとしてシステム障害に悩んでいる方に向けて、有益なお話になると思います。
システムトラブルを防ぐには?
結論から言うと、ポイントは以下の5つです。それでは順に説明します。
・とにかく事前にテストする
・本番に近いテスト環境を用意する
・段階的にリリースする、パイロット稼働のススメ
・本番移行時は予め切り戻り手順とチェックポイントを決める
・万一に備えて障害発生時のリカバリ対応の体制を準備しておく
とにかく事前にテストする
システム障害を防ぐには、何が重要か?
それは、事前にテストをすることです。それに尽きます。
本番リリース前までに、システムテストを確実に実施して確認しておけば、99%システムトラブルは防ぐことができます。
完璧なシステムが作れなくても、テストで要求仕様が満たせていれば、業務で使用するには最低限問題はありません。
逆にいうと、テストで問題がなければ、どんな作り方をしてもいいということです(極論ですが)。
ではなぜ? 世間ではシステムトラブルが発生してしまうのでしょうか?
それは、きちんとテストしていないから。または、テストが不足していたからです。
まず、ITに関わる方が意識することは、「事前にテストをすること」です。
実にシンプルです。システムトラブルを防止するには、とにかく「テストをする」に尽きるんです。
ITエンジニアの仕事は、「テストに始まり、テストに終わる」と言っても過言ではありません。
どんなに完璧な設計をして、プログラムを正確にコーディングしたとしても、システム障害は防げません。
テストをしておけば、ほぼ99%は障害を防ぐことができます。
次は、ITにおけるテストをどう正確に、確実に、かつ効率的にやるかをお話します。
本番に近いテスト環境を用意する
本番に近い環境でシステムテストして、問題がないことが確認できれば、ほぼシステム障害は発生しないいんです。
最近ではクラウド環境で、ステージング環境と呼ばれる、本番とほぼ同じ環境を用意して、テストができるようになりました。
なので、システムを設計構築するときは、予め本番環境だけではなく、ステージング環境と呼ばれる本番と同等のテスト環境を準備するよう、システム予算を確保すべきです。
よく、システムを構築することだけに注力して、本番稼働後の維持管理フェーズで、システム変更時のテスト環境のことを考慮しないプロジェクトが散見されます。
必ず、システム変更やソフトウエアのバージョンアップは定期的に発生するのものなので、ステージング環境の整備は必須です。
段階的リリース、パイロット稼働のススメ
ステージング環境があるからと言って、本番と全く同じ環境や条件でテストするのは、今の時代では簡単なことではありません。
昔はシステムの規模が小さかったので、通常のテストであれば、ほぼ本番と同じ環境を用意できました。
また、一つのプログラムを修正して、テストするだけならそれほど大がかりな環境は必要なくテストは容易です。
しかし、今のシステムは様々なAPIで連携していたり、大規模改修で複数の外部システムとの連携が多く発生する場合は、いくらステージング環境があっても、本番環境と同じデータを使ってテストすることはなかなか簡単ではありません。
しかも、昨今は顧客情報(個人情報)の利用が厳しく制限されているので、簡単に本番と同じ大量のデータを準備して、本番時と同じ処理をテストすることはかなりハードルが高くなってきています。というか、ほぼ不可能な状況です。
それなりにスケールダウンさせて、本番と同じような疑似環境は準備できるのですが、それでも本番と全く同じ環境のテストはできません。
本番と同じ環境を再現してテストできない以上、本番移行(新しいシステムを正式にリリースすること)は障害を起こさない、障害が起きたとしても、障害の影響を極小化させるための工夫が必要です。
そこで段階的に本番リリースして、パイロット稼働でシステム障害の発生リスクの影響を最小限に抑える手法がオススメです。
次回は、そこのところを詳しく説明します。