クラウドネイティブとは? その定義と、流行の背景
オンプレミスとは比較にならない、柔軟な拡張性、細分化した課金モデル、迅速な進化。そんな特徴を持つクラウドの登場により、インフラ環境はその概念から大きく変化した。そして、その環境に載せる上で最適なアプリケーション特性について呼称する「クラウドネイティブ」は、昨今の流行語ともいえる重要なキーワードだろう。サイバーエージェントの青山真也氏は、Kubernetes解説に欠かせない前段として、まずはその言葉についての説明から始めた。
クラウドネイティブの定義は、CNCF[1]の提唱する「CNCF Cloud Native Definition」に詳しいが、青山氏は下記のスライドの通り、5要素に抄訳して説明した。
[1] CNCF:Cloud Native Computing Foundationの略。クラウドネイティブに関連するテクノロジーに対し、オープンソースかつベンダーフリーなプロジェクトの育成・維持を目的とする団体。KubernetesもCNCFがホストするプロジェクトの代表であったが、2018年3月に「卒業プロジェクト」に認定された
KubernetesはCNCFがホストするアプリケーションの多くで連携先のツールとなっており、いわばCNCFがホストするプロダクト群の中心と言える存在に位置付けられている。そのため、クラウドネイティブという考え方を語るうえで欠かせない存在であるという。
マイクロサービス――クラウドネイティブに適したアーキテクチャ
クラウドネイティブの特徴を活かすには、アプリケーションそのもののアーキテクチャがそれに適合していなければならない。そこで出てくるのが「マイクロサービス」だ。対比として語られる「モノリシック(モノリス)」では、役割やサブシステムごとにVM(仮想マシン)を分けるのが一般的だが、マイクロサービスではさらに細かい機能単位で分け、数珠繋ぎにするという構造をとる。
マイクロサービス化し、サービス自体が分離することによるメリットは多い。言語などの技術選定はサービスごとに可能となり、デプロイやスケーリングも独立して行える。障害発生時には、それを全体波及させることなく縮退稼働することもできるようになる。また、機能同様個々のチームの開発作業が独立するため、大規模開発などに適しているという点も大きな利点だ。そしてこれらの特徴は、先に挙げたクラウドネイティブの定義の一部である「疎結合なシステム」「復元力がある」「管理がしやすい」という3要素を満たしている。