2022年12月8日に開催された、ITmedia Cloud Native Week 2022 冬の基調講演でお話した資料です。
予測できない時代に学ぶ「クラウドネイティブ」にまつわる誤解と本質
View Slide
Kazuto Kusama@jacopenSenior Solutions Engineer @HashiCorp JapanCo-Chair @CloudNative Days
今日はなにを目的に参加されましたか?
今日のは何を目的に参加されましたか?● クラウドネイティブに興味があるから● 既にクラウドネイティブ技術を活用していて効果が出ている⇒ 是非、続けてください
今日のは何を目的に参加されましたか?● クラウドネイティブに興味があるから● 既にクラウドネイティブ技術を活用していて効果が出ている⇒ 是非、続けてください● 流行っているから● そろそろうちもクラウドネイティブとやらを検討しないといけないから● これからはクラウドネイティブが主流になるんでしょ?⇒ ちょっと気をつけたほうがいいかも
今日持ち帰って欲しいこと● 既にクラウドネイティブを実践している人○ クラウドネイティブを社内に広めていくためのトーク材料○ 活動内容に自信をもつ裏付け● これからクラウドネイティブを実践する人○ クラウドネイティブ技術を取り入れるにあたって、『残念な採用』にならないための観点○ クラウドネイティブの本質に対する理解
何故、今日ここで話しているのか2012 2014 2017 2019 202120152013 2016 2018 2020国内の通信事業者でPaaSの開発を担当6月 Kubernetes発表9月 日本で最初のKubernetes勉強会開催11月 Kubernetes解説記事掲載Docker登場。PivotalのMatt Stine氏によりクラウドネイティブの概念が提唱されるCNCF設立国内最大のクラウドネイティブ技術カンファレンス、CloudNative DaysのCo-Chairに就任Pivotal入社。PaaSとクラウドネイティブ技術の推進に携わるHashiCorp入社。IaCやゼロトラストセキュリティの推進に携わる今日はお呼ばれしてここで話しているんですけど、自分はこれまで 10年以上クラウドやクラウドネイティブ技術に携わってきました。その知見を元にお話したいなと思います。
こういう質問をよく受けますうちはAWSオンリーなんだけど、Kubernetes使った方が良いの?コンテナのほうが良いのかな・・・VMじゃダメ?オンプレやめて全部クラウドにしました。これでクラウドネイティブだよね?ベンダーがクラウドネイティブ製品売り込んできてるんだけど、やっぱりそういうの買った方がいい?そういう背景もあるので、よくこういう質問をうけます。
こういう質問をよく受けますうちはAWSオンリーなんだけど、Kubernetes使った方が良いの?コンテナのほうが良いのかな・・・VMじゃダメ?オンプレやめて全部クラウドにしました。これでクラウドネイティブだよね?ベンダーがクラウドネイティブ製品売り込んできてるんだけど、やっぱりそういうの買った方がいい?
クラウド(パブリック・プライベート・ハイブリッド )App App Appこれはクラウドネイティブ?オンプレApp App App
クラウド(パブリック・プライベート・ハイブリッド )App App Appこれはクラウドネイティブ?オンプレApp App AppLift & Shiftこれはクラウドネイティブじゃないですよね。Lift & Shiftって言ったりしますけど、その Liftをしたにすぎません。
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.mdクラウドネイティブ技術については、 CNCFが定義を公開しています。
クラウドネイティブ アーキテクチャクラウドネイティブ アプリケーションクラウド(パブリック・プライベート・ハイブリッド )App App Appクラウドネイティブ○○ クラウドネイティブは形容詞なので、その後に「アプリケーション」だったり「アーキテクチャ」という言葉が続きます。クラウドネイティブアプリケーションがあって、それを構成する仕組みがクラウドネイティブアーキテクチャという関係性です。
そもそもクラウドって何?
NISTによるクラウドコンピューティングの定義クラウドの基本的な特徴● オンデマンド・セルフサービス● 幅広いネットワークアクセス● リソースの共用● スピーディな拡張性● サービスが計測可能であることhttps://www.ipa.go.jp/files/000025366.pdfちょっと古いんですけど、 NISTというところがクラウドコンピューティングの定義を公開しています。
NISTによるクラウドコンピューティングの定義クラウドの基本的な特徴● オンデマンド・セルフサービス● 幅広いネットワークアクセス● リソースの共用● スピーディな拡張性● サービスが計測可能であることhttps://www.ipa.go.jp/files/000025366.pdf使った分だけ課金低い初期費用スケールしやすい運用を肩代わりリソースの調達が早い表現を変えると、こういったものがクラウドのメリットといえるでしょう。
NISTによるクラウドコンピューティングの定義クラウドの基本的な特徴● オンデマンド・セルフサービス● 幅広いネットワークアクセス● リソースの共用● スピーディな拡張性● サービスが計測可能であることhttps://www.ipa.go.jp/files/000025366.pdf使った分だけ課金低い初期費用スケールしやすい運用を肩代わりリソースの調達が早いAPIでコントロール出来るただそれよりも何よりも、 APIでコントロールできるというのがクラウドの最大の特徴だと思っています。
クラウドネイティブ技術クラウドネイティブ アーキテクチャクラウドネイティブ アプリケーションクラウド(パブリック・プライベート・ハイブリッド )App App Appクラウドネイティブ○○コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、etc…さっきの例で言うと、クラウドネイティブアプリケーションやアーキテクチャを実現するために、クラウドネイティブ技術が存在するわけですね。
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.mdCNCFの定義は、クラウドネイティブ技術について述べたものです。
もし、あなたのモチベーションが・・・『クラウドネイティブ技術を触りたい』 であれば● 好きに色んなものを試すといい● コンテナだけがクラウドネイティブ ではないので、OSSやベンダーのサービスなどを幅広く試してみるのをお勧め● 『検討』を進めるよりは、とにかく手を動かしていくことが重要https://www.ipa.go.jp/files/000025366.pdf
もし、あなたのモチベーションが・・・『クラウドネイティブによりシステムを良くしていきたい』であれば● このあとの説明を聞いて下さいhttps://www.ipa.go.jp/files/000025366.pdf
何故クラウドネイティブが必要なのか
Software is eating the worldソフトウェアの力により世の中がものすごく変わりつつあります。
想像を超えるテクノロジーの進化MidjourneyDALL-EStable DiffusionNovelAI一見本物と区別が付かないような写真やイラストを生成できるように特に最近AI周りがホットですよね。ここ半年で、信じられないプロダクトが次々に登場しました。権利周りの問題はあれど、技術面ではちょっと前まで想像出来なかった世界が実現しつつあります。
ChatGPT対話に特化した言語モデル。テキストで質問するとAIが回答を表示する。一見人間と見分けが付かないほどの自然な文章を生成できる。左の動画はクラウドネイティブ技術による影響や、取り組み方について質問してみた例。本公演の僅か1週間前にリリースされたこの講演は2022年の12月上旬でしたが、直前にChatGPTが登場して度肝を抜かれました。技術的な質問を投げかけてみて、正確なレスポンスが返ってくることをデモしました。クラウドネイティブについて、自分なんかの話を聞くよりもChatGPTに聞いて見たほうが早いんじゃないですかね ()画像生成AIに対しては『すごい時代がきたもんだ』と対岸の火事のような感覚でしたが、 ChatGPTは『ひょっとすると数年後に自分の仕事は不要になっているかもしれない』と考えてしまうほど、インパクトのあるものでした。
予測できない世の中AIに限らず、ありとあらゆる分野でデジタルによる変革が進んでいる。ほんの数日前までは想像すら出来なかったものが、突然実現される世の中になっている。加えて政治も社会も経済は、不安定な状況が続く。 まさにVUCA時代
どうやって生き残っていくべきかこの世界の流れに逆らうことはできない。個人においても、企業においても自らも素早く変化していき、適応し、流れをうまく利用する以外に道はない
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.md
コンピューティングリソースの量が全てを決める機械学習、AI、ビッグデータ、ブロックチェーン、etc…世界を変えつつある新技術は、従来では考えられない規模のコンピューティングリソースを大量に消費することで成り立っている。人間が直接サーバーを管理してどうにかなる次元では無くなっている。ではどうするか? ⇒ クラウドを使おうなんでこんなことが出来るようになったか。技術革新が進んだというのもありますけど、単純に膨大なコンピューティングリソースを素早く調達してぶん回せるようになったという要素が大きいと考えています。それを実現するキーが、クラウドなわけです。
クラウドで高速化したよ数分で環境作れるよ数msで処理終わるよ前の処理が終わったら自動で動くよクラウドであれば大量のリソースを素早く作れます。・・・本当に?
Latency Numbers Every Programmer Should Knowhttps://gist.github.com/jboner/2841832『プログラマーが知っておくべき数字』としてこういう情報があるのですがhttps://colin-scott.github.io/personal_website/research/interactive_latency.html
Latency Numbers Every Programmer Should Knowhttps://gist.github.com/jboner/2841832上司の許可取ってサーバー 1台構築 259,200,000,000,000 nsもしあなたが上司の許可を取ってクラウドにサーバーを構築する場合、このくらい時間がかかるわけです。文字通り、桁が違う。
クラウドで高速化したよ数分で環境作れるよ数msで処理終わるよ前の処理が終わったら自動で動くよ
承認待ち3日他チームの返事待ち6時間稟議○週間意思決定3時間人間が一連のプロセスに関わることによって、これだけ時間がかかっちゃうわけですね。
承認待ち3日他チームの返事待ち6時間稟議○週間意思決定3時間VUCAの時代においては、人間の存在自体がボトルネック
設定ミス伝達漏れ見落とし機密情報を間違ってコミットするしかも人間はミスをするんです。まったく、ロクなことしないですね人間
設定ミス伝達漏れ見落とし機密情報を間違ってコミットするあなたが居ない方が、仕事は早く回る
人間を挟まない仕組み作りAPIAPIAPI APIAPIAPI APIAPIAPIAPIじゃあどうすればいいかというと、人間の関与を無くせばいいわけです。そうすると、コンピューターのタイムスケールで物事が進むようになります。
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.mdこの前提にたって、クラウドネイティブ技術の定義を読んでみると、また違った読み方ができます。例えばこの近代的でダイナミックな環境とは
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.mdAPIでコントロール出来る環境
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DEFINITION.mdスケーラブルなアプリケーションを構築および実行するための能力とは
CNCFによるクラウドネイティブの定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。https://github.com/cncf/toc/blob/main/DFINITION.mdAPIを活用して、人間の関与を減らしつつ、大量のリソースを自動化できる仕組み作り
つまり、クラウドネイティブの本質とは全ての活動において『コンピュータの力でコンピュータを動かす』『人間の関与を無くす』を実践していくこと。https://github.com/cncf/toc/blob/main/DEFINITION.md
つまり、クラウドネイティブの本質とは全ての活動において『コンピュータの力でコンピュータを動かす』『人間の関与を無くす』を実践していくこと。技術に限らず適用できる考え方なので、私は『クラウドネイティブ思考』もしくは『クラウドネイティブマインドセット』と呼んでいます
こういう質問をよく受けますうちはAWSオンリーなんだけど、Kubernetes使った方が良いの?コンテナのほうが良いのかな・・・VMじゃダメ?オンプレやめて全部クラウドにしました。これでクラウドネイティブだよね?ベンダーがクラウドネイティブ製品売り込んできてるんだけど、やっぱりそういうの買った方がいい?そう考えると、よく言われるこれらの質問は
こういう質問をよく受けますうちはAWSオンリーなんだけど、Kubernetes使った方が良いの?コンテナのほうが良いのかな・・・VMじゃダメ?オンプレやめて全部クラウドにしました。これでクラウドネイティブだよね?ベンダーがクラウドネイティブ製品売り込んできてるんだけど、やっぱりそういうの買った方がいい?些末な問題
人を挟まない仕組みを作れるかどうかが全てコンテナを使っても、人が挟まったらメリットは消え去るdocker builddocker pushmvn package kubectl applyVMを使っても、クラウドネイティブは実現出来るgit push
“ボールを走らせろ。ボールは疲れない”ヨハン・クライフ
“クラウドを走らせろ。クラウドは疲れない”
Value Stream Mappingアイディア分析リリース設計リリース判定会議品質判定会議テストUATコードレビューProductionデプロイ開発StagingデプロイパフォーマンステストLT: 2d / PT: 1dLT: 3d / PT: 2dLT: 4d / PT: 3d LT: 1d / PT: 4h LT: 1d / PT: 2h LT: 1d / PT: 6h LT: 7d / PT: 1hLT: 1d / PT: 2hLT: 1d / PT: 6hLT: 10d / PT: 1hLT(リードタイム): 31日PT(プロセスタイム): 8.75日Value Stream Mappingを描いてみるといいでしょう。成果を出すための一連のプロセスで、それぞれどれだけ時間がかかっているかを書き出します。 PT=実際に手を動かしている時間、LT=待ち時間含めて要した時間
Value Stream Mappingアイディア分析リリース設計リリース判定会議品質判定会議テストUATコードレビューProductionデプロイ開発StagingデプロイパフォーマンステストLT: 2d / PT: 1dLT: 3d / PT: 2dLT: 4d / PT: 3d LT: 1d / PT: 4h LT: 1h / PT: 0.1h LT: 1d / PT: 6h LT: 7d / PT: 1hLT: 1h / PT: 0.1hLT: 1d / PT: 6hLT: 10d / PT: 1hLT(リードタイム): 31日⇒29日PT(プロセスタイム): 8.75日⇒8.25日コンテナ技術を導入することによって、これらのフェーズのLTとPTを削減できました。累計のLTは2日、PTは0.5日短縮できました。・・・なんかしょぼくない? どうして?よく見ると、もっとなんとかすべき項目がありそうです。
Value Stream Mappingアイディア分析リリース設計リリース判定会議品質判定会議テストUATコードレビューProductionデプロイ開発StagingデプロイパフォーマンステストLT: 2d / PT: 1dLT: 3d / PT: 2dLT: 4d / PT: 3d LT: 1d / PT: 4h LT: 1h / PT: 0.1h LT: 1d / PT: 6h LT: 7d / PT: 1hLT: 1h / PT: 0.1hLT: 1d / PT: 6hLT: 10d / PT: 1hLT(リードタイム): 31日⇒29日PT(プロセスタイム): 8.75日⇒8.25日クラウドネイティブ技術より、会議をなんとかすべきでは?
クラウドネイティブの本質とは全ての活動において『コンピュータの力でコンピュータを動かす』『人間の関与を無くす』を実践していくこと。https://github.com/cncf/toc/blob/main/DEFINITION.md
その会議、本当に必要?● 品質の判定が必要ならば、会議で話し合うのではなくテストを充実させて自動で判断させては?● リリースの判定は、『テストが全て通っていること』を基準にしてみては?● トラブルが起きたら速やかに切り戻せるようにすれば、人間による判定は要らないのでは? (システムの重要度による)● ビジネス視点ではなく、内向き視点の会議ではないか?問題が起きた際の責任の所在を曖昧にする目的で合議制にしていないか?
Value Stream Mappingアイディア分析リリース設計テストUATコードレビューProductionデプロイ開発StagingデプロイパフォーマンステストLT: 2d / PT: 1dLT: 3d / PT: 2dLT: 4d / PT: 3d LT: 1d / PT: 4h LT: 1h / PT: 0.1h LT: 1d / PT: 6hLT: 1h / PT: 0.1hLT: 1d / PT: 6hLT(リードタイム): 31日⇒14日PT(プロセスタイム): 8.75日⇒8.5日要らない会議を無くすことで、 LTを17日も短縮することができました。半分以下! まさに劇的な効果
DXデジタイゼーション会議リモート会議『デジタル化』と一言でいうのではなく、デジタイゼーション・デジタライゼーション・デジタルフォーメーションに分けて考えるべきと言われます。対面の会議をリモート会議にすることを『デジタイゼーション』とすると
DXデジタイゼーション会議リモート会議デジタルトランスフォーメーション会議リモート会議クラウドネイティブ思考クラウドネイティブ思考に則り、人間の関与を無くすためにそもそもの会議を無くすこと。これこそが、 真のデジタルトランスフォーメーション といえるのではないかと。
まとめ● クラウドネイティブの本質は2点○ 『コンピュータの力でコンピュータを動かす』○ 『人間の関与を無くす』● クラウドはAPIにより全てを自動化するポテンシャルを備えており、それをフル活用するための技術がクラウドネイティブ技術● クラウドネイティブ思考は技術に限らず全ての人に適用できる。全ての人が意識することで、デジタルトランスフォーメーションが達成できる
全ての人に、クラウドネイティブを