🚀
改めてdockerのメリットを整理してみよう
はじめに
今や開発現場で使用されることが当たり前となったdockerですが、そもそもdockerを利用することでどのような恩恵を受けられるんだっけ???、とふと思うことがあったので、今一度整理してみたいと思います。
dockerの一般的なメリット
dockerを使用した際の主なメリットは以下のような点が挙げられるかなと思います。
- 起動が高速
- Dockerfileにてインフラを宣言的に記述することとで、環境間の差異を吸収することができる
- Dockerfileにてインフラを宣言的に記述することとで、production環境およびstaging環境のアプリケーションの動作に関して、冪等性を保証することができる。
- 新規コンテナ定義の適用および稼働中のコンテナのロールバックが容易
- Dockerfileにてインフラを宣言的に記述することとで、開発者がアプリケーション動作環境を把握しやすくなる
過去に遭遇した課題
以前、開発に関わっていた現場では、開発環境にdockerを使用し、ステージング環境およびプロダクション環境では プライベートクラウドにて CentOS7
をベースとした仮想マシンにデプロイするという構成をとっていました。
上記の様な構成では、開発環境構築時においては開発者間で開発環境の差異を少なくするというメリットがありましたが、ステージング環境およびプロダクション環境にデプロイした際に、開発環境で動いていたアプリケーションが動かなくなるという問題が発生しました。
このような問題を防ぐためにも、開発環境でdockerを採用した際には、ステージング環境 & プロダクション環境でもdockerをはじめとしたコンテナ基盤で運用することが望ましいのかなと思います。
dockerと併せてGolangを選定した際のメリット
- docker build後のimageサイズが他の言語と比較した際に小さくなる
- imageサイズが小さくなることでリポジトリへのpushおよびpull完了までの実行時間が短くなる
Discussion