今回はコンテナ利用時のメリット・デメリットについてです。
まずはメリットから見て行きましょう!
コンテナとは・・・
「アプリケーション本体と、アプリケーションの実行に必要なライブラリ・依存関係など、必要最小限の要素をひとつにパッケージした姿」
と思い出してもらいましたが、そもそもエンタープライズでのコンテナ技術利用時のメリットって何になるのでしょうか。
通常エンタープライズで利用する場合、昔から利用されている PDCA サイクルを意識して完成させるべきアプリケーションで利用するライブラリやツールを決めますが、そこで利用するライブラリやツールの依存関係の確認が必要となり、拡張性のない結局は使い慣れた依存関係がわかっているものを利用せざるを得ません。
これはシステム連携をするために、異なるシステム間においてデータの共有・交換を利用したデータ連携方式を用いているためとも言えます。
ここで、コンテナを利用する場合は、API(Application Programming Interface)と呼ばれるプログラムのインターフェースを用いて、異なるシステム間でデータ連携をさせる事が主流となっており、これによって自分の好きなライブラリやツールを利用することができ、開発スピードも早くすることができるのです。
コンテナ技術の利用は、アプリ開発者にとっては非常に嬉しいものなのですね。
実はアプリケーション調達者にとっても以下のようなメリットがあります。
「カットオーバー後にちょっとした変更を加えたいのだが、依存関係云々でアップデートに莫大な時間と費用がかかってしまいアップデートができない」
って事はよくありますよね?
コンテナを利用すると、カットオーバー後にちょっとした変更を加えたい場合は、対象箇所のみを変更することが可能になるため、改修も格段に早い対応ができるようになります。
ただ、今まで実施してきた調達方式では簡単には行きません。
仮想化技術を利用した場合、ほとんどのシステムが統合基盤になっているかと思います。
統合基盤であるが故に利用するライブラリやツールの依存関係を意識する必要があり、アップデート対象箇所に関する依存関係調査に数ヶ月、アップデートに数ヶ月という話になり、結局アップデートができずに、次回リプレイス時に追加したい機能を盛り込むという流れになっているかと思われます。
コンテナを利用した場合は、API 連携を意識した集約基盤を作成する必要があります。
調達文書としては
「API 連携をすることで、アップデート対象箇所を迅速に実施できること」
のような文面でも良いかもしれませんが、調達元の方々がどのような集約基盤にすることで、迅速なアップデートができるようになるかは理解しておく必要があります。
こういった観点も普段おつきあいされている業者に確認するのがよろしいですね。
簡単ながらコンテナ利用時のメリットを理解していただけたかと思います。次はデメリットを見ていきましょう!
それでは次にエンタープライズでのコンテナ利用時のデメリットって何になるのでしょうか。
アプリ開発者にとってはまさに夢のような技術となりますが、システム基盤管理者にとっては悩みの種が増える一方です。なぜならば開発者は自分が利用したいライブラリやツールを利用しますので、何を利用しているのかを意識しなければなりません。
そもそも PDCA サイクルを利用する観点でのメリットの一つとして、利用するライブラリやツールを制限することでセキュリティホールを減らすことができることにあります。
コンテナを自由に利用すればするほどライブラリやツールが増え、セキュリティホールが大きくなってしまいますからね。
更にアプリ開発者はネットワークおよびストレージへの関心がほとんどありません。
作成しているアプリがどう通信できてどこにデータを保存するか程度は必要になりますが、それ以上の事をどう管理するか等はシステム基盤管理者が意識する必要があります。
なぜコンテナ技術がパブリッククラウドで進んでいるかと言いますと、この点をクラウド業者様が担っているからです。オンプレミスで環境を用意するためにはクラウド事業社同等の運用が必要になる可能性がありますが、コンテナ専用 HCI といったような製品も登場してきておりますので、オンプレで利用することも十分環境が整いつつありますのでご安心下さいませ!
簡単ながらコンテナ利用時のデメリットを理解していただけたかと思います。
さて、次の内容は何にしましょうかねぇ。
以下のような内容を考えております。
・そのそもコンテナってどういうところで利用されているの?
・コンテナアプリってどうやって作成するの?
・コンテナ基盤ってどうすれば良いの?
コメント欄にご要望・ご意見をいただけましたら、ご要望の多いものから載せていこうと思っております!