Cloud Native Ecosystemの成熟度から見る2021年の動向

# 記事を書いたきっかけとお詫び
- Kubernetesとそのエコシステムが実に幅広く、知れば知るほど何もわからなくなってしまいました
- Kubernetes自体は使用してみて1年弱ですが、今後何をどこまで深堀りしていくか取捨選択が必要になってきたため、成熟度の観点とトレンドを基に2021年に何をしようか考えてみることにした
- 特にCNCF自体も宣言している通りプロジェクトの統廃合も進む年になるので、少し俯瞰して考えてみる
- 余談として、コミュニティとの関わりなど個人的な期待を備忘的に残すことにした

**※普段アウトプットが少ないにもかかわらず初めてAdvent Calendarを書くため、大きなテーマを取り上げてしまったことを反省しています。こんなこと考えている人もいるんだな、くらいの温度感で読んでいただけるとよきです。同じような境遇の方などの参考に少しでもなれば幸いです。**



# Kubernetesとクラウドネイティブの現状

- **KubeConでもKubernetes自体のアップデートより、CNCF Landscapeを中心とした周辺技術の活性化の方が注目されてきた**
- 一**方で、エンタープライズにおいてはKubernetesやDockerは「VMからコンテナ化して軽量化」という文脈で語られることが未だ少なくない印象で、クラウドネイティブ化という大きなパラダイムシフトの観点が欠けているケースが散見される。今まさに各社では文化や意識の改革を迫られ、キャズムが発生している状態である。**
- **クラウドネイティブエコシステムについて、何をどの程度深堀すべきかは未だ流動的な状態である。**

## Kubernetesとキャズム越え

技術採用のライフサイクル(Technology Adaption Lifecycle)の図でいうと、Kubernetesはキャズムを越えるか、超えないかというステータスであるという意見が昨年ごろから散見された。

越えたか越えてないかはさほど重要でなく、現状のトレンドを見る限り多くの人がKubernetesを活用していくことに対して否定的な意見は多くない状況かと思う。

