コンテナとマイクロサービス - Docker・Kubernetes

コンテナ (Docker)・Kubernetes・マイクロサービス・サーバレス・クラウドネイティブを、お弁当や厨房のたとえでやさしく整理。VMとの違いや似た用語の使い分けまで一気に理解。

編集・検証: ITパスポートスタディ編集部 公式情報: IPA ITパスポート試験公式ページ 制作・検証方針

クラウドの世界で必ず出てくる「コンテナ (Docker)」「オーケストレーション (Kubernetes)」「マイクロサービス」。難しそうな横文字を、お弁当やレストランのたとえで一気にほどいていきます。仮想マシンとの違い、似た用語の整理、試験のひっかけポイントまでまとめてチェックしましょう。

コンテナと仮想マシンの違い

星見 めい(普段) 星見 めい

Docker とか Kubernetes とか、IT のニュースでめっちゃ見るんだけど、結局あれ何なの? 名前が強そうすぎて近寄れないんだよね。

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

ふふ、気持ちはわかるわ。
まずコンテナから。
アプリ本体と、それが動くのに必要なライブラリや設定を、まるごと一つの箱に詰める技術なの。

紫垣 こはる 先生(普段) 紫垣 こはる 先生

その箱はどのパソコンやサーバーに持っていっても中身がそのまま動く。
お弁当箱に主菜・副菜・ごはんを詰めて、家でも学校でも同じものが食べられる、そんなイメージね。
その箱を作って動かす道具の定番がDockerよ。

星見 めい(笑顔) 星見 めい

あー、お弁当か! 『私のPCだと動くのに、なんでそっちだと動かないの?』っていうアレが起きないってことだよね。

蜂谷 まこと(普段) 蜂谷 まこと

まさにそれです。
『自分の環境では動いた』問題を防げるのがコンテナの大きな価値ですね。
補足すると、従来の仮想マシン(VM) はゲストOSを丸ごと積むので重いのに対し、コンテナはホストのOSカーネルを共有します。
だから軽くて起動も速いんです。

小夜川 ほのか(普段) 小夜川 ほのか

ふえぇ…VM は OS が入ってて、コンテナは OS を借りる、ってことですかぁ? じゃあ二つはどう使い分けるんですかぁ?

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

いい質問よ、ほのかさん。
ざっくり覚え方はね、『違うOSを動かしたいなら VM、同じOSでアプリをたくさん軽く動かしたいならコンテナ』。
一軒家(VM)とシェアハウス(コンテナ)の違い、と言ってもいいわ。

蜂谷 まこと(普段) 蜂谷 まこと

対比で整理すると、VM は分離が強くて重い、コンテナは分離はそこそこで軽い。
数値感でいうと VM の起動は分単位、コンテナは秒単位、というイメージで覚えると差が掴みやすいですよ。

Kubernetesによるコンテナ管理

星見 めい(笑い) 星見 めい

なるほどね。
で、Kubernetes はそのどこに出てくるわけ? 名前長すぎてもう一人だけボス感あるんだけど。

蜂谷 まこと(普段) 蜂谷 まこと

ふふ、ボスで合っていますよ。
Kubernetes(k8s) は、たくさんのコンテナをまとめて指揮する道具です。
これをコンテナオーケストレーションと呼びます。

小夜川 ほのか(普段) 小夜川 ほのか

おーけすとれーしょん…オーケストラの指揮者さん、みたいな感じですかぁ?

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

そのたとえ、とても上手よ、ほのかさん。
Docker が一つひとつの楽器(コンテナ)だとしたら、Kubernetes は何百もの楽器をまとめて指揮する指揮者。
一台だけなら手で管理できても、数百〜数千になると指揮者がいないと回らないのよ。

紫垣 こはる 先生(普段) 紫垣 こはる 先生

k8s の主な仕事は四つ。
自動スケーリング、ロードバランシング、自動復旧、そして無停止で更新するローリングアップデート。
語呂で『増やす・分ける・直す・入れ替える』と覚えると楽よ。

モノリスとマイクロサービス

星見 めい(笑顔) 星見 めい

増やす・分ける・直す・入れ替える! リズムいいじゃん、これは覚えられるわ。
じゃあ次、マイクロサービスってのは?

蜂谷 まこと(普段) 蜂谷 まこと

マイクロサービスは、巨大な一枚岩のアプリを、小さな独立サービスの集まりに分ける作り方です。
対になる従来型がモノリシックアーキテクチャ、いわゆるモノリスですね。

