なぜDockerを導入するべきか:Dockerとは、VMについて
前置き
私がDockerを始めて使った時は多分2020年ごろだと思います。
もちろんその時は自分がDockerを構築することではなく、
ただ利用する方だったのでツールを手順通り使うだけだったことが思い出します。
最近、私の会社でDockerの導入することを考えているので
その時調査したものを整理・共有するため、
今回はDockerについてお話したいと思っています。
もしDockerの導入を悩んだり、考えている方がいらっしゃるであれば
この記事が役になると幸いかなと思います。
Dockerとは?
まずはDockerについて実際Dockerを作った会社のページでDockerがどういうものかについて確認して見ましょう。
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications
from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you
manage your applications. By taking advantage of Docker's methodologies for shipping, testing, and deploying code, you can
significantly reduce the delay between writing code and running it in production. [1]
Dockerとはアプリケーションの開発、配送、実行のためのプラットフォームで、
アプリケーションとインフラを分離することで、ソフトウェアを最速に提供でき
Dockerのテストやデプロイ手法を活用すれば、コード作成から本番環境へのリリースまでの時間を短縮できますと記載されています。
つまり、Dockerと言うフラットフォームを使うとインフラの分離
と最速なリリース
が可能って公式ドキュメントでは話しています。
ここで一つ疑問点が思い出す方もいらっしゃるかもしれません。
Dockerが存在する前にはインフラの分離とインフラの分離
と最速なリリース
ができなかったの?と言う疑問です。
結論から言うともちろん違うでしょう。
なのでDockerについて話す前に以前のソリューションついて話す必要があるかと思います。
Docker以前のソリューションについて:Vurtual Marchineについて
Dockerの以前にはIT業界ではインフラの分離
のためにVurtual Marchine
省略してVMと言うものを使いました。
まずはこのVMについて簡単に話して見ましょう。
Vurtual Marchineについて
まずはVurtual Marchine
と言う技術はなぜ今まで使っているでしょう。
結論から言うと一つのサーバーのリソースをもうちょっと有効的に使うためです。
理解を深めるためにVurtual Marchine
技術を使う時と使わない時を比較してみようと思います。
前提として今働いている会社で会社を紹介するページ
と漫画フラットフォーム
を運営していると考えましょう。
まずはVurtual Marchine
を使わない場合です。
Vurtual Marchineについて:Vurtual Marchineを使わない場合
この場合二つのパターンがあります。
二つのアプリを一つのサーバーで管理する場合
ひとつ目、二つのアプリを一つのサーバーで管理する場合です。
この場合、サーバーのリソースを有効に使えますが、アプリの管理が難しくなります。
例えば、ライブラリパッケージをグローバルでインストールすると他のアプリに影響を与えたり
OSが古くてアップデートが必要な場合、会社のホームページも利用できなくなる
今は大丈夫かもしれませんが、今後いろんな問題が発生する可能性があります。
二つのアプリを各サーバーで管理する場合
この場合、イングラの分離はできましたが、リソースを効率的に使ってないことになります。
Vurtual Marchineについて:Vurtual Marchineを使う場合
VMを使う場合はどうでしょう。
VMを使うとかVMを経由して仮想のゲストOSが作成でき、
一つのサーバー内で複数のインフラを仮想で構築できます。
さらに、Linux OSだけではなく、Windowsのサーバーも構築できることもメリットになります。
このVMと言うソリューションによって以前より
インプラの管理がしやすくなるし同時にサーバー運用コストも減少できので
VMを使ってない時点の目線で考えるとメリットを感じれることも当然です。
Vurtual Marchineについて:Vurtual Marchineのデメリット
もちろんVMのデメリットもあります。
- インフラ別、 OSをセットアップする必要があるため、イメージのサイズが大きくなる
- ストーレッジ/CPU/メモリーなどのリソースを共通するため、画像OSが多いほど性能の問題が発生する
- 遅いOSブート速度
- ソフトウェアーライセンス/サーバー(ハードウェア)構築費用
などのデメリットが存在します。
でもデメリットよりメリットの方が圧倒的に多いので使う方が良いでしょう。
終わり
ここまでにして簡単なDocker紹介からのVM話をして見ました。
結論的にはDockerが存在する前にインフラの分離
と最速なリリース
ができないことではありません。
以前にはVurtual Marchine
を利用してインフラの分離
と最速なリリース
をもう実現していますし、もう我々のアプリが動く環境内にこの技術を使っています。
そういうことはDockerを使うとVMよりインフラの分離と最速なリリースが可能って言うことでしょう。
次は本格的にDockerの定義からアーキーテクチャーまでお話したいと思っています。
ありがとうございました!
Discussion