Docker時代の継続的デリバリー
次世代システム研究室のN.Oと申します。Webアプリケーション開発のプロジェクトで開発環境や本番環境を構築したり、負荷テスト、監視を行うといった所謂インフラのエンジニアとして従事しております。
このたび継続的デリバリーのプラクティスをいかに実務に生かしていくかという事を考える機会があり、個人的に注目しているDockerに代表されるコンテナ仮想化技術をうまく活用し、実践と検証をした結果を共有できればと考えております。
継続的デリバリー
継続的デリバリーで欠かせないのが自動化と反復可能な各種の処理です。継続的インテグレーションに代表されるようなアプリケーションのビルドや様々なテスト、およびインフラ構築・テストの自動化、またそれらを1つのパイプラインに見立てて一貫して処理を行い、最終的にリリースまで行う。ここで重要になってくるのが自動化と反復可能な各種の処理です。継続的デリバリーでは一連の「デプロイメントパイプライン」(図1)をすばやく実行できることが重要です。
Docker
DockerはOSを起動しなくともプロセスを実行する形でコンテナをすばやく起動できます。(図2)
図2 hypervisor型VMとコンテナの比較
(GMOプライベートDMP開発で取り組んできたDevOpsと今後の展望より)
またコンテナの素となるイメージをビルドしたり共有する仕組みが備わっています。こうしたDockerの特徴が継続的デリバリーに生かせそうです。すでに次世代システム研究室でもDockerを利用した取り組みが始まっています。
GMOプライベートDMP開発で取り組んできたDevOpsと今後の展望
活用シーン
デプロイメントパイプラインの様々な箇所でDockerを活用できるところを考えてみました。- コミットステージ
- 開発環境のDocker化(Dockerize)
- 自動化された受入テスト(CI)
- 受入テストの環境をDocker化
- 自動化されたキャパシティテスト
- キャパシティテストの環境をDocker化
- 手作業でのテスト
- 手作業でのテストのための環境をDocker化
- リリース
- 本番環境をDocker化
次回
今後は開発環境やCIでのDocker利用については事例を参考にしながら理解を深めていきたいと考えております。またDockerでの継続的デリバリーを実践すべく、まずは模擬的なプロジェクトで検証する予定です。本番での利用についてはまだまだこれからといった所ですのでとくに実践に力を入れたいと考えております。