CloudNative Days Fukuoka 2019のKeynoteで発表した資料です。 『クラウドネイティブとは?』と、改めて意味を考えてみました。 その上で、どうやってクラウドネイティブを取り入れていくべきかを解説します。
(CC BY-SA 2.0)
飛び込もうCloud Nativeの世界
View Slide
『クラウドネイティブ』 出来てますか?
▶ 出来てないそもそもクラウドネイティブとは?▶ 出来てる!是非、これからの発表を聞いてください。何かヒントが得られるかもしれません。是非、これからも続けてください。これからの発表は、クラウドネイティブの良さを他の人に伝えるための『表現のひとつ』になるかも
KAZUTO KUSAMA@jacopen4Solutions Architect @
5
CloudNativeis...クラウドネイティブとは何でしょう?
CloudNativeis...クラウドネイティブとは、コンテナです。みなさん、Docker使ってますか?
CloudNativeis...次に、Kubernetesです。コンテナをうまいことスケジュールしていい感じに扱ってくれます。
CloudNativeis...あと、マイクロサービスにするのも大事です。コンテナ・Kubernetes・マイクロサービスで作っていくこと。これがクラウドネイティブなのです。
っていう説明を読んだことありませんか?
間違ってはいない・・・のだけど11もしあなたがPHPやRuby on Railsで小規模アプリを開発しているとして・・・クラウドネイティブとはMicroservicesであると言われて、どう思うか?
間違ってはいない・・・のだけど12もしあなたがPHPやRuby on Railsで小規模アプリを開発しているとして・・・クラウドネイティブとはMicroservicesであると言われて、どう思うか? 俺には関係ないや
クラウドネイティブは『大規模』でしか必要が無いのだろうか?
伝えたいこと14クラウドネイティブは規模に関係なく実践してくべき
Definition クラウドネイティブ技術はパブリッククラウドプライベートクラウドハイブリッドクラウドなどの近代的でダイナミックな環境においてスケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。https://github.com/cncf/toc/blob/master/DEFINITION.md より引用
Definition クラウドネイティブ技術はパブリッククラウドプライベートクラウドハイブリッドクラウドなどの近代的でダイナミックな環境においてスケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。https://github.com/cncf/toc/blob/master/DEFINITION.md より引用要はクラウド
クラウドって何だっけ?
Definition オンデマンド・セルフサービス幅広いネットワークアクセスリソースの共用スピーディーな拡張性計測可能なサービスNISTによるクラウドコンピューティングの定義https://www.ipa.go.jp/files/000025366.pdf より抜粋
Benefit オンデマンド・セルフサービス幅広いネットワークアクセスリソースの共用スピーディーな拡張性計測可能なサービスNISTによるクラウドコンピューティングの定義https://www.ipa.go.jp/files/000025366.pdf より抜粋使った分だけ課金 初期費用が少ないリソースの調達が早い スケールしやすい運用を肩代わり
クラウド移行 クラウドファーストこれらクラウドのメリットは魅力ですよね。なので、過去10年に渡って、クラウド移行やクラウドファーストが持てはやされてきたのです。
使った分だけ課金初期費用が少ないリソースの調達が早いスケールしやすい運用を肩代わりクラウドの本質?これってクラウドの本質って言えるんでしょうか? ・・・言えなくは無いんですが、一言でいうなら僕はこう言います。
クラウドは人間を強化する
サーバーの調達 OS・ミドルウェアの設定ソフトウェアのデプロイストレージ・ネットワークの設定その他いろいろこれまでの世界クラウドファーストな世界かつてはオンプレで、全て手作業でやってました。
サーバーの調達 OS・ミドルウェアの設定ソフトウェアのデプロイストレージ・ネットワークの設定その他いろいろこれまでの世界クラウドファーストな世界クラウドになって、サーバーやネットワークなどインフラの準備はだいぶ楽になりましたよね。
クラウドは人間を強化するなので、クラウドという便利な道具で人間は強化されたわけです。でも、僕はこう思ったんです。
サーバーの調達 OS・ミドルウェアの設定ソフトウェアのデプロイストレージ・ネットワークの設定その他いろいろこれまでの世界クラウドファーストな世界ここには問題点がある
L1キャッシュ参照分岐予測ミスL2キャッシュ参照Mutexのlock/unlockメモリ参照1KBをZIP圧縮1Gbpsで1KB送るメモリから1MB連続で読む同一のデータセンタ内のマシンと通信1往復HDDシークHDDから1MB読み出しカリフォルニアとオランダ間で通信1往復0.5 ns5 ns7 ns25 ns100 ns3,000 ns10,000 ns250,000 ns500,000 ns10,000,000 ns20,000,000 ns150,000,000 nsかかる時間Latency Numbers Every Programmer Should Know https://gist.github.com/jboner/2841832こういう数字があります。言いたいのは、コンピュータの世界はμs、msの単位で動いているってこと。
L1キャッシュ参照分岐予測ミスL2キャッシュ参照Mutexのlock/unlockメモリ参照1KBをZIP圧縮1Gbpsで1KB送るメモリから1MB連続で読む同一のデータセンタ内のマシンと通信1往復HDDシークHDDから1MB読み出しカリフォルニアとオランダ間で通信1往復上司の許可取ってサーバー1台構築0.5 ns5 ns7 ns25 ns100 ns3,000 ns10,000 ns250,000 ns500,000 ns10,000,000 ns20,000,000 ns150,000,000 ns259,200,000,000,000 nsかかる時間Latency Numbers Every Programmer Should Know https://gist.github.com/jboner/2841832ところが人間が関わった瞬間、こうなっちゃう。桁が違う。それも6桁。
サーバーの調達 OS・ミドルウェアの設定ソフトウェアのデプロイストレージ・ネットワークの設定その他いろいろこれまでの世界クラウドファーストな世界ボトルネック
μs, msの世界で人間が介在すること自体がボトルネック
サーバーの調達 OS・ミドルウェアの設定ソフトウェアのデプロイストレージ・ネットワークの設定その他いろいろこれまでの世界クラウドファーストな世界『クラウドに置き換えて効率化』という思考から脱却しなければ根本的な変革にはならない
クラウドは人間を強化するクラウドを便利な道具って考えちゃ駄目なんです。クラウドの能力を、最大限に享受するのです。なので、こうじゃなくて
クラウドは人間を強化するYoshizumi Endo https://www.flickr.com/photos/yendo0206/5041788308/ (CC BY-SA2.0)
CLOUDこれこそが、クラウドに
CLOUD NATIVE+これこそが、クラウドにネイティブになるってこと。人間が最大限に強化されるために、生身の人間の関与を減らすのがポイントです。
CodingTestBuildDeliveryMonitoringAnalyzeでも、モビルスーツのような未来テクノロジーは必要ないんです。サービスのライフサイクルで、人間が関与しているところを変えていけばいいんです。そのためのアプローチを紹介します。
37Continuous Integration繰り返し必要になるテストから人間を排除の関与を無くす(排除っていうと治安が悪い感じになるんで、関与を無くすって言いましょうか)
38Continuous Delivery繰り返し必要になるデリバリーから人間をの関与を無くす
39Infrastructure as Codeインフラの構築から人間の関与を無くす
40Orchestrationワークロード配分の作業から人間の関与を無くす
41運用についてはどうか?
42NoOpshttps://www.slideshare.net/hiromasaoka/noops-meetup-tokyo-2-opening
なぜ運用は “嬉しくない” のか43運用をしていると、沢山の問題が発生する- サーバーのダウン、NWの障害、ストレージの・・・- 溢れ出るログへの対処- 昼夜問わずの対応・・・
なぜ運用は “嬉しくない” のか44運用をしていると、沢山の問題が発生する- サーバーのダウン、NWの障害、ストレージの・・・- 溢れ出るログへの対処- 昼夜問わずの対応・・・それを人が対応するから『嬉しくない』気持ちになる
“ボールを走らせろ。ボールは疲れない。”ヨハン・クライフ
クラウドを走らせろ。クラウドは疲れない。
47復元力の高いプラットフォームSelf HealingIn-Flight RenewingAdaptive Scale『嬉しくない』ところを自動化=人間の関与を無くす
48Continuous IntegrationContinuous DeliveryInfrastructure as CodeOrchestrationResiliencyコンテナで高速に、効率よくテストコンテナイメージで環境差分のないデプロイManifestで構成情報の定義コンテナオーケストレーターで高速かつ高効率な配置コンテナオーケストレーターで迅速な回復性を持たせる
49Continuous IntegrationContinuous DeliveryInfrastructure as CodeOrchestrationResiliencyコンテナで高速に、効率よくテストコンテナイメージで環境差分のないデプロイManifestで構成情報の定義コンテナオーケストレーターで高速かつ高効率な配置コンテナオーケストレーターで迅速な回復性を持たせる
50● 確かに、Kubernetesが欲しい要素を上手く満たしている● しかし目的は、人の関与を減らし出力を向上させること○ Kubernetesに限る必要は無い○ Serverless○ PaaS○ マネージドサービス● Cloud Native = Kubernetes は誤解。規模に合わせて、適したプラットフォームを選べば良い。
51Microservicesは?
52Microservices人間がボトルネックになると言ってきたが価値を生み出すのは人間にしか出来ない⇒ よいサービスを生み出せるのは人間だけ・・・しかし、ある程度の規模を超えると、システム的にも組織的にもスケールしなくなってくる。そこを乗り越える方法論がMicroservices
53MicroservicesそしてそのMicroservicesを支えるために、Observabilityという概念やService Mesh、分散トレーシングといったツールが注目されている詳細はこの後に続くセッションで!
Microservices = クラウドネイティブではない導入によってボトルネックが解消される⇒クラウドで強化されるなら、やるべき導入によってかえって手間が増えるのならば、無理にやる必要は無い。必要になったとき改めて試せば良い
重要なこと
56Docker=クラウドネイティブKubernetes=クラウドネイティブではない。ツールやプラットフォームの導入がクラウドネイティブになるわけじゃないクラウドによって最大限に強化されるというマインドセットを持つこと=クラウドネイティブ
57『クラウドネイティブが注目されているから、うちもKubernetesを取り入れてみる』⇒マインドセットが変わらない限り、ツールの置き換えで終わってしまう社内の承認プロセスでリリースが1週間出来ないとかアプリ書き換えの度に手動でdocker buildとかリリース作業を手動でkubectl applyでポチポチとか
58マインドセットが重要 = 一朝一夕では得られないちゃんとテストを書くことちゃんとCIすること無駄な手作業はせず、常に自動化の意識を持つこと⇒ クラウドのGUIでポチポチも無駄作業の一つこういった、地に足のついた積み重ねがあって、はじめてクラウドネイティブの恩恵が得られる
Cloud NativeTrail Maphttps://github.com/cncf/trailmapCNCFがTrail Mapというものを出しています。ひとつひとつ、クラウドネイティブになるための道しるべが示されています。
事例に学ぶのも大事です。先駆者達が拓いた道を辿ることで近道になるでしょう。ただ、マインドセットを変えていく意識は忘れずに!
7/22-23のCloudNative Days Tokyo 2019でも、皆様の役に立つセッションを沢山揃えてあります。是非お越しください!