SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

 昨今におけるクラウドテクノロジーの隆盛と呼応するように、「クラウドネイティブ」や「マイクロサービス」といった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:マイクロサービスが持つ利点の多くは、これまでの大規模開発における課題を解消する

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
サービスメッシュ―マイクロサービスを観測するには

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2019】セッションレポート 連載記事一覧

もっと読む

この記事の著者

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

 SOMPOホールディングス株式会社デジタル戦略部(SOMPO Digital Lab)勤務。損保ジャパン日本興亜グループにおける先進技術の研究開発を担当。過去には基幹システムの開発にも従事し、SoR/SoE双方の開発において幅広い経験を持つ。本業以外では、CodeZineの連載をはじめ、国内/海外の各種カンファレンスへの登壇や企業向けの講演にてテクノロジー情報を幅広く提供している。主な登壇実績:IBM THINK(米ラスベガス)、Java Day Tokyo、IBM THINK Ja...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11556 2019/07/18 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング