運用設計のコツは、システムとして自動化できないものをすべて運用に任せるような安易な考え方をしないことです。運用コストがかかったり、運用のミスでシステムに影響を及ぼすこともあります。

### 「運用」とは何か?

「運用」って結構曖昧なことばなのですが、

**「運用」とは、Webサービスなどが日々問題なく動作するためにシステムの異常な状態にならないようにしていくことです。**

Webサービスなど、一旦動かしはじめたら定期メンテナンスのようなタイミングが来るまで決して止めることはありません。

そのくらいずっと動かし続けるものです。

ところが、ずっと同じように動作し続けてくれるのであれば、放っておいても問題ないのですが、ことはそんなに簡単ではありません。

同じように動作して欲しいのに、ときどきエラーで一部のデータが不正になったり、処理の途中で中断されたりすることが起こるのです。

また、**すべてを自動化することはできませんので、一部の作業を手作業で実施するようにすることもあります。**

Webサービスはユーザー向けに提供しますが、内部的にも同じデータを利用して処理を行ったりお客様の要望に対応したりするのです。

そうしたときに、システムの間違いや人為的ミスなど想定外のことが起こります。

そういった日常の作業をしたり、障害に対する対応をしたりするのが「運用」というものです。

この運用はシステムの稼働前にしっかり設計しておくことが大事なのです。

### 運用設計への要求

運用設計とはサービスが問題なく動作するために実施すべきことですので、サービスがどのように実現されるかが決まっていることが必要です。

ですので、**開発の工程でいうと、機能仕様が決まって、設計段階に入る頃が妥当です。**

たとえば、毎日あるデータを使ってDBを更新しないといけないとします。

ところが、この更新を自動化するには手間がかかるので、簡単なスクリプトを作って簡略化はするけれども完全な自動化まではできないとします。

こういうとき、これを「運用」で実施しようとプロジェクトで決定されるわけです。

運用でやるということは、すなわち人手でやるということです。

システム化できないから、人手でカバーして正常に動くようにしていこうというわけです。

完全な自動化ができない以上、運用の存在は欠かせません。

**システムとしては、何をシステム化し何を運用で行うか、そういったことを一つ一つ決めていくのです。**

### 運用に求める理由

運用でやろうと決めるとき、その条件は何でしょうか?

明確な基準を決めることは難しいと思います。

**システムの都合やプロジェクトの予算や納期などに影響されることがあります。**

運用でやるということは、何かしら人手による作業が行われることになります。

本来手作業でやることは少ない方がいいです。

人手でやれば、どんなに手順をきちんとしても間違えてしまうこともあるからです。

ですから、**自動化してしまうに越したことはないですが、自動化するにはその機能を開発することが必要ですが、予算が限られていてすべてのことを自動化することができないこともあります。**

また、どうやっても自動化できない作業もあります。

それ以外にも、サービスの提供を開始してから、日々実施しなければならない作業に気づき、なんとか運用でやりくりすることもあります。

### 運用に任せすぎるツケ

自動化できなかったことは運用に任せてしまおう、という考え方になるかもしれませんが、運用に任せたらすべて解決するわけじゃありません。

運用に回したことで後でツケとして回ってくることもあります。

それは、
・**運用コストが高くなる**
・**運用のミスがシステムに影響を与える**
といったことが起こりうるからです。

自動化できずに運用に回してしまえば、運用の作業が増えるので、仮に今1人で実施していることができなくなってしまえば、運用の人数を2人に増やさないといけないのです。

1人の運用で回っているうちはいいですが、2人に増やせば当たり前ながら、運用費が2倍になるわけです。

運用に任すというのはコスト負担が増えるのです。

しかも、改善しない限り毎月ずっとお金がかかり続けることになるのです。

### 運用のミスが大きなロスに

もう一つは、運用を人手で実施することによる間違いの発生です。

たとえば、毎日DBから不要なデータをクリーンアップする運用があったとき、手順は決められているけれども、端末の操作ミスで本来消すべきでない
データまでクリーンアップしたとします。

そうすると、消してしまったデータを元に戻さないといけないのです。

**元に戻す作業は定型化されていませんから、どうやって元に戻すかを考え、テストしそして実施しないといけないのです。**

**それは実はとても大きな損失になります。**

その間、本来やるべき運用の作業ができなくなってしまうからです。

システム的にも障害が発生した状態となりお客様に迷惑をかけたりすることにもつながりかねないのです。

こう考えると、安易に「システム化するのがたいへんだから、運用でやることにしよう!」などと軽い判断はなかなかしてはいけないのです。