ITシステム開発における運用設計の重要性
Contents
ITシステム構築において見落としがちなのが運用の設計。
運用とは、ITシステムの構築、テスト、移行が完了して本番として稼働し始めた後に、問題なく動く状態を維持するための措置です。
例えばシステムトラブルが起きたときに、ユーザーは誰に連絡して、それを受け取った担当者はどうやってその問題を解決するのかのフローだとか、その手順を指します。
システム的観点で言えば、定期的にサーバーを再起動したり、問題なくシステムが動いていることを確認するためにどんなツールを使って監視するか、等ですね。
このような運用設計があることで、例えITシステムに問題が発生したとしても、迅速に対応することができ、システムを使用するユーザーに対してサービスを滞りなく提供し続けることができるのです。
従って、運用の設計というのはITシステムの開発において非常に重要な要素と言えます。
メンテナンスとはシステム改修や修理をすること
ちなみに運用と同じような意味合いの『メンテナンス(保守)』というタスクもあります。
メンテナンスとは、システムをMaintainすること。
つまりシステムの正常稼働を維持する活動で、システムの改修や修理をする作業を指します。
例えばセキュリティパッチの適応や、バグの修正、ファームウェアバージョンの更新、故障した機器の交換などです。
運用とメンテナンスの大きな違いは『システムに変更を加えるか否か』
運用とメンテナンスの違いは、対象のITシステムに対して『変更を施すか否か』です。
運用は システムの安定稼働を保証するためにシステム監視をして状況を把握し、既定のルールに則ってシステムを運営していく作業。
一方メンテナンスは想定外のトラブル対応や脆弱性対応のための修正パッチ適用などのシステム改修をする作業です。
運用とメンテナンスをはっきりと区別するのは難しいですが、大きな違いは『システムに変更を加える』という点。
ただ目的としてはどちらも同じで、『システムを安定稼働させる』という事です。
リリース後の運用メンテナンスは軽視されがち
どんなに晴らしい機能やサービスを提供しているITシステムだとしても、安定した稼働が保証されないのであれば、システムとしての価値は低いと言えます。
ところが実際にはITシステムの開発プロジェクトにおいて、この運用メンテナンスというのは軽視されがちです。
プロジェクトメンバーであるITシステム開発者は、ユーザーの希望を満たすためのシステムを構築することに意識を集中しがち。
もちろんユーザーの要望を叶えるためにシステムを構築するのですから、それらユーザーに必要とされる機能を確実に実装するのは当然ではありますが、機能面だけ充実していてもシステムとしては不十分です。
ケーススタディ
例えばあなたが見積もり作成、管理システムを導入したいと考えてたとします。
日々の営業活動において、見積もりの作成や、発注書、請求書の作成と管理は欠かせません。
この営業活動をサポートするためにシステムを導入するのであれば、簡単にドキュメントが作成できて、過去の履歴も見やすいシステムを期待するでしょう。
ここで言う『ドキュメントが作成できる』や『過去履歴を閲覧できる』が、システムに期待する機能です。
これら機能を実装するためにITシステムを構築するのです。
ITシステムの開発は社内のITチームが担当するかもしれませんし、外部のITベンダーに委託するかもしれません。
どちらのケースでもITシステム開発プロジェクトが立ち上がり、担当者がシステムの開発を進めていくことになります。
機能面の実現に集中してしまう
この時、プロジェクトにアサインされたシステム開発者は何に重きを置いてプロジェクトに取り組むでしょうか?
答えはユーザーが期待している『機能』の実現です。
上記例で言えば、『ドキュメント作成機能』と『過去履歴の閲覧機能』を実装することに集中するのです。
多くのプロジェクトメンバーはこの『機能の実装』に集中するので、出来上がったシステムは、機能面ではユーザーの要望を満たしていることはほぼ確実です。
システム開発を依頼したユーザー側も、機能面が実装できているかを気にするので、新しいシステムが機能的に要望を満たしているのであれば満足するでしょう。
こうして機能が実装できていることが確認され、新しく構築したITシステムで問題ないという共通認識がユーザーとシステム開発担当者の間で確立されます。
そしてシステム開発プロジェクトは終了し、対象のITシステムは本番稼働を迎えることになります。
運用メンテナンス設計の欠如
しかしながら、このシステムには大きな欠陥があります。
何だか分かりますか?
それは、運用メンテナンスの設計がなされていない事です。
システムリリース後にどうやって安定稼働を保証するのか、問題が起きたらどうやって対応するのか、これら運用メンテナンスの設計がなければ、安定稼働は保証できません。
大手ITベンダーでも運用メンテナンス設計を見落とす、というか軽視する
ぼくはこれまで大手金融機関のITシステム開発や保守を担当してきました。
プロジェクトの立ち上げや概念設計をする上流工程から、システムの設計、開発、テスト、移行などの下流工程、そしてリリース後のシステム運用メンテナンスを全ての工程を経験してきました。
運用メンテナンスを経験しているからこそ、その重要さを認識していて、上流工程を担当する際も必ずシステムリリース後の運用を考えてシステムの設計しています。
ところが一般的には全工程を経験しているエンジニアというのは非常に稀です。
プロジェクトの上流下流工程を担当する企業と、運用メンテナンスする企業は異なることが多い為です。
上流工程を担当する人は、運用メンテナンスの観点が欠如していたり、逆に運用メンテナンスしか経験していない人は上流工程を担えない、という事が良くあります。
お互い自分の範囲に線を引いているので、自分の担当エリア以外は見ていないという事ですね。
このような暗黙の役割分担があるので、システム開発プロジェクト期間に運用メンテナンスの設計が十分になされないという事がしばしば発生します。
システム開発担当者はシステムを構築しておしまい!?
システムを開発する側としては、システムを作り上げてしまえばビジネス上の契約としてはそれで終了と考えてしまいがち。
なぜなら自分たちはそのシステムを運営していかないからです。
例えトラブルが起きたとしても、トラブル対応するのは他のベンダーや顧客自身だから、このプロジェク完遂の為に働いている自分たちには関係ないと捉えてしまう。
つまり他人事になってしまうんですね。
とても残念ですが、こういった考えを持った人たちを現場でたくさん見てきました。
システム運用の重要性を理解しながらも、プロジェクトの期間やコスをを考慮して、あえて運用を軽視するということもありました。
ITのプロならば、運用メンテナンス設計も機能設計と同様に重視せよ
システム構築プロジェクト期間において、システム運用とメンテナンスの設計が軽視されがちという背景をお伝えしてきました。
もちろん運用について考慮され、システムリリース後も安藝稼働して、問題発生時も迅速に対応可能であるというシステムも存在します。
それが理想です、というかそれで当たり前です。
もしあなたがITシステムエンジニアだったりプログラマだったり、何かしらITシステムを開発する仕事に従事されているのであれば、常にそのシステムの本番稼働後の運用について考えるようにしましょう。
- 運用メンテナンスの対象となるシステムのコンポーネントは何があるか?(対象)
- システムの運用メンテナンスは誰が担うのか?(体制)
- どうやってシステムを監視するのか?(監視)
- 定期的に対応が必要となる作業は何があり、どう実装するのか?(スケジュール)
- トラブルが起きたときは誰がどう対応するのか?(障害対応)
- システムのバックアップとリストアはどう実装するのか?(バックアップ・リストア)
ITシステムを運用する人、そしてシステムを使う人がいる
そのシステムは勝手に自動的に動くわけではありません。
そのシステムを運用メンテナンスしている人が必ずいます。
その人たちが滞りなくシステムを監視して、問題発生時にはスムースに対応できるようなシステムを構築すべきです。
そのことは結局ユーザーのベネフィットに繋がります。
そしてそのユーザーの先には、ユーザーの顧客もいるでしょう。
つまりシステムが安定稼働すれば、ユーザーにも顧客にも恩恵があるのです。
ユーザーのベネフィットになるからこそITシステムは存在価値がある
システム開発者にとってはシステムを構築してリリースする事がゴールですが、ユーザーや運用担当者にとってはシステムリリースがスタートです。
システムが安定稼働してそのシステムを使う人とその先にいる顧客が恩恵を享受できるようなシステムを設計しましょう。
ではまた。
コメントを残す