デプロイ作業などは自動化すべきか?

CIのビックウェーブが到来している。

サーバ管理などでも台数が増えてくると必然的に自動化を進めていくことになる。
CI本などを読んでいると、手動の部分は省けば省くほどよい、と主張している印象を受ける。
いわく、手動で作業をしている限り、ミスが発生する可能性がつきまとう、とのこと。

たしかにそれは事実であり、寝不足のときなどにrootでミスオペレーションをしたりして冷や汗をかくことはある。
自動化が進めば、そのようなことは無くなるだろう。

しかし、筆者としても最近ガシガシとサーバ管理スクリプトを自動化していて、ひとつだけ問題があることに気がついた。

単純な手動ミスが減る一方で、それまでに見たことのない(想定外の)エラーや、はじめて遭遇するアプリケーションのおかしな挙動を見逃す可能性が上がるのである。

たとえば、単純なデーモン(Tomcatとか)の再起動を例に考えてみる。
コマンドラインから手動で停止・起動を行う場合、停止にも起動にも数秒ほどかかる。
このとき同じTomcatの再起動でも、AWSのMicroインスタンスとかだと時間がかかったり、12コアくらいのマシンだと一瞬で起動してくれたりする。

あるいは、昼間アクセスが集中している時間だともっさりしたり、夜間だと速かったりする。

そういうなんとなくコマンドラインから伝わってくるニュアンスが、スクリプトにしてしまうと失われてしまうのだ。
あるいは、このニュアンスをスクリプトによってくみ取ろうとすると、スクリプト自体を書くのが非常に難しくなる。

このコマンドラインから伝わるニュアンスのおかげで、障害や問題に気がつくことがある。
「あれ、何となくいつもと感じが違うな…もっさりしてる…けど起動した。」
「あれ、先週の再起動も少し遅く感じたけど、今日はさらにおかしくないか…?」
のように、例えばログファイルなどの蓄積などによって、サーバの症状が日々少しずつ悪化している場合などに、手動のおかげで気がつくことがある。

とはいえ、サーバの数が多くなりすぎれば自動化せざるを得ないので、できるだけ外部からのテストによってシステムの異常を発見できるようにしつつ自動化していくという道を取らざるを得ないのだが。

いままで見たことのない挙動(いわゆる想定外というやつ)が発生したときにスクリプトが気がついてくれるかどうか?
実はサーバ管理のスクリプトにこそ真の凄腕プログラマが投入されるべきなのかもしれない。

Advertisements

Dozens Eclipse PluginがEclipse Market Placeで入手可能に

Dozens Eclipse PluginがEclipse Market Placeに登録された。
http://marketplace.eclipse.org/content/dozens-eclipse-plugin

Eclipseのメニューから「Help」->「Eclipse Market Place」を選択し、「dozens」で検索することでインストールできるようになった。

ちなみに現在開発中の最新バージョン(Github上のもの)では、レコードの削除機能を実装したところ。