セッションの内容と想定参加者の紹介

藤原善基氏(以下、藤原):エーピーコミュニケーションズの藤原善基より「物語から入るCloud Nativeな世界(CNCF Cloud Native Landscape編)」と題したセッションを始めます。よろしくお願いします。

最初に、今日話すことと、話さないことです。話すことはスライドに記載のとおりです。話さないことはCloud Native技術の詳細。また実践的な内容については、本イベントのほかのセッションに譲りたいと思っています。

このセッションの想定参加者ですが、Cloud Nativeな世界線に興味がある方、これからCloud Nativeな世界に入ってくる方、本イベントで視聴するセッション選びに迷われている方です。このセッションが、案内になるような結果になればうれしいです。

このセッションのゴールとしては、自身が興味をもっている領域と、CNCF(Cloud Native Computing Foundation)の活動をマッピングできる。Cloud Nativeな世界に、親しみをもてるようになること、と設定しています。

自己紹介

最初に自己紹介です。改めて、藤原善基と言います。Twitterは@antiberialです。フォローしてもらえれば、私からもフォローバックしたいと思っています。

部署は、クラウド事業部に所属しています。兼務でエンジニアリングメンター室という部署にも所属していて、アウトプットとしての登壇活動やブログの執筆などをしている方のフォロー、メンタリングや、会社のエンジニア文化を明文化していく、醸成していくような会社横断的な活動も行っています。

私はIT業界にくる前、別の業界で働いていた社会人経験が長いです。新卒から5年ほど、物理コンテナの営業をしていました。

このイベントでもコンテナ技術、論理的なものを使っていろいろやっていますが、私の場合は、物理コンテナに荷物を詰め込んで海外から荷物を持ってきたり送ったり、その品質を見たり、スケジュール管理をしたりする営業をやっていました。

ギリシャ育ちで、帰国子女でもあります。そのため、ギリシャ語であるKubernetesやPrometheusに、個人的に親しみをもっています。

右側は大人になってギリシャに行ったときの写真で、朝食からガッツリと食べて飲んで。そしてフェリーでサントリーニという島から、本島のアテネに帰ってきている写真を貼ってあります。

自然言語や文化、雑学が好きで、それが長じて、全国通訳案内士というガイドの国家資格を取ってみたり。物事を調べたり、ガイドするのが好きな人間です。

コミュニティ活動もいろいろやっていて、このイベントの実行委員や、2021年1月にはJuly Tech Festa 2021 winterのプログラム委員などもやっています。気軽に声をかけてもらえればと思っています。

メルマガを読んでブログを書く習慣もあり、Kubernetesや、SRE、DevOpsをテーマにして、3つのメルマガをまとめて日本語でコメントすることを毎週末やっています。

そういった情報を発信している人ともコンタクトを取りたいし、英語も使うようにしていきたいので、平日は英語版のブログも更新しています。

最近だと、ClubhouseというiOSのアプリを使って、月曜日の22時頃、ブログの内容から気になったものをピックアップして参加してくれた方と話をしたり。ほかにも、フリートークをしてみたりしています。

プロローグ

では、ここから物語風に、プロローグから入っていきたいと思います。

「話は遡って、2014年。Googleは、コンテナのオーケストレーションに使用していたBorgという内部プロジェクトをオープンソース化した。

プロジェクトを着地する場所がなかったため、GoogleはThe Linux Foundationと提携してCloud Native Computing Foundation(CNCF)を世に送り出した。これにより、Kubernetesやその他のCloud Native Solutionの開発と、コラボレーションが促進された。

Borgの実装はGoで書き直され、Kubernetesに名前が変更され、はじまりのプロジェクトとしてCNCFに寄贈された。Kubernetesはほんのはじまりに過ぎず、新しいプロジェクトの群れがCNCFに加わり、Kubernetesの機能が拡張されることが、早い段階で明らかになった。」

『The beginner's guide to the CNCF landscape、The history of the CNCF』より、私の拙い訳で書いてみました。こうして新たな時代が始まった。「世はまさにCloud Native時代!」

・・・・・・ちょっとCloud Native時代って言ってみたかっただけです。すみません(笑)。巷でバズワードのように扱われているCloud Nativeについて、その前段、発端となるできごとを、物語のプロローグとして取り扱ってみました。以降、Cloud Nativeな世界について、今出てきたCNCFを軸に触れていきます。

Cloud Nativeとは?

話に出た「Cloud Nativeとは?」です。まず誰が定義しているのかですが、先ほど話に出てきたCNCFのTOC(Technical Oversight Committee)が定義しています。

CNCFは、The Linux Foundation傘下のコミュニティです。The Linux Foundationは複数のコミュニティを運営しており、コミュニティごとにホストしているプロジェクトがあります。本セッションでは、複数のコミュニティが登場します。

Linux Foundationと何気なく呼んでいましたが、ロゴや表記を見る限り、The Linux Foundationと呼ぶほうがいいようなので、このセッション中はそう呼び、資料にも記載しています。一方、Cloud Native Computing Foundationはそのような表記はなく、略称のCNCFと、今後一貫して呼びます。

