はじめまして。DMM.comラボの田中裕一です。昨今、システムの開発現場では、ビジネススキームの変化やシステムの高度化に伴い、短期間での開発、高速な改善、継続的な新機能追加、かつ安定した運用と、システムの開発に対する要求も高度化してきております。「システム開発」というとどうしてもシステムの設計や、プログラミング作業に注力しがちですが、より高速に安全に開発・運用・改善を行っていく上で、私の経験を踏まえ、ここで改めて開発・運用の問題について整理したいとおもいます。
人はミスをしてしまうもの
開発・運用に携わる人には釈迦に説法ではありますが、どれだけ詳細なリリース手順書を整備しても、ダブルチェックのルールを設けても、天才プログラマを何人集めてもミスや失敗は付き物です。経験則からもそうですが、特に稼働が高い時(ローンチ前後)、時間がなくて焦っている時(障害時)はミス・失敗が起こりがちです。
昨今のリリース手順は簡単に思いつくだけでも、
- コンパイルの実行
- ユニットテストの実行
- カバレッジの取得
- minify,compressの実行
- 依存関係の解決
など、複雑化しがちです。
手作業でリリースする場合、一つ一つの作業は微々たる時間で行えても、リリースに必要な作業を積み重ねると結構な時間がかかります。また、それを継続的に行っていくとなるとかなりの時間を取ってしまいます。
これらの作業を自動化することで、機能開発・研究開発と言うエンジニア本来の業務が行える環境を整備しようというのが今回の取組みです。
自動化するためのインフラ全体図
今回DMMではテスト、リリース、JavaScriptのminify/concat、負荷試験などを自動化しました。今回行った自動化するための全体構成図は下記になります。
それでは一つ一つの役割について説明していきます。
この記事は参考になりましたか?
- DMM.comの事例から学ぶリリースフロー自動化ガイド連載記事一覧
-
- JenkinsとAnsibleによるサーバー構築の自動化
- リリースフローを自動化するためのJenkinsの導入/設定手順
- リリースフローを自動化して、本来の開発業務に専念できる環境を整備しよう
- この記事の著者
-
田中 裕一(株式会社DMM.comラボ)(タナカ ユウイチ)
DMM.comラボにおいて、検索システムの刷新、レコメンドエンジンの新規開発など、DMM.comの重要な機能を担うエンジニアとして従事。AeroSpikeを社内で採用し、日本人初のコントリビューターとしても活躍。サーバーサイド、フロントエンド、ミドルウェア、インフラと幅広く担当するDMM.comラボ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
