「コンテナって何? どう使える?」――ソフトウェア開発の課題を解決するコンテナ技術:これから始める企業のためのコンテナ実践講座(1)(1/3 ページ)
「コンテナ技術」やコンテナ実行環境の「Docker」、大量のコンテナ管理や負荷分散を実現する「Kubernetes」について概要から本番活用の仕方まで解説する本連載。第1回は「コンテナ技術」や「Docker」が、現代のソフトウェア開発に求められるようになった理由を解説します。
近年、デジタルトランスフォーメーション(DX)が進展し、ビジネスを成功させるには、ソフトウェアやサービスをいかにスピーディーに開発するか、どのように効率良くシステムを運用するかが重要となってきました。その背景は、市場の動向やユーザーニーズに対して年単位でシステムを開発、更新するのではなく、もっと小さい間隔で少しずつ開発、進化させていく方が、変更の影響と失敗を極小化できるという考え方が広まってきたことにあります。
そのような開発の高速化とサービスの進化を実現するためには、短期間で要件定義からリリースまでを反復させるアジャイル開発の導入や、サービスの停止時間をできる限り削減しながら、継続的にサービスを提供、運用することが求められます。
本連載は、上記で挙げたような取り組みを実現するためのテクノロジーとして、「コンテナ技術」や、コンテナ型アプリケーション(以下、アプリ)の実行環境「Docker」、大量のコンテナ管理や負荷分散を実現する「Kubernetes」を分かりやすく解説します。「コンテナって話題になるけど何ができるか分からない」という経営者やIT管理部門の皆さまが、コンテナ技術や関連ツールを利用したソフトウェア開発をイメージできるようになり、自社のDXについて考えるきっかけになれば幸いです。
コンテナ技術が登場するまでの変遷
そもそも、なぜ、コンテナ技術や、Docker、Kubernetesに注目が集まっているのでしょうか。コンテナ技術や、Docker、Kubernetesを解説する前に、それらが生まれる前の技術的なトレンドを振り返ってみましょう。
もともと、仕事の効率化や、知的欲求を達成するために、目的に応じた専用のコンピュータ(ビジネスコンピュータ)を必要とする時代がありました。専用コンピュータの時代です。
その後、技術が進歩して、CPUの値段が安くなり、汎用的にさまざまな用途で使える小規模のコンピュータや、小規模なサーバ群が簡単に手に入る時代となりました。PCやサーバの時代です。
しかし、小規模なPCやサーバが増えたことにより、管理コストがかかるようになりました。また、演算処理技術の進歩により、1つのシステムを1つのサーバで運用するだけでは、CPUの計算資源が余ってしまい、サーバのリソースをうまく活用できない状況が起きました。
そこで、1つのサーバ内で、複数のシステムを扱える技術が登場します。仮想化技術の時代です。
1つの物理サーバで、複数の仮想サーバを立ち上げてリソースを無駄なく活用できる仮想化技術は、自分で好きなようにシステム構成を変更できるメリットもあります。一方で、複数の仮想マシンを稼働させるために高性能な物理サーバを用意したり、障害に備えて物理サーバを冗長化させたりする必要がありました。
そういった仮想化技術の課題と「もう少し効率的に業務を遂行したい」「必要なときにだけ、設定済みの環境を確保したい」という開発者、運用管理者の要求を満たすために「クラウド」に注目が集まります。システムを構築する際に、クラウドを活用することで、必要なときに必要なサーバ環境(リソース)を利用するだけで済むようになりました。
しかし、仮想化技術からクラウドに進化しても、物理サーバまたは仮想サーバに入っているOSを考慮しながら、ソフトウェアやアプリを開発、運用しなければならない状況は変わりませんでした。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 第1回 Dockerとは
Dockerの概要を知るための超入門連載(全4回)。Dockerとは何か、コンテナとは何か、従来のハードウェアエミュレーション型の仮想化とはどう違うのかなどについてまとめておく。 - VS CodeとPythonとDockerでWeb APIをコンテナ化!
VS CodeとPythonとFlaskで作成したWeb APIをDockerコンテナ上で実行したり、リモートデバッグしたりしてみよう。 - 無償の「Docker for Windows」で手軽にLinuxコンテナを利用する
Windows OS向けのDocker for Windowsが正式にリリースされ、Windows環境でも簡単にDockerを導入できるようになった。Windows 10のHyper-VでDockerのコンテナを利用してみよう。