人はミスをしてしまうもの
開発・運用に携わる人には釈迦に説法ではありますが、どれだけ詳細なリリース手順書を整備しても、ダブルチェックのルールを設けても、天才プログラマを何人集めてもミスや失敗は付き物です。経験則からもそうですが、特に稼働が高い時(ローンチ前後)、時間がなくて焦っている時(障害時)はミス・失敗が起こりがちです。
昨今のリリース手順は簡単に思いつくだけでも、
- コンパイルの実行
- ユニットテストの実行
- カバレッジの取得
- minify,compressの実行
- 依存関係の解決
など、複雑化しがちです。
手作業でリリースする場合、一つ一つの作業は微々たる時間で行えても、リリースに必要な作業を積み重ねると結構な時間がかかります。また、それを継続的に行っていくとなるとかなりの時間を取ってしまいます。
これらの作業を自動化することで、機能開発・研究開発と言うエンジニア本来の業務が行える環境を整備しようというのが今回の取組みです。
自動化するためのインフラ全体図
今回DMMではテスト、リリース、JavaScriptのminify/concat、負荷試験などを自動化しました。今回行った自動化するための全体構成図は下記になります。
それでは一つ一つの役割について説明していきます。