Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クラウドネイティブの本質から考える、生産性と信頼性の両立
Search
Kazuto Kusama
July 16, 2024
Technology
3
740
クラウドネイティブの本質から考える、生産性と信頼性の両立
開発生産性カンファレンス2024でお話しした資料です
Kazuto Kusama
July 16, 2024
Tweet
Share
More Decks by Kazuto Kusama
See All by Kazuto Kusama
「責任ある開発」を!フルサービスオーナーシップが変えるエンジニアリング文化
jacopen
9
1.8k
手を動かさないインシデント対応〜自動化で迅速・正確な運用を目指す〜
jacopen
3
370
エンジニアとしてのキャリアを支える自宅サーバー
jacopen
12
6.9k
Grafana x PagerDuty Better Together
jacopen
1
590
「共通基盤」を超えよ! 今、Platform Engineeringに取り組むべき理由
jacopen
27
8.1k
いろんな外資、いろんなロールで働いてみた話
jacopen
14
5k
サービスの危機に立ち向かうリーダーシップ~インシデントコマンダーの役割と戦略~
jacopen
20
6.9k
5分でわかる(かもしれない)Platform Engineering
jacopen
4
930
ChatOpsで回す、クラウドネイティブな組織運営
jacopen
1
250
Other Decks in Technology
See All in Technology
App Clipの魔法: iOSデザイン開発の新時代
judau
2
900
StoreKit 2によるモダンなアプリ内課金
0si43
0
630
すべてのヘルスケアデータを紐解く.pdf
coe
0
370
What is “Lambdaless” Serverless
smt7174
0
110
エッジはフロントエンドなのか? バックエンドなのか? について考えてみる
aiji42
7
2.7k
ゼットラボにおける一歩進んだ Kubernetes向けストレージ管理方法
ysakashita
0
150
ラクスCTOが語る顧客視点を重視したプロダクト開発 / RAKUSTechCon2024_Kude
rakus_dev
0
240
アプリ内課金と自社の認証認可基盤を連携する複雑な課金ネットワークを構築する
shimastripe
2
530
Datadogマニアック機能活用術
biwashi
5
390
JAWS-UG主催 週刊AWSキャッチアップ 生成AI編 2024/8/5週
minorun365
PRO
1
110
存在感が薄い?!意外とがんばってるさくらインターネットFEチーム / Frontend Conference 2024
bcrikko
1
1.7k
実践vs理論 叩き上げのスクラムマスターが実践した手法を研究者が学術的に分析する / Practical Scrum Master vs. Theoretical Scrum Researcher
shinop
0
300
Featured
See All Featured
Music & Morning Musume
bryan
46
6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
26
8.8k
Done Done
chrislema
180
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
652
58k
Optimizing for Happiness
mojombo
373
69k
BBQ
matthewcrist
83
9.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
22
1.7k
Into the Great Unknown - MozCon
thekraken
28
1.3k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
21
3.9k
Design by the Numbers
sachag
277
19k
A Tale of Four Properties
chriscoyier
155
22k
Transcript
クラウドネイティブの 本質から考える 生産性と信頼性の両立 PagerDuty - Product Evangelist Kazuto Kusama @jacopen
Kazuto Kusama @jacopen Product Evangelist @PagerDuty Japan Organizer @Platform Engineering
Meetup Founder @Cloud Native Innovators Association Organizer @CloudNative Days
PagerDutyってご存じですか?
1. 検知 2. トリアージ 3. 動員 4. 協⼒/解決 5. 学習/予防
ライフサイクル全体を通して、インシデントの状況をリアルタイムで可視化 インシデントを特定 ⾃動処理 運⽤改善のための 知⾒を提供 最適な担当者に通知 迅速な解決を⽀援 あらゆるツールから イベントを受信 架電、 SMS、メール Appプッシュ通知、チャット ⾃動エスカレーション スケジュール管理 診断‧修復作業の⾃動化 チーム内外と円滑に連携 クラウド コンテナ マイクロサービス ネットワーク アプリ‧サービス セキュリティ データベース サーバー ソーシャル PagerDuty Operations Cloud インシデントをより早く‧少ないリソースで解決 / 将来のインシデントを未然に防ぐ 担当者が最適な 通知⽅法を選択 対応履歴 MTTA/MTTR 分析 担当者の負荷状況 ポストモーテム 解決のヒントを提⽰ • 過去の類似インシデント • 直近の構成/コード変更 ...etc. 80%-99% ノイズ削減 700+ Integrations
インシデント対応 必要なアラートだけに絞り込み 電話やSMS、プッシュ通知、Slack など、人それぞれ適した通知 一次対応者 (応答がなければ) 二次対応者 オンコールの ローテーション
開発生産性?
クラウドとか、プラットフォームの切り口で話します
クラウドネイティブ技術ってありますよね • CI/CDとか • コンテナとか • Kubernetesとか • サービスメッシュとか
こういう質問をよく受けます うちはAWSオンリー なんだけど、 Kubernetes使った方が 良いの? コンテナのほうが 良いのかな・・・ VMじゃダメ? オンプレやめて全部 クラウドにしました。
これでクラウドネイティ ブだよね? ベンダーがクラウド ネイティブ製品売り込んで きてるんだけど、やっぱりそう いうの買った方がいい?
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の 労力で頻繁かつ予測どおりに行うことができます。
https://github.com/cncf/toc/blob/main/DEFINITION.md
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の 労力で頻繁かつ予測どおりに行うことができます。
https://github.com/cncf/toc/blob/main/DEFINITION.md ?
みなさん、クラウドは使ってますよね?
そもそもクラウドって何?
NISTによるクラウドコンピューティングの定義 クラウドの基本的な特徴 • オンデマンド・セルフサービス • 幅広いネットワークアクセス • リソースの共用 • スピーディな拡張性
• サービスが計測可能であること https://www.ipa.go.jp/files/000025366.pdf
NISTによるクラウドコンピューティングの定義 クラウドの基本的な特徴 • オンデマンド・セルフサービス • 幅広いネットワークアクセス • リソースの共用 • スピーディな拡張性
• サービスが計測可能であること https://www.ipa.go.jp/files/000025366.pdf 使った分だけ課金 低い初期費用 スケールしやすい 運用を肩代わり リソースの 調達が早い
NISTによるクラウドコンピューティングの定義 クラウドの基本的な特徴 • オンデマンド・セルフサービス • 幅広いネットワークアクセス • リソースの共用 • スピーディな拡張性
• サービスが計測可能であること https://www.ipa.go.jp/files/000025366.pdf 使った分だけ課金 低い初期費用 スケールしやすい 運用を肩代わり リソースの 調達が早い APIでコントロール出 来る
APIがあると何が出来る? • プログラムから叩ける • 自動化出来る • サービス間連携がしやすい ⇨ IaCツールで構築、CI/CDツールからのデプロイ、オートス ケール、etc..
クラウドで 高速化したよ 数分で 環境作れるよ 数msで 処理終わるよ 前の処理が 終わったら 自動で動くよ
クラウドで 高速化したよ 数分で 環境作れるよ 数msで 処理終わるよ 前の処理が 終わったら 自動で動くよ
Latency Numbers Every Programmer Should Know https://gist.github.com/jboner/2841832 https://colin-scott.github.io/personal_website/research/interactive_latency.html
Latency Numbers Every Programmer Should Know https://gist.github.com/jboner/2841832 上司の許可取ってサーバー 1台構築 259,200,000,000,000
ns
クラウドで 高速化したよ 数分で 環境作れるよ 数msで 処理終わるよ 前の処理が 終わったら 自動で動くよ
承認待ち 3日 他チームの 返事待ち6時間 稟議◦週間 意思決定 3時間
承認待ち 3日 他チームの 返事待ち6時間 稟議◦週間 意思決定 3時間 クラウドネイティブの時代では 人間の存在自体がボトルネック
設定ミス 伝達漏れ 見落とし 機密情報を 間違って コミットする
設定ミス 伝達漏れ 見落とし 機密情報を 間違って コミットする あなたが居ない方が、仕事は早く回る
人間を挟まない 仕組み作り API API API API API API API API
API API
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の 労力で頻繁かつ予測どおりに行うことができます。
https://github.com/cncf/toc/blob/main/DEFINITION.md
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の 労力で頻繁かつ予測どおりに行うことができます。
https://github.com/cncf/toc/blob/main/DEFINITION.md APIで叩けるインフラ
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、 スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の
労力で頻繁かつ予測どおりに行うことができます。 https://github.com/cncf/toc/blob/main/DEFINITION.md
CNCFによるクラウドネイティブの定義 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど の近代的でダイナミックな環境において、 スケーラブルなアプリケーションを構築および実行す るための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッ シュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型 APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の
労力で頻繁かつ予測どおりに行うことができます。 https://github.com/cncf/toc/blob/main/DFINITION.md APIを活用して、人間の関与を減らしつつ、大 量のリソースを自動化できる仕組み作り
つまり、クラウドネイティブの本質とは 全ての活動において 『コンピュータの力でコンピュータを動かす』 『人間の関与を無くす』 を実践していくこと。 クラウドネイティブ技術はこれが出来るポテンシャルを持ってい る https://github.com/cncf/toc/blob/main/DEFINITION.md
こういう質問をよく受けます うちはAWSオンリー なんだけど、 Kubernetes使った方が 良いの? コンテナのほうが 良いのかな・・・ VMじゃダメ? オンプレやめて全部 クラウドにしました。
これでクラウドネイティ ブだよね? ベンダーがクラウド ネイティブ製品売り込んで きてるんだけど、やっぱりそう いうの買った方がいい?
人を挟まない仕組みを作れるかどうかが全て コンテナを使っても、人が挟まったらメリットは消え去る docker build docker push mvn package kubectl apply
VMを使っても、クラウドネイティブは実現出来る git push
留意すべき点
真のDevOps 開発者が、アプリをエンドツーエンドでデプロイし、実行する ただし、多くの組織にとって現実的ではない Kubernetes Buildkit Helm Dockerfile Grafana Prometheus GitHub
Actions React Next.js Security Node.js Terraform ArgoCD APM Compliance 認知負荷が 高すぎる これをやり切れ る人材は少ない
認知負荷の増大 https://www.infoq.com/articles/platform-engineering-primer/ より引用
認知負荷を低く、生産性を高めるプラットフォーム • クラウドネイティブな自動化基盤作りを、開発者自身が担うこ とによる認知負荷の高まりが問題になりつつある • 仕組み作りを担うPlatform Teamと協力し、認知負荷を高め ずにクラウドネイティブ技術を取り込んでいく • Platform
Engineeringという分野が発展中
抽象化した機能の提供 Platform Engineering https://tag-app-delivery.cncf.io/whitepapers/platforms/ より和訳 プロダクトチーム プラットフォームチーム インター フェース 提供
機能 ドキュメント GUI (ポータル) プロジェクトテンプレート APIとCLI 環境とリソースの提供 インフラリソース データ保管 メッセージング ID管理と認証 CI/CD サービス連携 成果物管理 セキュリティ 可観測性
こんな話も
一方でこんな話もあります “障害のほとんどはデプロイによって引き起こされる。した がって、デプロイが増えると障害も増え、結果としてインシ デント管理、軽減策、ポストモーテムが必要となる ” エレガントパズル エンジニアのマネジメントという難問にあなたはどう立ち向かう のか より引用
生産性と信頼性をどう両立していくか • 生産性を高めていくことはとても重要 • 一方で、高速に回せるようになるとその分障害の可能性が高くなる
信頼性を高めるための大方針 基本的にはクラウドネイティブ思考を尊重 • 『コンピュータの力でコンピュータを動かす』 • 『人間の関与を無くす』
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
✅ 素早く気づく ✅ 素早く直す ⇨インシデント対応
オンコール 必要なアラートだけに絞り込み 電話やSMS、プッシュ通知、Slack など、人それぞれ適した通知 一次対応者 オンコールの ローテーション
+ だと Past Incidents 過去の類似インシデント一覧と、 発生時期・回数のヒートマップを表示。 Related Incidents 他サービスで現在発生している、 関連性の高いインシデントを表示。
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
軽減策 アーキテクチャの 改善 自動化
GUI/CodeによるJob定義と管理 50 50 柔軟なJob起動⼿段 認証 120を超える インテグレーション PagerDuty GenAI によるJob作成⽀援
オンプレ環境にも セキュアにアクセス Enterprise Runner - Event-Driven - Human-in-the-Loop - スケジューリング Web GUI API CLI Webhook PagerDuty Runbook Automation
アラートに応じた自動化 アラートを受信 インシデントを起票 切り分けのための タスクを実行 自動修復 軽減策のタスクを 実行
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
予測できないものを自 動化するのは困難
顧客影響 予測可能 予測不可能 なし あり 計画メンテナンス インシデント 通常運用 優先度低 システム障害
ポストモーテム 継続的な学び
ポストモーテム SREのプラクティスでおなじみ • インシデントのインパクト • 緩和や解消のために行われたアクション • 根本原因 • インシデントの再発を避けるためのフォローアップ
きちんと纏めておくことで、組織としての成長に繋がる。
+ だと Postmotems ポストモーテムの作成を支援。受信したイベント、ステータスアップデート、インシデント ノート、Slackの会話などからタイムラインを作成
マニュアル リアクティブ レスポンシブ 積極的 予防的 問題は社内チームではなく 顧客によって特定される。 オペレーションプロセスはレガ シーシステムに依存しており、イ ンシデントは手動で発生し、チ
ケットシステムなどのキューイン グワークフローを使用して処理 される。 緊急時に専門家に迅速にアク セスするための仕組みがほとん どない。 常に消火モード 初期の技術投資により、クラウ ドホスティングやアプリケーショ ンの成熟度に応じてリアルタイ ムでの可視化と動員が可能に なる。 分散型チームのアプローチが 見られるが、スキルはサイロ 化されている。 インシデントを管理するための 明確なプロセスがない。 問題が発生する前に先回り 優れた顧客体験が常に維持さ れる。 機械学習に基づく予測的な修 正が行われる。 組織全体で一貫したベストプラ クティスが実施される。 高度に自動化されたプロセスに より、雑務やエスカレーションが 排除される。 継続的な学習、改善、予防が技 術的でない関係者を含む組織 全体で行われる。 チームは変更の将来的な影響 を予測できる。 問題が発生するたびに解決 チームは顧客に影響を与える 問題をより迅速に把握できる。 機械学習を使用して潜在的な 問題を特定し、誤検知を減ら し、ノイズを低減する。 問題は自動的に特定され、専 門家によって対応されるが、適 切なチームを編成することは 依然として課題である。 分散型チームがマイクロサー ビスの完全な責任を持つよう になる。 シームレスで協調的な 問題管理 問題は顧客が気付く前に技術 チームによって検出・修正され る。 問題に関する情報は、ビジネス のステークホルダーを含む適切 な人物に提供される。 プログラム学習と最適化の機会 の特定が一般化している。 分散型チームは、サービス変更 の影響を理解し、運用の責任を 完全に負う。 チームとして対応し、運用の成熟度を上げていく
まとめ • クラウドネイティブの時代においては、『コンピュータの力でコンピュータを動 かす』『人間の関与を無くす』の意識が大事 • そうすることで、コンピュータの速度で物事を動かし、生産性を高める • その分インシデントが起きる確率も高くなるので、信頼性を高める取り組みも 大事 •
PagerDutyを活用して、継続的な学びを行うことで生産性と信頼性を両立させ る
None