CNCFではさまざまな資料を出していて、『CNCF Overview 2021』でこれから私が話す部分の多くの部分の数字や見やすい資料をつけているので、よかったら読んでみてください。「A Brief History of the Cloud」の部分など、よく引用されている資料も含まれています。次のスライドも資料から引用しています。

CNCFの構成

まず「CNCFはどんな構成なのか?」というところです。これは、CNCF structureというページから持ってきています。今話に出たTOC、Technical Oversight Committeeがセンターにいて、11人のトップテクニカルアーキテクツがいて、その方々がリードしていると。

横並びの組織として、Governing BoardとEnd User Communityがあり、それぞれ関連する組織が紐づいている構成になっています。

TOCの役割と指針

では、具体的にTOCは何をしているのか? 役割ですが、CNCFの技術的ビジョンの定義と維持をしています。あとプロジェクト関連で、先ほど(スライドの)左側にあった理事会。Governing Board、GBと略されているものによって設定されたCNCFの範囲内で、新しいプロジェクトを承認しています。

また、プロジェクト概念アーキテクチャを作成してプロジェクト調整して、場合によってはプロジェクトを削除したりアーカイブする役割も担っています。

スライドの図では右側にあったエンドユーザーの理事会、End User Boardからフィードバック、ユーザー側のものを受け入れてプロジェクトにマップしていく作業もしています。

最後の1つが、管理下のコンポーネントにおけるインターフェイスの調整です。コードリファレンスの実装や、CNCFプロジェクトに実装される一般的なプラクティスがあれば、それを定義していくテックリードの役割を担っています。

TOCには指針があります。メンバーは11人ですが、選挙で入れ替わったりするため、変わらない指針が必要ということで。これもGitHubに公開されているものですが、今後の説明に非常に有効で、TOCやCNCFの考え方がわかるものなので、引用してみました。

これが、No Kingmakers & One Size Does Not Fit Allです。これには多くの文言がありますが、一部抜粋して訳したものです。「TOCは広く使用される可能性のあるプロジェクトを選択するが、各カテゴリーの勝者を選択するわけではない。類似または競合するプロジェクトは重複の理由で除外されない。」

つまり、いろいろなカテゴリーでCNCFがホスティングしているプロジェクトがありますが、特定のこれが優秀で、これをみんなが使うほうがよい、とキングを選んだり、作っていくような組織ではなくて。

エンドユーザー側の多くの異なる組織のサイズ、ユースケース、ニーズに応じた選択ができるようにすることにしています。1つのサイズ、ここではプロジェクトやプロダクトに、すべてを当てはめることはしない方針になっています。

TOCが定義している3つの「Cloud Nativeとは」

お待たせしました。「Cloud Nativeとは?」…… TOCが出している定義です。日本語訳もリンクにあるので、見てください。これを3つに分けました。便宜上、1回では多いので分けています。

1つ目です。クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築、および実行するための能力を組織にもたらします。

このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これが1つ目です。

2つ目が、先ほど言ったコンテナやサービスメッシュなどの手法。これらの手法により回復性、管理力、および可観測性のある疎結合システムが実現します。これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を、最小限の労力で頻繁、かつ予測どおりに行えます。これが2つ目です。

3つ目です。これはどちらかというとCNCFの在り方になると思います。「CNCFはオープンソースでベンダー中立プロジェクトのエコシステムを育成・維持して、このパラダイムの採用を促進したいと考えています。私たちは最先端のパターンを民主化し、これらのイノベーションを誰もが利用できるようにします。」という姿勢をCloud Nativeとで定義しています。

いろいろなものが書いてあって、なかなかイメージが捉えづらいなと思ったので、人に説明する際に引用しているものがあります。『「クラウドネイティブ」はどう誤解されているか』というWeb記事の中から、私は黒線を引いているところを抜粋しています。

定義は先ほど読み上げたものですが、「クラウドなどを使う際のベストプラクティスを文言化したもの」と捉えるとしっくりくるので、こういう捉え方をしています。

また、どうやってスケーラブルなアプリケーションを作れるようにしていくかがテーマです。これが捉え方としてもちやすい。

エンジニアとしてCloud Nativeとどう向き合うか

では、エンジニアとしてCloud Nativeとどう向き合っていくか? です。率直に、私は(スライドの)下に書いてある3つの疑問が浮かびました。まず、なにから手を付けていけばいいのか。そして、ざっと調べていくだけでもキーワードが多く、アップデート情報を追うだけでもすごく大変だと。

イラストのイメージどおり、砂漠のど真ん中にいるような気持ちになります。果ての無い旅に出ているような、やってもやってもキリがないような気持ちになるのは正直ありました。

そんなとき、CNCFが道標となるCloud Native Landscapeを用意していることを知って。これはいいなと思ったので、今回のセッションではこれを軸にいろいろなガイドをしていければと思っています。

(次回につづく)