小夜川 ほのか(普段) 小夜川 ほのか

モノリスは…大きな一枚板、なのぉ? なんだか想像しづらいですぅ。

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

じゃあレストランで考えましょう。
モノリスは一人のシェフが前菜もメインもデザートも全部一人で作る厨房。
マイクロサービスは、前菜担当・メイン担当・デザート担当が別々にいて、それぞれ独立して動く厨房。
どちらにも良し悪しがあるのよ。

蜂谷 まこと(普段) 蜂谷 まこと

メリットは三つ。
第一に独立性で、一つのサービスが倒れても他に波及しにくい。
第二に技術選択の自由で、サービスごとに最適な言語やデータベースを選べる。
第三に必要な部分だけ増強できる柔軟さです。
一方デメリットは、分散するぶん全体が複雑になり、サービス間通信のオーバーヘッドや運用負荷が増える点ですね。

星見 めい(普段) 星見 めい

メイン担当が倒れても前菜は出せる、けど連携が大変、ってことか。
マジで一長一短だね。
じゃあ各担当はどうやってやり取りすんの?

蜂谷 まこと(普段) 蜂谷 まこと

全体の入口にAPIゲートウェイを置き、そこから各サービスへ案内します。
サービス間の会話には、HTTPベースで扱いやすいREST APIや、高速なgRPCが使われますね。

星見 めい(笑い) 星見 めい

レストランの『ご案内はこちら』のホールスタッフが APIゲートウェイってことね。
なんか急に身近になってきた。

サーバレスとクラウドネイティブ

星見 めい(普段) 星見 めい

ところでさ、サーバレスってのも聞くんだけど、それもこの仲間なの?

紫垣 こはる 先生(普段) 紫垣 こはる 先生

近いけれど別物よ。
サーバレスは、サーバの面倒をクラウド事業者に丸ごと任せて、処理(関数)が必要なときだけ動かす形態。
代表例がAWS Lambdaね。

小夜川 ほのか(びっくり) 小夜川 ほのか

サーバが無い…わけじゃないんですよねぇ? 名前にだまされそうですぅ。

蜂谷 まこと(普段) 蜂谷 まこと

鋭いですね、ほのかさん。
サーバが消えるのではなく、利用者がサーバを意識しなくてよい、が正しい意味です。
これは試験のひっかけポイントなので要注意ですよ。

小夜川 ほのか(しょんぼり) 小夜川 ほのか

似た用語が多くて、頭がこんがらがってきましたぁ…どう整理したらいいのぉ?

蜂谷 まこと(笑顔) 蜂谷 まこと

では一本の軸で並べましょう。
粒度の大きい順に『モノリス → マイクロサービス → サーバレス』。
右に行くほど一つの単位が小さくなり、運用の責任もクラウド側に寄っていきます。
この矢印を覚えれば一気にスッキリしますよ。

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

そして、これらをまとめて最大限活かす設計思想をクラウドネイティブと呼ぶの。
推進役の団体がCNCFね。
コンテナもマイクロサービスもサーバレスも、この大きな傘の下にいると思えばいいわ。

星見 めい(笑い) 星見 めい

コンテナはお弁当、Kubernetes は指揮者、マイクロサービスは担当別の厨房、サーバレスは丸投げ。
全部つながった! クラウドネイティブ、覚えたよ先生!

紫垣 こはる 先生(笑顔) 紫垣 こはる 先生

ふふ、見事なまとめね。
最後に一言で締めるわ。
『軽い箱を作るのがコンテナ、たくさんの箱を指揮するのが Kubernetes、アプリを小分けにするのがマイクロサービス』。
この三本柱を押さえれば、技術要素のこの分野は怖くないわよ。

確認クイズ

大量のコンテナを束ねて、自動スケーリングやロードバランシング・自動復旧などを行うコンテナオーケストレーションツールはどれか。

  1. Docker
  2. Kubernetes
  3. Terraform
  4. Ansible
こたえを見る

正解: 2. Kubernetes

正解はKubernetes (k8s)。大量のコンテナをまとめ、自動スケーリング・ロードバランシング・自動復旧・ローリングアップデートを行うオーケストレーションツールです。Dockerはコンテナを作って動かす実行ツールで、束ねる役ではありません。Terraformはインフラ構成をコードで管理するIaCツール、Ansibleはサーバの構成管理・自動化ツールで、いずれもコンテナの指揮役ではない点が誤りです。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。