CloudNative Days Tokyo 2019にスカラーシップ枠で行ってきた
こんにちは、7月の22日・23日に東京で開催されていた、CloudNative Days Tokyo 2019(CNDT)に参加してきました。 今回はCNDTのスカラーシップ枠で参加してきたので、参加した感想とか諸々をまとめて行きます。
CloudNative Days とは
CloudNative Daysとは、CloudNativeやその周辺技術に関するカンファレンスです。 今回のテーマは「+Native」で、クラウドからクラウドネイティブに向かうことらしいです。 2日間とも8ルームで多くのセッションが並行して行われ、クラウドネイティブに関連する様々な分野についての知見を吸収することが出来ます。
参加の経緯
僕は、未来大でシステムソフトウェア研究室という低レイヤーの研究室に居ます。 研究分野はコンテナに関することをやっています。また、元々コンテナ技術には興味が有りました。
また、未来大には高度ICT演習と呼ばれる、学部生・大学院生を交えたコース横断プロジェクトチームで通年実施するPBL(チーム開発演習)があります。 僕はこのPBLで、20名の学生たちでkubernetesをベースとしたPaaSクラウドを作っています。 現在僕は、このPaaSクラウドのインフラチームを率いてチームメンバと共に監視やモニタリングの仕組みを整えたり、分散ストレージ構築などの取り組みを行なっています。 今年は、来年度の実運用を目指した開発を行なっており、インフラチームでは実運用を想定した監視の仕組みや、高可用性への取り組みが必要でした。 しかし、どうしても実運用するというのは、学生には分からない部分が多く、特に監視についての知見のある学生は非常に少ないです。
そのため、今回は自分の卒業研究とPBLに持ち帰れそうな知見を得ることをモチベーションにスカラーシップに申し込みました。 無事通ってバンザイ。
そもそもクラウドネイティブってなんだろうか
クラウドネイティブと聞くとコンテナやKubernetesを使うこと事が先行しがちです。CNCFの定義によると、本来の意味は、
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミューダブルインフラストラクチャ、および宣言型APIがあります。
これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。
つまり、何かの特定の技術を用いたらクラウドネイティブであるというわけではなく、あくまではクラウドネイティブはマインドセットであり、考え方のことです。
セッションの感想
ここからは、実際に参加したセッションの感想などを一部書いていこうと思います。
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
いわゆるDockerの気持ちになっていく系セッションでした。 コンテナにはOCI Image Format SpecificationやOCI Runtime Specificationのような標準仕様があります。 そしてOCI Image Formatの概要に触れていきながら、現在のコンテナの課題から次世代イメージ仕様やLazyPullなどを紹介してくれました。
実際に手を動かしながら、Dockerに気持ちを追っていくのが面白かったです。気持ちが完全にDockerになってきた。
クラウドネイティブを創る技術
このセッションでは、クラウドネイティブになっていくためにKubernetesとかの既存の技術を活用していくのではなく、新しい技術を作っていく話をしていました。 実際にサービスとして提供している、ロリポップ!マネージドクラウドで用いているFastContainerアーキテクチャやコンテナのランタイムHaconiwaの解説や、アクセスからコンテナができるまでのマネージドクラウドの流れについての解説がありました。 そして、なぜKubernetesではないのかに言及し、アーキテクチャの違いやスケジューリングの違いなどを比較が興味深かったです。 また、コンテナオーケストレーションはOSぽいという話は確かに分かるなあと思いました。
自分はクラウドネイティブを創る側にとても興味があり、将来はそういうことを仕事にしたいと思っていたので、非常に参考になりました。
CNCF サンドボックスプロダクト15本ノック!
このセッションでは、CNCFのサンドボックスプロダクトを紹介していました。 CNCFのプロジェクトは成熟度で3段階に分かれています。 その中でもサンドボックスは、最も初期段階のものです。
- kube-edge
- kubernetesをエッジコンピューティングで利用するためのもの
- https://github.com/kubeedge/kubeedge
- virtual kubelet
- kubernetesクラスタを他サービスAPIに接続するためのもの
- AWS fargetやAzureContainer InstanceなどのVM以外のサービスをバックエンドに使える
- https://github.com/virtual-kubelet/virtual-kubelet
- Flux
- GitOpsなどのCICDでリポジトリとKubernetesクラスタの同期をするのオペレータ
- https://github.com/fluxcd/flux
- Brigate
- CI/CDパイプライン
- タスクランナーに近い
- javaScriptでパイプラインをプログラマブル
- https://github.com/brigadecore/brigade
- Network Service Mesh
- L2,L3のサービスメッシュ
- VFNチック
- https://github.com/networkservicemesh
- Build pack
- PaaS向けビルドツール
- https://github.com/buildpack
- Falco
- Linuxのカーネルモジュールを利用してシステムコールベースのルールを設定
- https://github.com/falcosecurity/falco
- Telepresence
- クラスタ内アプリのデバックツール
- https://github.com/telepresenceio/telepresence
- Dragonfly
- P2PによるDockerイメージ配信
- https://github.com/dragonflyoss/dragonfly
- SPIFFE/SPIRE
- セキュアなサービス間認証するための仕組み
- https://github.com/spiffe/spire
- https://github.com/spiffe
- Open EBS
- 分散ストレージ
- コンテナ化されたストレージをkubernetes上で利用可能にする
- https://github.com/openebs
- CloudEvents
- イベントスキーマ標準化のための共通仕様
- https://github.com/cloudevents/spec
- OpenTelemetry
- トレーシング、メトリックの標準仕様
- https://github.com/open-telemetry/opentelemetry-specification
- OpenMetrics
- https://github.com/OpenObservability/OpenMetrics
- Prometheusで取得しているメトリクスの標準化
- cortex
- Prometheusに水平スケール、高可用性、マルチテナント、長期保管の機能を追加するために開発されたプロダクト
- https://github.com/cortexproject/cortex
- thanos
- 複数のPrometheusを跨いだGlobal query view、長期保管、高可用性を実現するために
- Prometheusを内包したプロダクト
- https://github.com/thanos-io/thanos
おまけ(After Party)
OpenStackが9周年で皆でハッピーバースデーしました。 おめでとうございます!
最後に
地方学生にとっては、カンファレンスにスカラーシップで行くことが出来るのは非常にありがたいです。 特に北海道だと、東京まで行くのに非常に費用がかかってしまうので、とても助かりました。ありがとうございます!
今回CNDTに参加したことで、研究やPBLに持ち帰れそうな知見を多く得ました。得た知見をもとにやっていくぞ〜〜〜