従来のアプリケーション開発とコンテナ利用
これまでKubernetesがアプリケーションの運用にとって便利であることは説明してきましたが、アプリケーション開発者にとってどのように便利になるでしょうか? 今回はKubernetesを利用したアプリケーション開発の流れを説明します。
仮想マシンを利用したアプリケーションの開発では、必要なアプリケーションや設定ファイルが全て同じ仮想マシン上に配置されているでしょう。ではコンテナを利用して開発する場合はどう変わるのでしょうか。この時コンテナのアプリケーション運用に関して多くの課題がありますが、開発者にとってもたくさんの課題があります。
運用の環境を仮想マシンからコンテナにするだけではなくさらにマイクロサービス化を行うと、いくつものサービス間でやりとりをすることが増え、それにつれ課題も増えます。もちろん一つのコンテナにいくつものサービスや設定ファイルを全部いれることでこの課題の解決を図る方法はありますが、それでは仮想マシンを利用するのと変わらなくなる点に注意してください(コンテナ化して辛くなっただけ、ということもあり得ます)。
では、Kubernetesを利用するとコンテナ化したアプリケーションの開発はどう便利になるのでしょうか。
連載第2回でDeploymentの説明をしたとおり、Deploymentを利用してPodを作成することで無停止でコンテナイメージの更新が行えるようになります。Serviceを利用すると、コンテナイメージの更新によって新規に作成したPodに対して追加変更せずに自動でリクエストを新規作成Podに送ることができます。ConfigMapリソースを作ってconfigファイルを書いてPodに受け渡すことが簡単ですし、configファイルの更新を自動でコンテナに読ませることもできます。このように、コンテナを利用したサービスの開発時に課題となることもKubernetesで解決してくれます。