
コーン
|
先日は、有難うございました。
|
|
|

ティナ |
前回は、コンテナが求められている背景を話したね
|

コーン
|
ビジネススピードの加速に合わせてアプリ開発スピードも加速してるって話でした。 |
|
|

ティナ |
そうそう、復習すると・・・
コンテナのWhy:コンテナが流行ってる背景とは?
・市場変化の加速し、ビジネススピードも加速
・加速するビジネススピードに合わせたアプリの仕組みとは?
⇒それがマイクロサービスアーキテクチャ
・アプリ開発スピードを支える最適なインフラとは?
⇒それが、コンテナ(マイクロサービスと相性抜群)
|

コーン
|
う~ん。コンテナの背景は何となく分かったんですけど、そもそもコンテナって? |
|
|

ティナ |
よしよし!!コーン君も悩んでいるのね。今回はコンテナのWhat。コンテナそのものについて説明をしていくね。 |

コーン
|
さすが先輩!是非お願いします。 |
|
|

ティナ |
コーン君は、コンテナに馴染みがないので、いきなり説明されても理解が難しいかも・・まずは、コンテナって名前の由来である、物流や貨物船で使われているコンテナについて考えてみようか?
|

コーン
|
はい |
 |
|
|

ティナ
|
もし、貨物船でコンテナがなかったらどうなると思う? |

コーン
|
う~ん。いきなり質問ですか?そうだな。荷物の大きさや形がバラバラなので、積み上げや積み下ろしが大変そう |
|
|

ティナ
|
その通り。確かに荷物がバラバラだと大変だね。そこで「20世紀最大の発明」の一つと言われる物流におけるコンテナが誕生したの。
ばらばらの荷物を規格化したコンテナに格納することで、積み上げ積み下ろし作業が容易になり、更にはコンテナ毎に別々の場所に輸送するのが容易になったのよ。
|

コーン
|
規格統一することで、持ち運びが楽なったってことですか? |
|
|

ティナ
|
そう。ITインフラであるコンテナも同じように規格統一化し、持ち運びしやくするという理由で生れたんだよ。つまりは、「持ち運びできる入れ物」として、アプリの実行環境をひとまとめにしたもの・・・それが「コンテナ」なのよ。 |

コーン
|
コンテナ化すると持ち運びが容易になるんですね。 |
|
|

ティナ
|
そう、その通り。コンテナ化によりアプリ実行環境の持ち運びやすさ、別の言い方をすると可搬性が高まったので、様々なメリットをもたらしているのよ。 |

コーン
|
どんなメリットがあるの? |
|
|

ティナ
|
高い可搬性のメリットの一つ目としては、アプリのテスト環境から本番環境への移行のしやすさ。現在多くのシステムはVM環境が多いよね。
|

コーン
|
はい。うちの会社のシステムも殆どVM環境で動いてます。 |
|
|

ティナ
|
VM基盤だと、テスト環境から本番環境に移行する際に、インフラ環境の差異が出てしまう事がよくあるので、アプリの一部を修正したり、インフラ側の調整が必要だったりして、結構な工数がかかってしまう課題があるのよ。 |

コーン
|
確かに、うちの会社でもVMの払い出しをもっと早くできないか?って検討してたな。 |
|
|

ティナ
|
そうね。VMとコンテナを比較するとこんな感じ
|
 |

コーン
|
ふむふむ |
|
|

ティナ
|
分かりやすく特徴を説明するね。
■ポータビリティ(可搬性)が高い。これはさきほど言った通りで以下のような特徴ね
・テストから本番環境移行が容易
・パブクラ(AWS、Azure、Google・・・)でもオンプレでも、インフラ環境によらず動作
■Immutable(同じ環境を簡単に複製)。これは使い捨てできる環境をすぐに用意できるって事。
具体的には以下の特徴ね
・コマンド一つでコンテナの作成&消去が可能
・設定ファイルから何度も同じコンテナを作成可能
・インフラをコード化できるので構成管理の自動化が容易
■低負荷、高集約、高速起動。これは絵をみてわかる通りかな
・コンテナは、ゲストOSやハードウェアエミュレートが不要なのでとても軽量
・軽量が故にインフラ環境への負荷はVM型より低負荷
・軽量が故に高速起動。数秒程度で起動
・軽量が故に同じインフラ環境であればVM型より高集約
|

コーン
|
いや~いっぱい・・・だね |
|
|

ティナ
|
そうね。まずは、コンテナの特徴として3つを覚えるよ良いかもね。
簡単&速い
Any Infra
拡張性
|
|

コーン
|
了解っす。わかりやすい!!コンテナには多くのメリットがあるんだね。
でも何か課題はないのですか?
|
|
|

ティナ
|
良い気づきね!!
コンテナには多くのメリットがありますが、複数のサーバでコンテナを運用しようとすると様々な課題が出てくるの。
例えば・・・
複数のホスト跨ぐコンテナ間の連携や管理は?
コンテナの死活監視や冗長性は?
コンテナのビルドやデプロイの自動化は?
外部からのコンテナアクセス制御は?
複数ユーザで利用するための認証・認可は?
コンテナは揮発性なので・・・データの永続性は?
|

コーン
|
コンテナにも様々な課題があるんだね。 |
|
|

ティナ
|
この運用課題を解決してくれるのが、「オーケストレーションツール」
|

コーン
|
コンテナ全体の運用を管理するためのツールだね。 |
|
|

ティナ
|
オーケストレーションツールには、いくつかあるけど、現在のデファクトは
「Kubernetes」ね。
|

コーン
|
Kubernets・・クバネティスっていうんだね。 |
|
|

ティナ
|
そう。Kubenetesの主な機能は、
①コンテナの死活監視
コンテナが停止してないかを監視
②複数のコンテナホスト管理
コンテナがどのサーバに配備されているかを管理
③仮想ネットワーク管理
複数台のサーバにまたがって数千、数万のコンテナ向け仮想ネットワークにも対応
④オートスケーリング
コンテナの負荷状況により、自動的にコンテナのスケールイン・スケールアウト
⑤コンテナの最適配備(スケジューリング)
コンテナを配備する際に、サーバの負荷状況等を元に自動的に最適な配置(スケジューリング)
⑥セルフヒーリング
サーバ等の障害時に正常系サーバでコンテナの自動再起動
|

コーン
|
う~ん。ざっくり理解!!コンテナを実際に運用するには、Kubernetesが必須って事だね。
|
|
|

ティナ
|
そうそう。それで良いのよ。まずはざっくり理解でね。
|

コーン
|
あざーす。 |
|
|

ティナ
|
では、本日のまとめ。
第1回では、コンテナのWhy?求めれらる背景だったね
今回の第2回は、コンテナのWhat、そもそもコンテナとは?だったね。
■コンテナとは?
・ポータビリティ(可搬性)が高い
・Immutable(同じ環境を簡単に複製
・低負荷、高集約、高速起動
■コンテナの特徴とは?
・簡単&速い
・Any Infra
・拡張性
更に更に・・・コンテナ運用を実現するKubernetsって?
■Kubernetes
・コンテナの死活監視
・複数のコンテナホスト管理
・仮想ネットワーク管理
・オートスケーリング
・コンテナの最適配備(スケジューリング)
・セルフヒーリング
|