Save 37% off PRO during our Black Friday Sale! »

Kubernetes がない世界の CloudNative ジャーニー

Ae1bcb47094f8a9352a3fedcfdc6a4e3?s=47 athagi
March 12, 2021
130

Kubernetes がない世界の CloudNative ジャーニー

20210312 に行われた CloudNative Days Spring 2021 ONLINE のスライドです

Ae1bcb47094f8a9352a3fedcfdc6a4e3?s=128

athagi

March 12, 2021
Tweet

Transcript

  1. Kubernetesがない世界のCloudNative ジャーニー
 あさぎ(@_athagi)
 CloudNative Days Spring 2021 ONLINE (#CNDO2021)


  2. 古き良き導入
 LB AP AP AP DB DB Dev git push

    Ops
  3. 古き良き導入
 Dev git push LB AP AP AP DB DB

    Ops
  4. これからの時代は   だ!
 SaaS
 クラウド


  5.   を使おう!


  6. クラウドネイティブへのアプローチ
 • 0からクラウドネイティブに作り直す:夢のある方針
 ◦ 新規に作り始めるならこっち
 ◦ 既存システムがある場合はビックバンリライトになる
 ▪ 保証されるのはビッグバンだけ(Martin Fowler)


    • リフト&シフトして徐々に最適化する:現実的な方針
 ◦ 長期的な観点で計画を立てる必要がある
 ◦ クラウドリフト後に最適化するためにリファクタリングしないと単 なるリホストになってしまう

  7. クラウドネイティブとは
 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミック な環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプ ローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言 型APIがあります。 
 
 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動 化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことがで

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

  8. クラウドネイティブとは
 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミック な環境において、 スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプ ローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言 型APIがあります。 
 
 これらの手法により、 回復性、管理力、および可観測性のある疎結合システム

    が実現します。 これらを 堅牢な自動 化と組み合わせることで、エンジニアは インパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うこと がで きます。
 
 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持し て、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーショ ンを誰もが利用できるようにします。 
 CNCF Cloud Native Definition v1.0 : https://github.com/cncf/toc/blob/main/DEFINITION.md 

  9. クラウドネイティブのメリット
 素早く継続的にユーザに価値を届ける
 • スケーラブル
 • 堅牢な自動化
 • 回復性
 • 管理のしやすさ


    • 可観測性
 • 疎結合
 変更を最小限の労力で頻繁かつ予測どおりに行う

  10.   じゃないとクラウドネイティブにはなれない?


  11.  がある世界とない世界


  12.  のある世界


  13. K8s のある世界
 CI Container Registry Dev Ops/SRE git push image

    push manifest
  14. K8s のある世界
 CI Container Registry Dev Ops/SRE git push image

    push manifest
  15. 特徴
 
 • コンテナの恩恵
 ◦ どの環境でも同じように動く
 • K8s の恩恵
 ◦

    宣言的な構成管理
 ◦ 開発と運用の関心ごとを分離
 ◦ 自動化されたロールアウト/ロールバック
 ◦ 自己修復
 • 組織としてK8s をキャッチアップしていく必要性

  16.  のない世界


  17. K8s のない世界
 
 Golden Image git push Artifact Dev Ops/SRE

    Deploy script CI
  18. K8s のない世界
 
 Golden Image git push Artifact Dev Deploy

    script Ops/SRE CI
  19. 特徴
 • 以前の組織構造をそのまま持っていける
 ◦ 組織の役割を大きく変えずにクラウドリフトできる
 ◦ 最終的にはクラウドに適応した組織構造に変える
 • 元々の構成をそのままツールに乗せるので理解しやすい
 ◦

    局所的に作業を自動化できる
 • K8s の学習コストを払うことを避けられる

  20. クラウドネイティブのメリット
 「クラウドネイティブになりました!」という
 プレスリリース


  21. クラウドネイティブのメリット
 ではなく


  22. クラウドネイティブのメリット
 素早く継続的にユーザに価値を届ける


  23. K8s のある世界とない世界の差分
 • K8s がある世界
 ◦ 宣言的
 ◦ コンテナイメージという単一の成果物
 ◦

    インフラ・K8s・アプリを管理
 • K8s がない世界
 ◦ 命令的
 ◦ Artifact と Golden Image の組み合わせ
 ◦ インフラ・OS・アプリを管理

  24. 共通な部分
 • テストを書いてCICDを頻繁に回すことが必要
 ◦ CIで仕様と実装のズレを検知
 ◦ 環境への継続的なデプロイ
 • 常にデプロイ可能な成果物
 •

    IaC は必須
 • 自動化によってレバレッジを効かせていく
 • 分散モノリスになる可能性

  25. K8s がない世界の落とし穴


  26. K8s がない世界の落とし穴
 Dev git push LB AP AP AP DB

    DB Ops
  27. AWS Cloud K8s がない世界の落とし穴
 
 Golden Image git push Artifact

    Dev Deploy script SRE
  28. K8s がない世界の落とし穴
 • 一つのチームで開発のサイクルが回せない
 ◦ 組織間のオーバーヘッドが発生し、素早くサイクルを回せない
 • クラウドシフトして局所的な自動化で満足してしまうため、組織の境界が 変わる力学が働かない
 •

    アドホックな自動化による業務の硬直化
 • K8s やコンテナが解決している問題を自分たちで実装する必要あり
 • チーム間の技術スタックが異なり、組織内で共有可能なナレッジが蓄積さ れない可能性

  29. 対応策
 • プロダクト開発チームがセルフサービスで運用していける状 態を目指す
 • オプションとして運用のベストプラクティスを導入できるように するためのある程度の共通化
 • 局所最適にならないためのプロダクト全体のデザイン


  30. 対応策
 • Stream-aligned team
 ◦ ユーザに価値を届けることが可能な チーム
 • Enabling team


    ◦ Stream-aligned team をサポートして出 来るようにする
 • Platform team
 ◦ セルフサービスなプラットフォームを Stream-aligned team に提供
 Team Topologies: Organizing Business and Technology Teams for Fast Flow 

  31. クラウドネイティブの時代
 Stream-aligned team
 • プロダクト開発
 • ビルド・デリバリー・デプロイ
 • テスト環境の管理
 •

    本番環境の運用
 
 Enabling team(SRE)
 • プロダクトチームの補助
 ▪ 運用やCICDのプラクティスの提供
 
 Platform team
 • セルフサービスのプラットフォーム
 対応策
 古き良き時代
 Dev
 • プロダクト開発
 • ビルド・デリバリー
 
 Ops
 • テスト環境の管理
 • 本番環境へのデプロイ
 • 運用
 • 監視

  32. 対応策
 
 Golden Image git push Artifact Deploy script CI

  33. でも、そもそも


  34. でも、そもそも......
 • K8s の学習コストを払わない代わりに、自分たちで作りこまなくてはなら ない
 ◦ 仕組みに乗ることで落とし穴を避けられる
 ▪ Kubernetes
 ▪

    マネージドサービス
 • 変化に対応できる組織になる必要がある
 ◦ 組織レベルで古き良き時代から変わる必要がある
 • (クラウドリフトも大変だけど)クラウドジャーニーに終わりはないという
 マインドが必要

  35. まとめ
 • クラウドネイティブのメリットを最大化
 ◦ テストやCICDを整備することの必要性
 ◦ 独立したチームで開発サイクルをまわす
 • K8s がなくてもクラウドネイティブのメリットを受けることは可能


    • K8s があると向かっていくべき方向が見えやすくなる
 • クラウドジャーニーに終わりはない