Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

athagi
March 12, 2021
240

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

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

athagi

March 12, 2021
Tweet

Transcript

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

    あさぎ(@_athagi)

    CloudNative Days Spring 2021 ONLINE (#CNDO2021)


    View Slide

  2. 古き良き導入

    LB
    AP
    AP
    AP
    DB
    DB
    Dev
    git push
    Ops

    View Slide

  3. 古き良き導入

    Dev
    git push
    LB
    AP
    AP
    AP
    DB
    DB
    Ops

    View Slide

  4. これからの時代は   だ!

    SaaS

    クラウド


    View Slide

  5.   を使おう!


    View Slide

  6. クラウドネイティブへのアプローチ

    ● 0からクラウドネイティブに作り直す:夢のある方針

    ○ 新規に作り始めるならこっち

    ○ 既存システムがある場合はビックバンリライトになる

    ■ 保証されるのはビッグバンだけ(Martin Fowler)

    ● リフト&シフトして徐々に最適化する:現実的な方針

    ○ 長期的な観点で計画を立てる必要がある

    ○ クラウドリフト後に最適化するためにリファクタリングしないと単
    なるリホストになってしまう


    View Slide

  7. クラウドネイティブとは

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


    これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動
    化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことがで
    きます。


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

    CNCF Cloud Native Definition v1.0 : https://github.com/cncf/toc/blob/main/DEFINITION.md 


    View Slide

  8. クラウドネイティブとは

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


    これらの手法により、 回復性、管理力、および可観測性のある疎結合システム が実現します。 これらを 堅牢な自動
    化と組み合わせることで、エンジニアは インパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うこと がで
    きます。


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

    CNCF Cloud Native Definition v1.0 : https://github.com/cncf/toc/blob/main/DEFINITION.md 


    View Slide

  9. クラウドネイティブのメリット

    素早く継続的にユーザに価値を届ける

    ● スケーラブル

    ● 堅牢な自動化

    ● 回復性

    ● 管理のしやすさ

    ● 可観測性

    ● 疎結合

    変更を最小限の労力で頻繁かつ予測どおりに行う


    View Slide

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


    View Slide

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


    View Slide

  12.  のある世界


    View Slide

  13. K8s のある世界

    CI
    Container Registry
    Dev Ops/SRE
    git push
    image push
    manifest

    View Slide

  14. K8s のある世界

    CI
    Container Registry
    Dev Ops/SRE
    git push
    image push
    manifest

    View Slide

  15. 特徴


    ● コンテナの恩恵

    ○ どの環境でも同じように動く

    ● K8s の恩恵

    ○ 宣言的な構成管理

    ○ 開発と運用の関心ごとを分離

    ○ 自動化されたロールアウト/ロールバック

    ○ 自己修復

    ● 組織としてK8s をキャッチアップしていく必要性


    View Slide

  16.  のない世界


    View Slide

  17. K8s のない世界


    Golden Image
    git push
    Artifact
    Dev
    Ops/SRE
    Deploy script
    CI

    View Slide

  18. K8s のない世界


    Golden Image
    git push
    Artifact
    Dev
    Deploy script
    Ops/SRE
    CI

    View Slide

  19. 特徴

    ● 以前の組織構造をそのまま持っていける

    ○ 組織の役割を大きく変えずにクラウドリフトできる

    ○ 最終的にはクラウドに適応した組織構造に変える

    ● 元々の構成をそのままツールに乗せるので理解しやすい

    ○ 局所的に作業を自動化できる

    ● K8s の学習コストを払うことを避けられる


    View Slide

  20. クラウドネイティブのメリット

    「クラウドネイティブになりました!」という

    プレスリリース


    View Slide

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

    ではなく


    View Slide

  22. クラウドネイティブのメリット

    素早く継続的にユーザに価値を届ける


    View Slide

  23. K8s のある世界とない世界の差分

    ● K8s がある世界

    ○ 宣言的

    ○ コンテナイメージという単一の成果物

    ○ インフラ・K8s・アプリを管理

    ● K8s がない世界

    ○ 命令的

    ○ Artifact と Golden Image の組み合わせ

    ○ インフラ・OS・アプリを管理


    View Slide

  24. 共通な部分

    ● テストを書いてCICDを頻繁に回すことが必要

    ○ CIで仕様と実装のズレを検知

    ○ 環境への継続的なデプロイ

    ● 常にデプロイ可能な成果物

    ● IaC は必須

    ● 自動化によってレバレッジを効かせていく

    ● 分散モノリスになる可能性


    View Slide

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


    View Slide

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

    Dev
    git push
    LB
    AP
    AP
    AP
    DB
    DB
    Ops

    View Slide

  27. AWS Cloud
    K8s がない世界の落とし穴


    Golden Image
    git push
    Artifact
    Dev
    Deploy script
    SRE

    View Slide

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

    ● 一つのチームで開発のサイクルが回せない

    ○ 組織間のオーバーヘッドが発生し、素早くサイクルを回せない

    ● クラウドシフトして局所的な自動化で満足してしまうため、組織の境界が
    変わる力学が働かない

    ● アドホックな自動化による業務の硬直化

    ● K8s やコンテナが解決している問題を自分たちで実装する必要あり

    ● チーム間の技術スタックが異なり、組織内で共有可能なナレッジが蓄積さ
    れない可能性


    View Slide

  29. 対応策

    ● プロダクト開発チームがセルフサービスで運用していける状
    態を目指す

    ● オプションとして運用のベストプラクティスを導入できるように
    するためのある程度の共通化

    ● 局所最適にならないためのプロダクト全体のデザイン


    View Slide

  30. 対応策

    ● Stream-aligned team

    ○ ユーザに価値を届けることが可能な
    チーム

    ● Enabling team

    ○ Stream-aligned team をサポートして出
    来るようにする

    ● Platform team

    ○ セルフサービスなプラットフォームを
    Stream-aligned team に提供

    Team Topologies: Organizing Business and Technology Teams for Fast Flow

    View Slide

  31. クラウドネイティブの時代

    Stream-aligned team

    ● プロダクト開発

    ● ビルド・デリバリー・デプロイ

    ● テスト環境の管理

    ● 本番環境の運用


    Enabling team(SRE)

    ● プロダクトチームの補助

    ■ 運用やCICDのプラクティスの提供


    Platform team

    ● セルフサービスのプラットフォーム

    対応策

    古き良き時代

    Dev

    ● プロダクト開発

    ● ビルド・デリバリー


    Ops

    ● テスト環境の管理

    ● 本番環境へのデプロイ

    ● 運用

    ● 監視


    View Slide

  32. 対応策


    Golden Image
    git push
    Artifact
    Deploy script
    CI

    View Slide

  33. でも、そもそも


    View Slide

  34. でも、そもそも......

    ● K8s の学習コストを払わない代わりに、自分たちで作りこまなくてはなら
    ない

    ○ 仕組みに乗ることで落とし穴を避けられる

    ■ Kubernetes

    ■ マネージドサービス

    ● 変化に対応できる組織になる必要がある

    ○ 組織レベルで古き良き時代から変わる必要がある

    ● (クラウドリフトも大変だけど)クラウドジャーニーに終わりはないという

    マインドが必要


    View Slide

  35. まとめ

    ● クラウドネイティブのメリットを最大化

    ○ テストやCICDを整備することの必要性

    ○ 独立したチームで開発サイクルをまわす

    ● K8s がなくてもクラウドネイティブのメリットを受けることは可能

    ● K8s があると向かっていくべき方向が見えやすくなる

    ● クラウドジャーニーに終わりはない


    View Slide