Cloud Native Days Tokyo 2019 -2019年7月22-23日参加レポート
今回、東京で開催されました Cloud Native Days Tokyo 2019 に 2 日間とも参加してきましたので、報告しようと思います。 セッション毎の報告というより、全体を通した感想を話そうかなと思います。
https://cloudnativedays.jp/cndt2019/
リンクをまとめています。
https://qiita.com/zaki-lknr/items/1c26bb713aef9645f5e6
CNCF の利用率
一日目の Keynote で印象的だった内容です。 発表者は、OSDT 実行委員長である長谷川さんです。
来場者アンケート 1354 人から聞いた「クラウドネイティブ技術を活用フェーズについて」の紹介がありました。
既に本番環境に適用している人は、なんと46%という驚きの結果でした。また、開発環境に至っては、63%ということでした。
このイベントに参加している時点である程度フィルターはかかっていると思いますが、それでも大きな割合だと感じました。
次の図では、CNCF プロジェクトの 180 日間における Commit 数をグラフ化したものです。 生みの親である Google が 1 位で independent(個人)が 2 番目、日本企業 Fujitsu が 6 位です。熱意が伝わってきますね。
※ 2019/07/24 時点
ただ、CNCF のメンバーとして日本企業は17 社しかないそうで、まだまだこれからといったところでしょうか。
https://landscape.cncf.io/members
さらには、Kubernetes から認定された日本企業ではまだないみたいです。残念です。
https://kubernetes.io/partners/#kcsp
今後は、次のようなカンファレンスが海外でもあるみたいです。ぜひ参加してみたいと思います。
https://events.linuxfoundation.org/events/kubecon-cloudnativecon-europe-2019/
https://events.linuxfoundation.org/events/kubecon-cloudnativecon-north-america-2019/
CloudNative とは?
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミューダブルインフラストラクチャ、および宣言型 API があります。
※ https://github.com/cncf/toc/blob/master/DEFINITION.md#日本語版
「スケーラブルなアプリケーションを構築および実行」が重要です。これを実現する手段の1つに Kubernetes があります。 「CloudNative = Kubernetes」ではなく、「CloudNative ∋ Kubernetes」という感じです。
ただ、最近では Kubernetes を違う観点で考える人が増えてきたそうです。 それが、二日目の Keynote で発表された北山さんのスライドにあります。
https://speakerdeck.com/shkitayama/change-the-game-change-the-world
Kubernetes は「platform のための platform」と言われるようになりました。 これは、slide.No.9(Kubernetes is a platform)で見て分かる通りで、次のようなことがわかります。
- 運用管理者
- Self-Healing によってスケールが簡単になる
- アプリケーション開発者
- 簡単にデプロイすることができる
これらは、たしかに「プラットフォームから得られる価値」になりますが、 逆に次のような考慮が必要なってきます。
- 運用管理者
- Self-Healing はどこまで信頼性を担保できるか
- アプリケーション開発者
- ユーザー影響を最小限にするためには、どうればよいか
これらのような「プラットフォームを利用するコスト」が「プラットフォームから得られる価値」よりも大きくなってしまいがちになります。 そこで、Operator (CRD)という概念が最近ホットになっています。
なぜ CRD がホットなのか?
CRD という言葉は様々なセッションで取り上げらていました。 CRD と Operator については、下記をご参考下さい。
https://silverbirder.github.io/blog/contents/kubernetes_meetup_tokyo_19_osaka_satellite
Kubernetes を運用すると、既存のリソースだけでは物足りない所がでてくるそうです。 そういう部分が「プラットフォームを利用するコスト」を大きくしてしまいます。 そこで、オリジナルのカスタマイズしたリソースを独自に開発し、運用を自動化することを目的とした CRD、Operator が生まれました。 ただ、独自に 1 から作るよりも、下記のサイトから使った方が効率的なときもあります。
けど、結局は困ったとき、ソースコードを読むことになるので、それぐらいの能力がないと、 運用を回せない気がします。
zlab の ladicle さんの次のスライドがとてもわかりやすく、まとまっていました。 これは貴重な資料ですね。
https://speakerdeck.com/ladicle/kuberneteswokuo-zhang-siteri-falseoperesiyonwozi-dong-hua-suru
ちなみに、独自に 1 から作ったケースがサイバーエージェントの山本さんの発表で、次のスライドです。
同じくサイバーエージェントの青山さんがライブコーディングされていたリポジトリが次のものになります。
https://github.com/cloudnativejp/webserver-operator
Kubernetes は必要ですか?
Kubernetes を使うべきかの話が 2 日間でちらほらありました。 次のような議論もあります。
https://www.atmarkit.co.jp/ait/articles/1907/23/news120.html
CloudNative なアプリケーション構築を目指す場合、どうしても Kubernetes を使う方向になりがちですよね。
今回参加したセッションの多くの企業では、Kubernetes を採用するための検討が下記のような感じでした。
- プレインな Kubernetes か、マネージドな Kubernetes か
- 大体はマネージドな Kubernetes を使う。
- かゆい所に手を伸ばすときになって、プレインな Kubernetes を使う。
- Kubernetes のエンジニアは何人か。それは専属か
- どこも Kubernetes の知識を保有するエンジニアは少ない。
- 数人程度で専任で進めることが多い。
- ノウハウを蓄積するために、スモールスタート
様々なセッションがあった中で、とても王道なステップを踏まれている企業がありました。それは、SoftbankPaymentService の鈴木さんの次のスライドです。
https://www.slideshare.net/JunyaSuzuki1/springpcf-cndt2019-osdt2019-keynote
企業に適した CloudNative 化だなと勉強になりました。
特に「運用を回すコストを考慮すると、Kubernetes ではなく PaaS を使う」 というポイントが好きです。
Circuit Breaker
耳にタコができるぐらい、この単語を聞きました。 下記のサイトが参考になります。
https://qiita.com/yasuabe2613/items/3bff44e662c922083264#circuit-breaker
同期リクエストの先で一部のマイクロサービスに障害があると、クライアントやその先の「クライアントのクライアント」までブロッキングが波及することになりかねない。 この問題を、クライアントと実サービスの間に Circuit Breaker と呼ばれるプロキシを介在させて、実サービスの呼び出し失敗が一定基準を超えると、クライアントからのリクエストを即座にリジェクトさせて、ブロッキング連鎖を解消するパターン。
Kubernetes でアプリケーションを構築すると、分散システムの恩恵を受けるために、
アプリケーションをマイクロサービス化する流れになります。そのマイクロサービス化でよく踏む地雷が、
「後ろの API が死んだら、連鎖的に他サーバも死ぬ」という現象です。
これを回避するために、上記の Circuit Breaker パターンを使う企業が多数いらっしゃいました。
本当にいろんなセッションで聞きました...。
twelve factor app
次の Wantedly さんのスライドが、私の中では話題になりました。
https://speakerdeck.com/potsbo/k8s-kubernetes-8-factors
要は、「アプリケーションとしての設計の考え方(twelve factor app)を、インフラ部分でも適用してみた」という感じです。 どれも具体的なところまで説明されており、実際に Kubernetes を構築する際に役に立つものだと思います。
技術にフォーカスした発表
今回のイベントでは、何か 1 つの技術にフォーカスした発表が多くありました。 それぞれ私なりにまとめてみました。ご参考下さい。
Chaos Engineering
https://speakerdeck.com/mahito/cndt-osdt-2019-2g1
Docker
https://www.slideshare.net/AkihiroSuda/cndt-docker
Envoy
https://speakerdeck.com/taiki45/cloudnative-days-tokyo-2019-understanding-envoy
Logging
https://speakerdeck.com/yosshi_/kubernetes-loggingru-men
LinuxKernel
https://speakerdeck.com/tenforward/cndt2019
Prometheus
https://speakerdeck.com/tokibi/prometheus-setup-with-long-term-storage
Sandbox
https://docs.google.com/presentation/d/1O9Q9E1hH6mBA5w8oDENnCYObZvij1-Dr_obvsY3X29k/edit
Scheduler
https://speakerdeck.com/ytaka23/cloudnative-days-tokyo-2019
Spinnaker
https://speakerdeck.com/sansanbuildersbox/introduction-to-deployment-patterns-with-spinnaker:embed]9
Istio
https://speakerdeck.com/dangossk/a-deep-dive-into-service-mesh-and-istio-cndt-2019
その他
サイバーエージェントさんより、エンジニアにとってとても嬉しいアイテムを頂きました。
https://twitter.com/ca_adtechstudio/status/1152080444445167616
さっそく、キーボードにとりつけてみました。最高です!
こちらのサービスから作られたそうで、私も自前で何か作ってみようかなと思いました。
https://www.wasdkeyboards.com/
最後に
CloudNative にどっぷり浸かった 2 日間でした。
どの企業でも CloudNative を導入したことによる「つらみ」や「価値」を共有して頂いたおかげで、これから導入する人たち(私を含む)にとっては、有意義な時間でした。
全てのセッションを吸収できたわけではないですが、ここで記載したスライドだけでも理解を深めたいなと思います。
https://cloudnativedays.jp/cndk2019/
今度は大阪で開催されるそうです。これも絶対参加したいなと思います!
蛇足(参加するまでの経緯)
筆者は Web が大好きなエンジニアで、Kubernetes については理解が浅い人間です。主にフロントエンドに注力しています。
ただ、昨年の DeveloperBoost2018 で、サイバーエージェントの青山さんのセッションをうけて Kubernetes に興味を持ち始めました。
https://codezine.jp/article/detail/11291
青山さんは Kubernetes にとても詳しい方で、世代が近いせいか、私もこれぐらい夢中になれるものを見つけたいと感じるようになりました。
私は Web に関わるものなら何でも好きで、Kubernetes も含まれます。そこで、青山さん著作のKubernetes 完全ガイドを全て実践することにしてみました。もちろんお家 Kubernetesでです。
実際に触ってみると、スケールする簡単さに驚きました。ほぼコマンド一発で Pod が複製されて、「え!?」とびっくりです。
そこから、段々とハマっていき今回のイベントに参加することになりました。
Tags
2019-12-16
GDG DevFest Tokyo 2019というイベントに参加してきました。最近はプライベートの都合上、中々時間が取れていませんでした。しかし今回、会社の都合上、良い感じに時間を確保できたため、こちらのイベントに参加してきました。`大阪→東京` でわざわざ新幹線を使ってまで参加しましたが、それに見合う発見が多くありました。今回、私が学んだ内容について、報告しようかなと思います。...
2019-07-20
今回はDeNAさん主催のFrontendのイベントに参加してきましたので、報告しようと思います。hashtagはこちら frokan イベント概要 「Frontend de KANPAI!」(以下、FROKAN)は、フロントエンドエンジニアやフロントエンドに興味がある人が集い、ドリンク片手にゆるく交流・技術交換ができるコミュニティを目指しています。...
2019-06-29
大阪のグランフロント大阪で開かれました「AWS Summit Osaka 2019」に参加してきましたので、私の中で良かった3つのセッションを紹介したいなと思います。...
2019-06-27
今回は、ヤフー株式会社主催の下記セミナーに参加してきました。Google/Appleどちらも大好きで、けど海外カンファレンスにいけなかった私にとって、今回の報告会は<b>新鮮な内容</b>ばかりでした。その内容を記事に書こうと思います。...
2019-06-01
大阪からKubernetes Meetup Tokyoに参加できるとのことで、こちらに参加してきました。Kubernetesの生みの親である3人の内の1人のJoe Bedaから、Kubernetesの歴史の経緯について教えて頂きました。その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。...
2019-05-22
今回、k8sの体験を目的として参加したのですが、意外な収穫があったので、共有したく、記事を書くことにしました。...
2019-05-22
こちらの参加しましたので、ご報告します。hashtagはこちらです。next19extended 目的 2019/04/09 ~ 04/11 にサンフランシスコで開催された Google Cloud Next '19 San Francisco で発表された Google Cloud の 新サービスに関する解説や振り返りの内容がメインのイベントとなります!...
2019-05-11
Algolia Community Party in 京都 - 2019年5月10日。こちらに参加しましたので、ご報告までに記事を書こうと思います。...
2019-12-16
GDG DevFest Tokyo 2019というイベントに参加してきました。最近はプライベートの都合上、中々時間が取れていませんでした。しかし今回、会社の都合上、良い感じに時間を確保できたため、こちらのイベントに参加してきました。`大阪→東京` でわざわざ新幹線を使ってまで参加しましたが、それに見合う発見が多くありました。今回、私が学んだ内容について、報告しようかなと思います。...
2019-07-20
今回はDeNAさん主催のFrontendのイベントに参加してきましたので、報告しようと思います。hashtagはこちら frokan イベント概要 「Frontend de KANPAI!」(以下、FROKAN)は、フロントエンドエンジニアやフロントエンドに興味がある人が集い、ドリンク片手にゆるく交流・技術交換ができるコミュニティを目指しています。...
2019-06-01
大阪からKubernetes Meetup Tokyoに参加できるとのことで、こちらに参加してきました。Kubernetesの生みの親である3人の内の1人のJoe Bedaから、Kubernetesの歴史の経緯について教えて頂きました。その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。...
2019-06-10
前回 一足遅れて Kubernetes を学び始める - 15. セキュリティ -では、RBACによる権限について学習しました。今回は最後にKubernetesのコンポーネントについて学習します。...
2019-06-07
前回 一足遅れて Kubernetes を学び始める - 14. スケジューリング -では、AffinityなどでPodのスケジューリングについて学習しました。今回は、セキュリティについて学習します。...
2019-06-05
前回 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -では、requestsやlimitといったヘルスチェックの仕方を学びました。今回は、Affinityなどによるスケジューリングについて学習します。...
2019-06-01
大阪からKubernetes Meetup Tokyoに参加できるとのことで、こちらに参加してきました。Kubernetesの生みの親である3人の内の1人のJoe Bedaから、Kubernetesの歴史の経緯について教えて頂きました。その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。...
2019-05-30
前回 一足遅れて Kubernetes を学び始める - 12. リソース制限 -では、requestsやlimitなどのリソース制限について学習しました。今回は、ヘルスチェックとコンテナライフサイクルについて学習します。...
2019-05-29
前回 一足遅れて Kubernetes を学び始める - 11. config&storage その2 -では、storageについて学習しました。今回は、リソース制限について学習します。...
2019-05-27
前回 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -では、configについて学習しました。今回は、storageを学びます。...
2019-05-23
前回 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -では、様々なserviceを学習しました。今回は、config&storageのconfigを学びます。...
2019-05-22
今回、k8sの体験を目的として参加したのですが、意外な収穫があったので、共有したく、記事を書くことにしました。...
2019-05-15
前回 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -でServiceについての概要を学びました。今回は下記を一気に学びます。...
2019-05-07
前回 一足遅れて Kubernetes を学び始める - 07. workloads その3 -でようやくworkloadsが終了しました。今回は、discovery&LBを進めようと思います。...
2019-05-06
前回 一足遅れて Kubernetes を学び始める - 06. workloads その2 -にて、DaemonSetとStatefulSet(一部)を学習しました。今回は、StatefulSetの続きとJob,CronJobを学習します。...
2019-05-05
前回 一足遅れて Kubernetes を学び始める - 05. workloads その1 -では、Pod,ReplicaSet,Deploymentの3つを学習しました。今回はDaemonSet,StatefulSet(一部)を学びます。...
2019-05-03
前回 一足遅れて Kubernetes を学び始める - 04. kubectl -では、kubenetesのCLIツールkubectlを学習しました。今回は、目玉機能であるworkloadsについて学習します。...
2019-05-02
前回 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -では、RaspberryPiの環境にKubernetesを導入しました。無事、動作確認ができたので、さっそく学習していきたいです。...
2019-04-28
前回 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -では、MacでKubernetesを軽く動かしてみました。DockerForMacでは、NodeがMasterのみだったため、Kubernetesを学習するには、ものたりない感がありました。そこで、RaspberryPiを使っておうちKubernetesを構築することになりました。...
2019-04-27
前回 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -にて、Kubernetesを学ぶ環境を考えてみました。いきなりGKEを使うんじゃなくて、お手軽に試せるDockerForMacを使おうとなりました。...
2019-04-18
経緯 Kubernetesを使えるようになりたいな〜(定義不明) けど、他にやりたいこと(アプリ開発)あるから後回しにしちゃえ〜!!と、今までずっと、ちゃんと学ばなかったKubernetesを、本腰入れて使ってみようと思います。...