![https://miro.medium.com/max/700/1*JzEpa6aK92q5KTyJGYDn_g.png](https://miro.medium.com/max/700/1*JzEpa6aK92q5KTyJGYDn_g.png)

参考: [https://medium.com/@shivayogiks/what-is-technology-adoption-life-cycle-and-chasm-e07084e7991f](https://medium.com/@shivayogiks/what-is-technology-adoption-life-cycle-and-chasm-e07084e7991f)

上記とは別にCNCFもMaturity Levels(成熟度合い)を定義しており、CNCF ProjectとしてIncubatingからGraduatedになったものはキャズムを越えていると定義している。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/40cc9cd8-6f91-d416-0e93-287673d44952.png)


参考: [https://www.cncf.io/projects/](https://www.cncf.io/projects/)

## KubernetesとEcosystemに関するキャズム

### CNCF Landscapeの変遷

KubernetesのEcosystemは、Cloud NativeなプロダクトであるCNCF Lanscapeとしてある程度表現されていると捉えられる。

Cloud Nativeなプロジェクトを記載したCNCF Landscapeは最早豆粒のようなものしか見えない程度にまで成長し、全てのカテゴリで新しい製品が作り出され続けている。

この中でも特に、成熟度が高いGraduatedなプロジェクトの変遷をみてみる。

![https://landscape.cncf.io/images/landscape.png](https://landscape.cncf.io/images/landscape.png)

## CNCF Graduated Projects

- 2020/12/4現在、13のProjectがGraduatedとなっている。

![Screen Shot 2020-11-29 at 14.29.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/81daf6ce-7825-8998-d5b1-bf121f9761a8.png)

参考: [https://www.cncf.io/projects/](https://www.cncf.io/projects/)

### Graduated Project認定時期

この3年弱でGraduatedとなったプロジェクトを時系列でまとめてみた。

OPA, CRI-Oに関しては、近々Graduateするとのことだったため時期未定で追加した。

参考: [https://github.com/cncf/toc/projects](https://github.com/cncf/toc/projects)

![Untitled 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/f4353dea-5342-1d26-66f5-a3fce0536aca.png)

### 2020年以前にGraduatedとなった9 Projects

- 2020以前にGraduatedになった9 Project

    2018/03/06 kubernetes

    [https://www.cncf.io/blog/2018/03/06/kubernetes-first-cncf-project-graduate/](https://www.cncf.io/blog/2018/03/06/kubernetes-first-cncf-project-graduate/)

    2018/08/09 prometheus

    [https://www.cncf.io/announcements/2018/08/09/prometheus-graduates/](https://www.cncf.io/announcements/2018/08/09/prometheus-graduates/)

    2018/11/28 envoy

    [https://www.cncf.io/announcements/2018/11/28/cncf-announces-envoy-graduation/](https://www.cncf.io/announcements/2018/11/28/cncf-announces-envoy-graduation/)

    2019/1/24 coredns

    [https://www.cncf.io/announcements/2019/01/24/coredns-graduation/](https://www.cncf.io/announcements/2019/01/24/coredns-graduation/)

    2019/2/28 containerd

    [https://www.cncf.io/announcements/2019/02/28/cncf-announces-containerd-graduation/](https://www.cncf.io/announcements/2019/02/28/cncf-announces-containerd-graduation/)

    2019/04/11 fluentd

    [https://www.cncf.io/announcements/2019/04/11/cncf-announces-fluentd-graduation/](https://www.cncf.io/announcements/2019/04/11/cncf-announces-fluentd-graduation/)

    2019/10/31 jaeger

    [https://www.cncf.io/announcements/2019/10/31/cloud-native-computing-foundation-announces-jaeger-graduation/](https://www.cncf.io/announcements/2019/10/31/cloud-native-computing-foundation-announces-jaeger-graduation/)

    2019/11/5 vitess

    [https://www.cncf.io/announcements/2019/11/05/cloud-native-computing-foundation-announces-vitess-graduation/](https://www.cncf.io/announcements/2019/11/05/cloud-native-computing-foundation-announces-vitess-graduation/)

    2019/12/18 tuf

    [https://www.cncf.io/announcements/2019/12/18/cloud-native-computing-foundation-announces-tuf-graduation/](https://www.cncf.io/announcements/2019/12/18/cloud-native-computing-foundation-announces-tuf-graduation/)

### 2020年にGraduatedとなった5 Projects

- 2020年にGraduatedとなった5 Projects

    ## Helm - Packaging Manager

    2020/4/30 

    ![Untitled 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/8965c720-85c6-75a9-f45b-c0057532e662.png)


    ## Harbor - Cloud native registry

    2020/6/23

    ![Untitled 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/604d720b-85dd-79d1-7cfd-76e4f2a4812e.png)


    ## TiKV - Cloud native key-value database

    2020/9/30

    ![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/9622956f-5f60-a068-d262-246be570a04d.png)


    ## Rook - Cloud native storage tool

    2020/10/7

    ![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/49d4b8b3-2a9f-4b6c-5487-b2da046543e5.png)


    ## etcd - distributed, reliable key-value store

    2020/11/24

    ![Untitled 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/2e1a03d8-3477-f38e-99af-c4649d3876f0.png)


## 標準化やコンパティビリティ

Kubernetesのエコシステムは様々な標準化によって支えられていて、CRI, CNI, CSI, SMI, OpenTelemetryなどがある。

標準化されたインタフェースを把握することで枝葉の部分の各プロダクトを厳密に理解しなくてはよいため、興味の対象を絞ることができる。もちろん運用をする場合はさらに詳しく見ていく必要はあることは間違いない。

一方でここであげているインタフェースに関してもあくまで一部でしかないが、これらを体系的にまとめた資料などは見つけられていない。

![Untitled 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94861/69f0d27f-93d7-2987-9879-335323983fe8.png)


また、運用のトイルを減らすべく、Kubernetes Operatorも活用例が増えてきている。

Operator作成に用いるツールに関してもoperator-sdk, kubebuilderがあったが、2020/7に実質の統合が行われoperator-sdk側が事実上のスタンダードとなった。詳細は下記にまとめている。

[【Kubernetes Operator】operator-sdkとkubebuilder統合に関する注意点 - Qiita](https://qiita.com/iaoiui/items/024673f0af1057ab08f6)

また、operator-sdkが含まれるOperator Frameworkは同じ2020/7にCNCF Incubating Projectになっている。Operatorを作るほど体力がないケースがほとんどと思われるため、Operatorをどこまで突き詰められるかは環境に依存するところが大きそう。

下記の記事でも少しだけ触れている。

[Kubernetes Internal #2に参加してみた - Qiita](https://qiita.com/iaoiui/items/fec3a97371c866077ebb#q3-個人的な補足)

# Kubernetes界隈の今後の予測

※ここまでで述べた事実に基づき、ここからは個人的な推測混じりの感想と展望を記載します。

## 個人的な期待や予測

### Kubernetesやエコシステムの今後

KubeCon NA 2020にて述べられた通り、Sandbox Projectとして承認される敷居が下がるため、Sandbox Projectの統廃合が進むことが示された。これはつまりGraduated, Incubatingの指す意味が今までより一層MatureなProjectであることを裏付けてくれる。

その意味では、今後はよりIncubatingとGraduatedに焦点を当ててキャッチアップしていく戦略が求められそう。下記のCNCFのページにもその2カテゴリがリストされている。

[https://www.cncf.io/projects/](https://www.cncf.io/projects/)

KubeCon NA Virtual 2020における、Graduated, Incubatingの講演

文字なしで画像だけですべてのGraduated, Incubatingを紹介してくれる貴重な資料なのでこちらも参考になる

講演概要: [https://kccncna20.sched.com/event/ek9f/a-flight-over-the-cloud-native-landscape-carson-anderson-weave](https://kccncna20.sched.com/event/ek9f/a-flight-over-the-cloud-native-landscape-carson-anderson-weave)

講演資料: [https://static.sched.com/hosted_files/kccncna20/a9/Carson-Anderson_CNCF-Flyover.pdf](https://static.sched.com/hosted_files/kccncna20/a9/Carson-Anderson_CNCF-Flyover.pdf)

### コミュニティ活動の今後

Meetupもコロナによってあり方が大きく変わった。仕事終わりに会場まで足を運び、現地で軽食をつまみながら現地の空気感を味わえる体験は、リモートのそれと比較すると両方に良さがあるように思う。詳細は別記事で別途まとめることとするが、リモート化したMeetupの体験をよりよくする動きは今後も継続して模索されていくと期待できる。

初学者向けのMeetupもできてはいるが、偉大な先人が数年前に作成した資料がすでにゴロゴロ存在していたりするため、内容はより事例や詳細、エコシステム群などに特化していくことが予想される。

過去の良い資料などが再利用性を高めて保持されたり、登壇自体が目的とならないように、コミュニティ活動のスタイルが変わったりというような変遷が来年にかけて起こっていくといいな、という期待がある。

ここに関するコミュニティ活動改善のアイデアは別途まとめて、フィードバックをもらえる場所で公開したい。

### 企業におけるクラウドネイティブ

旧来型のアジリティではアップデートに追従するだけで、相当な体力が必要なことは各企業で叫ばれている。

今後ますます塩漬けは厳しくなっていくと予想していたが、先日のKubeCon NA 2020にてCNCF Projectのリリースライフサイクルを低下させる提案が発表された。これは、各企業でアップデートに追従できていないことを示唆している。

Cloud NativeなProjectがより採用されやすくなることで、Late Majorityをうまく引き込むための歩み寄りと捉えることができる。一方で、旧来の塩漬け運用に逆行するわけでないことは改めて認識しなければいけない。

### 2021年の注目技術

KubeCon NA 2020にて、2021年に注目する技術として紹介された5つの技術が下記である。

今後どのように発展していくか注目していく必要がありそう。

- Chaos Engineering
- Kubernetes Edge
- Service Mesh
- WASM and eBPF
- Developer & Operator Experience

このうち、Chaos Engineering FrameworkのLitmusについては下記の記事にてまとめた。

[https://qiita.com/iaoiui/items/00369f232a23d2e30b2c](https://qiita.com/iaoiui/items/00369f232a23d2e30b2c)

# まとめ

Kubernetesは2年前のKubeConの時点でboring(退屈)と言われていたように、KubeConはエコシステム側への考慮がより深まって行っている状況である。

現状はKubernetesとクラウドネイティブの潮流はキャズムを迎え、より幅広い層に利用されていく過程にある。

その一方でエコシステム自体は拡大を続けているため、現状のアーリーアダプターや市場がどのような方向にシフトしていくかを注視していくことがますます重要になる。

特に、CNCFが2021年に注目する技術である、下記の5点は今後の方向性を見定めていく必要がある。

- Chaos Engineering
- Kubernetes Edge
- Service Mesh
- WASM and eBPF
- Developer & Operator Experience

また、1つの指標としてCNCF Graduated, Incubating Projectを基に、成熟したプロジェクトの変遷を改めて振り返り今後の傾向予測の参考とした。

今後何を学んでいくべきか迷った時に振り返ろうと思う。