Mocha/instanbul
「Mocha」は、JavaScriptで多く使われているテスティングフレームワークです。ブラウザからの実行と、Node.jsでの実行との両方をサポートしています。今回アプリケーションでNode.jsを利用しているため、ユニットテストにはMocha(Expect)を利用しています。
また、カバレッジを取得するために「istanbul」を利用していますが、この部分は開発言語に合わせて別のものを利用できます。
JMeter
「JMeter」は、設定したシナリオ通りにRequestを投げ、その応答速度などをモニターできる負荷試験用ツールです。GUIで操作できますが、あらかじめシナリオを登録しておくことでコマンドからも実行できます。
これもJenkinsからリリースフローに組み込み、自動実行することで、デプロイするコードで著しくパフォーマンスが落ちないかをあらかじめチェックする仕組みにしました。
Ansible
「Ansible」は、ChefやPuppetのようなプロビジョニングツールの一種で、python/yaml形式で記述していきます。下記Ansibleの設定ファイルのサンプルです。
- name: install nginx yum: name={{ item }} state=present enablerepo=epel disable_gpg_check=yes with_items: - nginx tags: - nginx (略)
また、Ansibleの実行は以下のコマンドになります。
ansible-playbook -i production -s -e target=prod site.yml
Ansibleの実行もJenkinsから行い、サーバーの設定変更やスケール作業、ミドルウェアの起動管理もすべてJenkinsから行うようにしました。
その他ツール
Jenkinsの実行結果を、HipChatなどのチャットツールに報告するように設定し、タスクの失敗やタスク実行の終了、各種テストの報告、リポジトリの操作などをきちんとチームメンバが把握できるように設定しました。
まとめ
DMMでは上記のミドルウェアを使用して、開発の自動化を図っています。以降の連載では、個々のソフトの導入や設定について、詳細に説明していきます。次回は、これらの起点となるJenkinsについて扱う予定です。どうぞよろしくお願いします。