Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

我々はなぜKubernetesを使うのか――クラウドネイティブ時代のアプリケーション開発【デブサミ2019】

【14-A-4】 Cloud Native時代における Docker / Kubernetes による開発

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

 昨今におけるクラウドテクノロジーの隆盛と呼応するように、「クラウドネイティブ」や「マイクロサービス」といったIT業界の流行語が生まれてきた。その中心にあるといってもよいのがコンテナ型仮想化と、そのオーケストレーションエンジンであるKubernetesである。なぜクラウドネイティブ、そしてマイクロサービスといった流行語が生まれてきたのか。そして、なぜその文脈でKubernetesが出てきて、どのような役割を果たしているのか。『Kubernetes完全ガイド』の著者、青山真也氏による講演で、Kubernetesとその周辺技術について改めて学びなおそう。

目次

クラウドネイティブとは? その定義と、流行の背景

 オンプレミスとは比較にならない、柔軟な拡張性、細分化した課金モデル、迅速な進化。そんな特徴を持つクラウドの登場により、インフラ環境はその概念から大きく変化した。そして、その環境に載せる上で最適なアプリケーション特性について呼称する「クラウドネイティブ」は、昨今の流行語ともいえる重要なキーワードだろう。サイバーエージェントの青山真也氏は、Kubernetes解説に欠かせない前段として、まずはその言葉についての説明から始めた。

株式会社サイバーエージェント アドテク本部 Infrastructure Engineer 青山真也氏。「CloudNative Days Tokyo」のCo-chairを務めるなど、技術コミュニティ活動にも従事する
株式会社サイバーエージェント アドテク本部 Infrastructure Engineer 青山真也氏。「CloudNative Days Tokyo」のCo-chairを務めるなど、技術コミュニティ活動にも従事する

 クラウドネイティブの定義は、CNCF[1]の提唱する「CNCF Cloud Native Definition」に詳しいが、青山氏は下記のスライドの通り、5要素に抄訳して説明した。

スライドP.9:CNCFによる「クラウドネイティブ」の定義(青山氏の抄訳)
スライドP.9:CNCFによる「クラウドネイティブ」の定義(青山氏の抄訳)

[1] CNCF:Cloud Native Computing Foundationの略。クラウドネイティブに関連するテクノロジーに対し、オープンソースかつベンダーフリーなプロジェクトの育成・維持を目的とする団体。KubernetesもCNCFがホストするプロジェクトの代表であったが、2018年3月に「卒業プロジェクト」に認定された

 KubernetesはCNCFがホストするアプリケーションの多くで連携先のツールとなっており、いわばCNCFがホストするプロダクト群の中心と言える存在に位置付けられている。そのため、クラウドネイティブという考え方を語るうえで欠かせない存在であるという。

スライドP.10:CNCFがホストするプロジェクトは卒業済を含め22個(記事執筆時現在)あるが、その多くでKubernetesの使用が前提とされている
スライドP.10:CNCFがホストするプロジェクトは卒業済を含め22個(記事執筆時現在)あるが、その多くでKubernetesの使用が前提とされている

マイクロサービス――クラウドネイティブに適したアーキテクチャ

 クラウドネイティブの特徴を活かすには、アプリケーションそのもののアーキテクチャがそれに適合していなければならない。そこで出てくるのが「マイクロサービス」だ。対比として語られる「モノリシック(モノリス)」では、役割やサブシステムごとにVM(仮想マシン)を分けるのが一般的だが、マイクロサービスではさらに細かい機能単位で分け、数珠繋ぎにするという構造をとる。

スライドP.14:マイクロサービスの機能分割例。書籍情報管理のサイトで言えば、書籍詳細とレビューやレートなどの細かい単位で分割し、数珠つなぎにする例が示されている
スライドP.14:マイクロサービスの機能分割例。書籍情報管理のサイトで言えば、書籍詳細とレビューやレートなどの細かい単位で分割し、数珠つなぎにする例が示されている

 マイクロサービス化し、サービス自体が分離することによるメリットは多い。言語などの技術選定はサービスごとに可能となり、デプロイやスケーリングも独立して行える。障害発生時には、それを全体波及させることなく縮退稼働することもできるようになる。また、機能同様個々のチームの開発作業が独立するため、大規模開発などに適しているという点も大きな利点だ。そしてこれらの特徴は、先に挙げたクラウドネイティブの定義の一部である「疎結合なシステム」「復元力がある」「管理がしやすい」という3要素を満たしている。

スライドP.15:マイクロサービスが持つ利点の多くは、これまでの大規模開発における課題を解消する

スライドP.15:マイクロサービスが持つ利点の多くは、これまでの大規模開発における課題を解消する

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 西野 大介(SOMPOホールディングス株式会社)(ニシノ ダイスケ)

     SOMPOホールディングス株式会社デジタル戦略部(SOMPO Digital Lab)勤務。損保ジャパン日本興亜グループにおける先進技術の研究開発を担当。過去には基幹システムの開発にも従事し、SoR/SoE双方の開発において幅広い経験を持つ。本業以外では、CodeZineの連載をはじめ、国内/海外...

バックナンバー

連載:【デブサミ2019】セッションレポート

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5