本日も乙

ただの自己満足な備忘録。

CloudNative Days Tokyo 2019 に参加・登壇してクラウドネイティブについて考えてみた #CNDT2019

CloudNative Days Tokyo 2019(CNDT)に参加および登壇してきました。

cloudnativedays.jp

登壇に関するレポートは会社の技術ブログで書くとして、今日は CNDT に参加してきたことで感じたことや思ったことを書いていきます。

CNDT に登壇したきっかけ

CFP が採択されて登壇した身ではあるので大変恐縮だが、私が所属している部署は AWS と GCP をつかっているものの、コンテナはおろかオートスケールすらしていない化石みたいなシステムが大半を占めており、そんなシステムのインフラエンジニアをしている。
参加者や登壇者のほとんどがクラウドネイティブもしくはコンテナを導入してモダンなアーキテクチャで運用されていて、私は参加者の中でもクラウドネイティブに最も遠い存在だと思っている。
業務で Spinnaker を利用していて、いくつか外部勉強会で登壇させていただいたことから何か出せるものはあるのではと思って、ダメ元で CFP を出したら補欠で採択された。登壇できたのは奇跡といってもいい。

CNDT に参加してみて

Day1 から行きたかったが、2日前から風邪を引いてしまい、安全をとって登壇日の Day2 だけの参加となった。Days2 は登壇時間以外はブースも見つつ、セッションをいくつか見てきた。
セッション自体は Kubernetes やエコシステムに関する解説やクラウドネイティブの導入事例が多く、自分たちの環境に活かせるのかわからずいまいちピンと来ていなかったが、Keynote の内容だけは強く印象に残っている

クラウドネイティブにツールは関係ない

Day2 の Keynote を聞いて印象に残った言葉をいくつか列挙する。自分なりに解釈した言葉となっている点にご留意いただきたい。

  • ただツールを使っただけではクラウドネイティブではない
  • クラウドネイティブにツールは関係ない
  • VMマシン上にアプリをただ乗っけただけならオンプレも同じ
  • クラウドに使われるのではなく、クラウドに沿った運用方法に自ら変えていく。いかにクラウドに沿った運用に変えていくか、意識レベルから変えていく必要がある

ただ、クラウドのサービスや技術を使っただけではクラウドネイティブと言えなくて、それだと今までと変わらないしクラウドにした意味がなくなる。 *1
クラウドの特性に合わせたシステムに変えていかないといけないし、変えるためにはまず自分たちの考えや意識から変えていかないと何も変わらない。

クラウドネイティブってなんだろう

CFP 提出時クラウドネイティブという単語がピンと来ておらず Kuberntes とかサービスメッシュとかつかってモダンなことをやっているんだろうという浅い理解でいた。
CNDT 終了後、改めてクラウドネイティブについて調べてみたところ、Cloud Native Computing Foundation (CNCF) の CNCF Cloud Native Definition で定義されていたので引用する。

Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.


(日本語訳) クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミューダブルインフラストラクチャ、および宣言型APIがあります。

これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。

Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーションを誰もが利用できるようにします。

https://github.com/cncf/toc/blob/master/DEFINITION.md

クラウドの特性を最大限に活かして、アプリケーションの構築を高速化、運用に関わる業務を最小限にしていくことで、品質の高い、価値のあるプロダクトをユーザに提供し続けるのがクラウドネイティブの目的で、それを実現するために Docker などのコンテナや、 Kubernetes, Istio, Microservices, Spinnaker などの技術が使われているのだと理解した。
逆に単純にレガシーなシステムをクラウドに移行したとか、コンテナ、Kubernetes をつかっているだけでは、クラウドネイティブが目指しているものに到達できないため、それはクラウドネイティブではないという理解もした。

おわりに

私が関わっているシステムはただクラウドにのっけただけのシステムであるが、まだまだ成長していなかないとならないし、スケーラブルにしていかなければならない。CNDT を参加してクラウドネイティブについて多少の理解を深めた結果、私達のシステムをクラウドネイティブにしていく必要があるのではないだろうか。 Keynote でワイジェイFXの人が「変わらないことがリスク・ゆるやかな死」と言っていたように、変化していかないとゆるやかな死に向かってしまう危機感を強く感じた。

変えていくには、まず自分がクラウドネイティブに沿った意識に変えていく必要がある。自分ひとりだけではなく、チーム、部署全体にも変えていくしかない。 周りはどんどん変わり続けているのに自分たちだけ未だに変わっていない。やっていこう。 そう思えた機会を与えてくれた CloudNative Days に参加できてよかったと思うし、感謝している。

*1:サーバの調達スピードが早くなるとか利点はあるかもしれないが