問題があまりに多く発生する現場に直面するとその対応だけでエンジニアが疲弊してしまう。
また、問題が少なければ少ないほど空いた時間を使って日々の業務の改善を行うことも出来るから
より生産的になる。
問題を減らすために重要なのは、
- 監視などでトラブルを予防する
- メンバーのスキルを高める
の2点であろう。
トラブルを予防するためには、
- よく知っている技術を使う。どこが危ないか予測しやすいから
- 実績のある技術を使う。(採用する技術の基準の一つ)
- 新しい技術のほうが不具合が多い(自分一人が人柱になるならともかく会社を巻き込むなよな)
- 1年後にはまた新しい技術が登場する
- アーキテクチャを複雑にしない(担当の変更とかも考えて他人にも分かるアーキテクチャを目指すこと。というか、そのシステム24時間365日全部で自分一人で回す気?)
開発時よりも運用時のほうが問題が深刻化しやすい、ということを念頭に置くべきである。
とは言うものの、実験台となる環境も用意すべきである。なぜなら新しい技術への追随が遅れてしまうから。
監視すべきもののなかには、
- レスポンスタイム
- CPU使用率
- 同時接続数とストール
- 接続可否およびデータベース内部の状態
- ハードウェア障害
などがある。
また、問題が起きた場合には、
- アプリケーションの修正
- Webサーバの増設
- キャッシュサーバの増設
- スレーブサーバの増設
- よりスペックの高いサーバへの移行、サーバの分割
などを検討するべきである。