我々はなぜKubernetesを使うのか――クラウドネイティブ時代のアプリケーション開発【デブサミ2019】
【14-A-4】 Cloud Native時代における Docker / Kubernetes による開発
昨今におけるクラウドテクノロジーの隆盛と呼応するように、「クラウドネイティブ」や「マイクロサービス」といったIT業界の流行語が生まれてきた。その中心にあるといってもよいのがコンテナ型仮想化と、そのオーケストレーションエンジンであるKubernetesである。なぜクラウドネイティブ、そしてマイクロサービスといった流行語が生まれてきたのか。そして、なぜその文脈でKubernetesが出てきて、どのような役割を果たしているのか。『Kubernetes完全ガイド』の著者、青山真也氏による講演で、Kubernetesとその周辺技術について改めて学びなおそう。
クラウドネイティブとは? その定義と、流行の背景
オンプレミスとは比較にならない、柔軟な拡張性、細分化した課金モデル、迅速な進化。そんな特徴を持つクラウドの登場により、インフラ環境はその概念から大きく変化した。そして、その環境に載せる上で最適なアプリケーション特性について呼称する「クラウドネイティブ」は、昨今の流行語ともいえる重要なキーワードだろう。サイバーエージェントの青山真也氏は、Kubernetes解説に欠かせない前段として、まずはその言葉についての説明から始めた。
クラウドネイティブの定義は、CNCF[1]の提唱する「CNCF Cloud Native Definition」に詳しいが、青山氏は下記のスライドの通り、5要素に抄訳して説明した。
[1] CNCF:Cloud Native Computing Foundationの略。クラウドネイティブに関連するテクノロジーに対し、オープンソースかつベンダーフリーなプロジェクトの育成・維持を目的とする団体。KubernetesもCNCFがホストするプロジェクトの代表であったが、2018年3月に「卒業プロジェクト」に認定された
KubernetesはCNCFがホストするアプリケーションの多くで連携先のツールとなっており、いわばCNCFがホストするプロダクト群の中心と言える存在に位置付けられている。そのため、クラウドネイティブという考え方を語るうえで欠かせない存在であるという。
マイクロサービス――クラウドネイティブに適したアーキテクチャ
クラウドネイティブの特徴を活かすには、アプリケーションそのもののアーキテクチャがそれに適合していなければならない。そこで出てくるのが「マイクロサービス」だ。対比として語られる「モノリシック(モノリス)」では、役割やサブシステムごとにVM(仮想マシン)を分けるのが一般的だが、マイクロサービスではさらに細かい機能単位で分け、数珠繋ぎにするという構造をとる。
マイクロサービス化し、サービス自体が分離することによるメリットは多い。言語などの技術選定はサービスごとに可能となり、デプロイやスケーリングも独立して行える。障害発生時には、それを全体波及させることなく縮退稼働することもできるようになる。また、機能同様個々のチームの開発作業が独立するため、大規模開発などに適しているという点も大きな利点だ。そしてこれらの特徴は、先に挙げたクラウドネイティブの定義の一部である「疎結合なシステム」「復元力がある」「管理がしやすい」という3要素を満たしている。
会員登録無料すると、続きをお読みいただけます
この記事は参考になりましたか?
- この記事の著者
-
西野 大介(SOMPOホールディングス株式会社)(ニシノ ダイスケ)
SOMPOホールディングス株式会社デジタル戦略部(SOMPO Digital Lab)勤務。損保ジャパン日本興亜グループにおける先進技術の研究開発を担当。過去には基幹システムの開発にも従事し、SoR/SoE双方の開発において幅広い経験を持つ。本業以外では、CodeZineの連載をはじめ、国内/海外の各種カンファレンスへの登壇や企業向けの講演にてテクノロジー情報を幅広く提供している。主な登壇実績:IBM THINK(米ラスベガス)、Java Day Tokyo、IBM THINK Ja...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

