Web + Life Hack

〜True But Useless〜

【rails】【再発防止】サービスダウンで泣く前にやるべき4つの予防策

先日、以下のような記事を書きました。

 

rails】【再発防止】サービスダウンで全俺が泣いた。注意すべき3つのこと。

http://g08m11.hateblo.jp/entry/2013/02/06/011705

 

そこで今回は、問題事象に対する予防策について書きたいと思います。

 

1・検証環境の構築

前回の記事にも書きましたが本番環境しかないという開発環境であったため発生を防ぐことが出来ませんでした。ローカル環境で確認しているとはいっても常に設定が本番環境と同じとは限りませんので、小規模のテスト環境(できれば自社サーバーが望ましい)を準備すべきです。

 

2・jenkinsの導入

今回は本番環境とローカル環境のgemファイルに差分があったため、サービスダウンが発生しました。

なので、その差分を意識することなく予防するツールとして、「jenkins」を導入すべきです。

jenkins

https://wiki.jenkins-ci.org/display/JA/Meet+Jenkins

 

3・空のrakeタスクを実行させる

railsではデプロイ効率化のためにcapstranoという機能が使用可能ですが、

passengerを利用しているとRails serverの起動に失敗して

capistranoは警告を出しません。なので、rakeタスクを実行させることで,

bundle execが正常に実行されるかをチェックすべきです。

 

4・自動テストの導入

jQueryのバージョンアップは頻繁に起こり、サービスで使用しているメソッドが無くなるということも頻発します。そのため、「cucumber + selenium」などの自動テストツールを導入し、デプロイする前にテストを行うべきです。

人的コストなども考慮すると自動テストが適正かと思います。

 

cucumber に関する記事

http://gihyo.jp/dev/serial/01/ruby/0021

 

seleniumに関する記事

http://www.atmarkit.co.jp/fjava/rensai4/devtool07/devtool07_1.html

 

まだ多くの予防策があるかと思いますが、前回発生した問題の予防策や予防に対する

工数を考えると十分かと思います。

現サービス運用の正常稼働の手助けになれば幸いです。