システム保守って必要なんですか?
というご質問をお客様からいただくことが時々あります。予算の発生することですから当然の疑問とも言えますが、結論としては原則として保守は必要です。
システムをオリジナルで開発すると当然のことながら開発費用がかかります。しかしシステムは作って終わりではありません。運用が開始されてからもシステムには様々な予期せぬことが起きる場合があります。
ビジネスの根幹となるようなシステムで保守を行わないことは、私からすれば悪い意味でかなりのチャレンジャーだと言わざるを得ません。
ここではシステムの保守がなぜ必要であるのかの理由から、システム保守に対する考え方に至るまで様々な視点から整理してみたいと思います。
システム保守はなぜ必要なのか
システムは稼働してから色々なことが起きる
システム運用開始後に起きる代表的なものとして、システムの不具合(いわゆるバグ・障害)があります。これはプログラミングを含むシステム構築を人間の手によって行うものである以上、人間はミスをする生物なのでどうしても仕方のない部分です。
ソフトウエアに潜むバグを全て潰すためには膨大なコストがかかってしまい、そもそもそんなことは不可能だと考えるべき部分でもあります。
図はこちらから引用させていただきました。
システム開発会社の人間として言い訳するわけではなく、上記の図にあるように一定期間システムのテストを継続した後は、例えまだシステムにバグが含まれている可能性があったとしても、それを検出するためには膨大な時間とコストがかかってしまいます。
たまに「最初から障害ゼロのシステムを納品してくれ」とおっしゃられるクライアントがいますが、おっしゃることはごもっともなのですがそれは現実的ではないのです。上記の内容をご説明すると大抵のクライアントは納得してくれますが、稀に納得してくれない方がいらっしゃると大変苦労するわけでして。w
何が言いたいかというと、
システムの運用中に障害は発生するもの
ということです。少なくともそういう前提で体制を組んでおく必要があります。
システムで絶対にバグを出すなという要求は、学校のテストで絶対に100点を取れと要求を出すようなものです。もちろんテストを一通り解いたら時間の許す限り見直しはしますよ?でもテストの時間は有限ですし、何度も見直しをしてこれで絶対に100点だ!と思って答案を提出しても、ケアレスミスで98点で返ってくることはありますよね?
このあたりの話は面白そうなのでまた別途掘り下げてブログに書きたいと思います。
緊急時の対応が行える体制が必要
予期せぬことは突然やってくるものです。
もちろんシステムの障害もそうなのですが、システムの利用ユーザーが使い方を誤ってデータの修正が必要になるようなこともあります。色々な要因でサーバーがダウンしてしまうようなこともあります。
そんな時でもすぐに対応がとれる体制が必要となります。
データのバックアップも必要
必要なデータを消してしまった等、何かの理由でシステムのデータを少し前の状態に戻さなければならないことがあります。そんな時にはデータのバックアップがないと手の打ちようがなくなります。
最近はある程度バックアップを取ってくれるようなサービスを提供しているサーバーもありますが、データ消失時に必要なことはバックアップデータを取得しておくことだけではありません。取得しておいたバックアップデータを使用してシステムに復元しなければなりません。
しかもサーバー会社で自動的に行ってくれるバックアップ復元作業は、ある日の時点にシステム全体のデータを戻す、という対応がせいぜいで、消してしまったデータをピンポイントで復元してほしいといったきめ細かな対応は行ってくれないことがほとんどです。
セキュリティ問題への対応も必要
ある意味これに関しての対応が一番重要な部分でもあります。
「システムの運用中に障害は発生するもの」と上で書きましたが、セキュリティホールも一種の障害と言えます。独自に構築したプログラム部分だけではなく、データベースやサーバー側で何かしらのセキュリティホールが見つかる場合もあります。
「JINS」に不正アクセス 個人情報75万件流出の可能性 Struts 2の脆弱性悪用
今年の3月に騒がれたニュースですが、これはフレームワークと呼ばれる部分で発見された脆弱性をつかれた情報流出でした。
次にこれです。これも同じフレームワークであるStruts2による情報流出です。
15.5万件余りの個人情報流出か プロバスケリーグ、チケットサイトの不正アクセスについてぴあが謝罪
記事内に書かれているソフトウエア会社のホームページを見にいくと、どう見ても常駐開発メインの会社で、だとすると社内に十分な保守が行える人がいたかどうかも微妙だし、しっかりとした保守を行える体制があるかどうかも疑わしいところがあります。
常駐開発をやっているIT企業は全部ブラック企業なので、少なくとも私がユーザー企業側のIT担当ならそういう会社には絶対に発注しません。
システムは代替がきかない場合が多い
システムの保守が必要かどうかを判断する時に、そのシステムが他のものに代替可能かどうかは一つの判断基準になると思います。
保守を頼んでいなかったとしても、すぐに代替可能なものであれば最悪の場合は買い換えることが可能だからです。パソコンなどは壊れたとしても他のものですぐに代替可能ですし、どうせ2~3年で買い換えるので私は保守に入ったことはないですね。
でもオーダーメイドで開発したオリジナルのシステムだと代替品がないことがほとんどです。オリジナルで作っているわけだから当然です。
オリジナルのシステムの場合だと、代替品を用意するためには作り直すなどしないといけません。それだと時間も費用もかかるのでやはり保守が必要です。
オリジナルのシステムだったとしても、データのバックアップがいらないもの、数日間システムが動作しなくても支障のないもの、情報漏えい等のセキュリティ的なリスクのないものであれば、特に保守がなくても問題ないでしょう。
システムの保守体制がないとどうなるか
全ての対応が遅れる
システムの保守体制がきちんと用意されていれば、いざという時に迅速に動き出すことができます。しかし保守体制がない場合に例えば障害が発生してその対応を開始しようとすると、通常は最初にシステムの調査から入ります。障害の調査ではありません。システムそのものの調査です。
障害を改修するにしても、改修するための開発環境を用意しなければなりませんから、そのシステムがどのような環境で動作するシステムであるのか等、色々調査する必要があります。調査結果に基づき、開発環境や試験環境を構築して改修や動作確認ができるようにするための準備も必要です。
そうした準備が整ってからようやくシステムに手を入れられるようになりますので、その準備にそれなりの時間が必要です。かかる時間はシステムの規模や複雑度によります。
ビジネスがストップしてしまう
システムに何らかの障害が発生していたり、システムそのものが停止してしまっていたりする時に、それがすぐに復旧できればまだいいですが、例えばECサイトのようなものが2日も3日も停止しっぱなしという状態だとビジネスとしてはかなりの痛手です。社内の業務システムが数日間も利用できないような状況になれば、日々の仕事そのものが止まってしまうリスクもあります。
趣味としてやるなら構いませんが、ビジネスとしてやるならきちんとプロに依頼してください。
システム保守に必要な体制
システム保守の体制は社内に組むのが一番良い
システム開発の会社の人間としてこんなこと言うのもなんですが、システムの保守で一番重要なのはスピードです。そのスピードが一番早くなるのが社内に体制があることなんです。運用中のシステムで何かあった時にはとにかく早く対応しないとどんどん被害が拡大してしまうこともあります。
外部の開発会社に対応を依頼するよりも、社内の人間に依頼する方が普通に考えて早いですね。なのでクライアントにも私は社内で保守体制が組めるようならそうするようにお勧めしています。
必ず複数人でのシステム保守体制にする
ここ超重要なところです。システムの保守を1人でやらせるのは趣味なら良いですがビジネスにおいては絶対にNGです。
上記でシステム保守の体制は社内に組むのが一番良いと言いましたが、それも当然複数人での体制が組める場合です。よく社内にたまたまプログラムに詳しい人が1人だけいて、その人にシステムの保守をやらせてるケースがありますがやめましょう。
そもそもシステムの保守に限らず、1人の人しか対応できないような属人化した業務があるとそこで必ず非効率な事態になっていきます。もう少しわかりやすく言うとそのせいで残業が発生します。
1人しかできない業務があるとその人の仕事が遅れるとそこで業務全体のフローが停滞してしまいますし、その人は軽い気持ちで有給を取ることすらできなくなります。
社内のいたるところからシステムに対する改善要望が出てきているのに、システム担当者が1人しかいなくてその人がいっぱいいっぱいになってしまい、全くシステムの改善が進まないという経験のある方は結構いるのではないでしょうか?
1人しかいなかったシステム担当者がバックレたなんて話もよく聞きます。業務負荷が1人の人に過度にかかることもありますから、その人の精神的ストレスを考えるとそういう気持ちもよくわかります。わかりますがバックレてから開発会社に相談に来られるのではなくて、願わくばバックレる前にご相談にいらしていただければ幸いです。その方がシステムの引き継ぎもスムーズに進みますから。
1人に何かあった時でもシステムの保守が止まらないように、システム保守体制は複数人の体制にしましょう。
社内に複数人体制を作れないならシステム会社に依頼
実際のところ、複数人でのシステム保守体制を構築するというのはそれなりに難易度が高いです。エンジニアを最低2名雇用したとして、システム開発会社でもない会社が常にその人達の仕事を継続的に安定して用意するというのは結構大変です。初期開発の時にエンジニアを雇用して、開発が終わったら不要になったエンジニアを解雇していたひどい会社を1回だけ見たことがありますが・・・
それにエンジニアの採用って結構難しいんですよね。別にエンジニアに限った話ではないかもしれませんが、エンジニアの優劣って本当にピンきりで、優秀なエンジニアをシステムのことわからない方が見極めるのって至難の業だと思います。
できないことでも「できます」って言うエンジニアはたくさんいますからね。それに華々しい経歴を持っているように見えても、実際にその人が担当した業務は大したことなくてスキルも実際には全然ないなんてこともよくあります。
実際には外注管理と進捗管理をExcelでやったことしかないエンジニアと呼ばれてる人はたくさんいます。一部のことしかやったことなくてプログラムは一応組めるけどシステム全体のことを見ることはできないという人もたくさんいます。
フリーランスのエンジニアにシステムの保守を任せてはいけない
誤解のないように最初に断っておきますが、フリーランスそのものがダメなわけではありません。フリーランスの中にも優秀なエンジニアの方はたくさんいます。
ではなぜフリーランスのエンジニアにシステムの保守を任せてはいけないかというと、病気になった時に対応できないからです。それだけです。
上でも書いてきたとおり、ビジネスにおいてはシステムの保守はスピードが大事ですし、複数人体制であることも重要だと書きました。
どんなに優秀な人であってもいつどこで病気や怪我をして入院するかわかりません。保守という業務の性質上、これはどうしても複数人で組織的な対応が行えるようにしておく必要があるわけです。
以前取引させてもらった東大出身の超優秀なフリーランスのエンジニアの方がいたのですが、その方は初期開発は自分で行っていましたが、保守となると病気の時などに責任ある対応が取れないということで、保守はアクシアにバトンタッチを依頼されたということがあります。
フリーランスのエンジニアにはいい加減な人が多いという事実もあります。
システムの保守って何もなければお金を捨てているような気持ちになってしまうかもしれませんがそうではないんですよね。何かあってからでは遅い。保険のようなものかもしれません。
ちょっと前に長年取引きさせてもらっていたお客様のことをツイートしたのがこちら。
7年間取引きしていただいてたお客様との保守契約が、お客様のサービス終了に伴い先月で終了した。こういうこともある。そのお客様に時々お会いした時にご無沙汰してますと挨拶すると「ご無沙汰なのはシステムに問題が起きてないということだから良いことですね」とよく言われてました。まさにw
— 米村歩@日本一残業の少ないIT企業社長 (@yonemura2006) April 3, 2017
システム保守ではご無沙汰なのが一番です。w
アクシアでは他社さんで開発されたシステム保守の実績もたくさんありますので良かったらご相談ください。
既存のシステムの保守移管をお考えの方はこちらもどうぞ↓