K8s 5分講座#03 コンテナの利点
今日のテーマは「コンテナの利点」についてだ。
K8sの前提知識、第3弾ですね、お願いします!
開発と運用
開発と運用の分離というのを知っているかな?
もちろんです!開発者がアプリケーションを開発、その後運用チームに引き継がれ、本番環境へのデプロイと管理を行うことですよね。
その通り、開発と運用の権限を同一エンジニアが持っていると、本番環境でプログラムやDBの改変をできてしまうから、担当や権限を開発と運用で明確に分けるというものだ。
運用チームが機械的に対応できるように、手順書とか用意して引き継ぐんですよね。いやーアレが大変なんだ…。。
苦労しているな。開発者はセットアップやインストール、設定方法や前提条件など、細かく指示をする必要があるんだよな。逆に運用チームは手順外の対応はご法度だったりする。
ですね。運用チームは自分たちで開発した訳ではないので当然内容については詳しくないですし、トラブル時は開発・運用で協力して解決していくことが多いです。
コンテナの場合、基盤のセットアップに関わる大部分は、アプリケーションのイメージを作成するDockerファイルのような形で開発者が行えるようになった。
手順書を作る代わりに、セットアップをしたDockerファイルを開発者が作るんですね!
このアプリケーションのイメージは、どのコンテナ・プラットフォームでも実行でき、どこでも同じように実行されることが保証されている。
開発環境で動くこと確認出来たら、本番環境でも同じように動作するよ、と言うことですね。
そういうことだ。運用チームは単にそのイメージを使ってアプリケーションをデプロイできるようになった。
運用チームはイメージを変更しないので、開発と運用の分離も満たしているのですね!
コンテナとイメージの違い
今出てきた、イメージって何者なんですか?
イメージはコンテナを作成するために使用されるパッケージやテンプレートのことを指す。そのイメージをもとに作られた実行インスタンスはコンテナと呼ばれる。
そうか!開発環境で作ったテンプレートを本番環境で使うだけで、開発環境で稼働しているファイル自体をそのまま本番環境に持って行くわけではないのですね。
- 従来型の開発では、運用者に手順書を引き継いでデプロイ・管理をしてもらっていた
- コンテナの場合は、デプロイの前提となる設定やセットアップをイメージとして引き継ぐことができる
- イメージは、コンテナを作成するテンプレートであり、環境を跨いで使える
私、運用チームで仕事してたことがあるんですよ。その時は朝礼で、運用ミスあるあるを回避するための訓示を全員で唱和していましたね…。
ちょっと知識があると自己判断で手順に無い作業をしようとしてしまうからな。運用チームでそれはNGなんだ。
本番環境で「ついうっかり」は信用失いますからね…気を付けます~。