Slide 1

Slide 1 text

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


Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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


Slide 5

Slide 5 text

  を使おう!


Slide 6

Slide 6 text

クラウドネイティブへのアプローチ
 ● 0からクラウドネイティブに作り直す:夢のある方針
 ○ 新規に作り始めるならこっち
 ○ 既存システムがある場合はビックバンリライトになる
 ■ 保証されるのはビッグバンだけ(Martin Fowler)
 ● リフト&シフトして徐々に最適化する:現実的な方針
 ○ 長期的な観点で計画を立てる必要がある
 ○ クラウドリフト後に最適化するためにリファクタリングしないと単 なるリホストになってしまう


Slide 7

Slide 7 text

クラウドネイティブとは
 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミック な環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプ ローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言 型APIがあります。 
 
 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動 化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことがで きます。
 
 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持し て、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーショ ンを誰もが利用できるようにします。 
 CNCF Cloud Native Definition v1.0 : https://github.com/cncf/toc/blob/main/DEFINITION.md 


Slide 8

Slide 8 text

クラウドネイティブとは
 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミック な環境において、 スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプ ローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言 型APIがあります。 
 
 これらの手法により、 回復性、管理力、および可観測性のある疎結合システム が実現します。 これらを 堅牢な自動 化と組み合わせることで、エンジニアは インパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うこと がで きます。
 
 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持し て、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、これらのイノベーショ ンを誰もが利用できるようにします。 
 CNCF Cloud Native Definition v1.0 : https://github.com/cncf/toc/blob/main/DEFINITION.md 


Slide 9

Slide 9 text

クラウドネイティブのメリット
 素早く継続的にユーザに価値を届ける
 ● スケーラブル
 ● 堅牢な自動化
 ● 回復性
 ● 管理のしやすさ
 ● 可観測性
 ● 疎結合
 変更を最小限の労力で頻繁かつ予測どおりに行う


Slide 10

Slide 10 text

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


Slide 11

Slide 11 text

 がある世界とない世界


Slide 12

Slide 12 text

 のある世界


Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

特徴
 
 ● コンテナの恩恵
 ○ どの環境でも同じように動く
 ● K8s の恩恵
 ○ 宣言的な構成管理
 ○ 開発と運用の関心ごとを分離
 ○ 自動化されたロールアウト/ロールバック
 ○ 自己修復
 ● 組織としてK8s をキャッチアップしていく必要性


Slide 16

Slide 16 text

 のない世界


Slide 17

Slide 17 text

K8s のない世界
 
 Golden Image git push Artifact Dev Ops/SRE Deploy script CI

Slide 18

Slide 18 text

K8s のない世界
 
 Golden Image git push Artifact Dev Deploy script Ops/SRE CI

Slide 19

Slide 19 text

特徴
 ● 以前の組織構造をそのまま持っていける
 ○ 組織の役割を大きく変えずにクラウドリフトできる
 ○ 最終的にはクラウドに適応した組織構造に変える
 ● 元々の構成をそのままツールに乗せるので理解しやすい
 ○ 局所的に作業を自動化できる
 ● K8s の学習コストを払うことを避けられる


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

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


Slide 23

Slide 23 text

K8s のある世界とない世界の差分
 ● K8s がある世界
 ○ 宣言的
 ○ コンテナイメージという単一の成果物
 ○ インフラ・K8s・アプリを管理
 ● K8s がない世界
 ○ 命令的
 ○ Artifact と Golden Image の組み合わせ
 ○ インフラ・OS・アプリを管理


Slide 24

Slide 24 text

共通な部分
 ● テストを書いてCICDを頻繁に回すことが必要
 ○ CIで仕様と実装のズレを検知
 ○ 環境への継続的なデプロイ
 ● 常にデプロイ可能な成果物
 ● IaC は必須
 ● 自動化によってレバレッジを効かせていく
 ● 分散モノリスになる可能性


Slide 25

Slide 25 text

K8s がない世界の落とし穴


Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

AWS Cloud K8s がない世界の落とし穴
 
 Golden Image git push Artifact Dev Deploy script SRE

Slide 28

Slide 28 text

K8s がない世界の落とし穴
 ● 一つのチームで開発のサイクルが回せない
 ○ 組織間のオーバーヘッドが発生し、素早くサイクルを回せない
 ● クラウドシフトして局所的な自動化で満足してしまうため、組織の境界が 変わる力学が働かない
 ● アドホックな自動化による業務の硬直化
 ● K8s やコンテナが解決している問題を自分たちで実装する必要あり
 ● チーム間の技術スタックが異なり、組織内で共有可能なナレッジが蓄積さ れない可能性


Slide 29

Slide 29 text

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


Slide 30

Slide 30 text

対応策
 ● Stream-aligned team
 ○ ユーザに価値を届けることが可能な チーム
 ● Enabling team
 ○ Stream-aligned team をサポートして出 来るようにする
 ● Platform team
 ○ セルフサービスなプラットフォームを Stream-aligned team に提供
 Team Topologies: Organizing Business and Technology Teams for Fast Flow 


Slide 31

Slide 31 text

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


Slide 32

Slide 32 text

対応策
 
 Golden Image git push Artifact Deploy script CI

Slide 33

Slide 33 text

でも、そもそも


Slide 34

Slide 34 text

でも、そもそも......
 ● K8s の学習コストを払わない代わりに、自分たちで作りこまなくてはなら ない
 ○ 仕組みに乗ることで落とし穴を避けられる
 ■ Kubernetes
 ■ マネージドサービス
 ● 変化に対応できる組織になる必要がある
 ○ 組織レベルで古き良き時代から変わる必要がある
 ● (クラウドリフトも大変だけど)クラウドジャーニーに終わりはないという
 マインドが必要


Slide 35

Slide 35 text

まとめ
 ● クラウドネイティブのメリットを最大化
 ○ テストやCICDを整備することの必要性
 ○ 独立したチームで開発サイクルをまわす
 ● K8s がなくてもクラウドネイティブのメリットを受けることは可能
 ● K8s があると向かっていくべき方向が見えやすくなる
 ● クラウドジャーニーに終わりはない