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
SRE study group 4th slide
Search
Korenaga Makoto
May 19, 2020
Technology
2
75
SRE study group 4th slide
Korenaga Makoto
May 19, 2020
Tweet
Share
More Decks by Korenaga Makoto
See All by Korenaga Makoto
SRE study group 3rd slide
hapoon
1
55
SRE study group 2nd slide
hapoon
1
48
SRE study group 1st slide
hapoon
1
58
Slackアプリを使ってデイリースクラムを効率化
hapoon
1
510
モノリシックからマイクロサービスへ
hapoon
0
110
Other Decks in Technology
See All in Technology
解析の定理証明実践@Lean 4
dec9ue
0
110
Кто отправит outbox? Валентин Удальцов, автор канала Пых
lamodatech
0
300
CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略
d120145
0
230
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
160
菸酒生在 LINE Taiwan 的後端雙刀流
line_developers_tw
PRO
0
1.1k
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
160
IIWレポートからみるID業界で話題のMCP
fujie
0
740
ハノーバーメッセ2025座談会.pdf
iotcomjpadmin
0
150
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
140
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
2
400
2025/6/21 日本学術会議公開シンポジウム発表資料
keisuke198619
2
480
Create a Rails8 responsive app with Gemini and RubyLLM
palladius
0
140
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.4k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Designing Experiences People Love
moore
142
24k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
GitHub's CSS Performance
jonrohan
1031
460k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Site-Speed That Sticks
csswizardry
10
650
Transcript
Site Reliability Engineering 4th DevOps unit study group Makoto Korenaga
アジェンダ 1. Googleにおける自動化の進化 2. リリースエンジニアリング 3. 単純さ
Googleにおける自動化の進化
自動化の価値 一貫性 何度も人によって行われるアクションはミスや品質の安定、信頼性という点で問題が ある。 例)アカウントの作成など
自動化の価値 プラットフォーム 適切に設計・実装された自動化はその後の自動化基盤(プラットフォーム)となり、間 違いを集約してくれるメリットがある
自動化の価値 高速な修復 システムでよくある障害解決を自動化することにより、MTTR(平均修復時間)を削減 することができる。
自動化の価値 時間の節約 自動化の為のコード化で初期コストはかかるが、その後は手作業での時間削減に繋 がる上に、作業がカプセル化されることにより誰でも実行できるようになる(属人化の 防止)
自動化のユースケース • ユーザーアカウントの作成 • サービス用のクラスタのターンアップおよびターンダウン • ソフトウェアやハードウェアのインストール準備や撤去 • 新しいバージョンのソフトウェアのロールアウト •
ランタイムの設定変更 • ランタイムの設定変更の特殊なケース:依存対象の設定変更
自動化の進化 • 自動化以前 データベースマスターのフェイルオーバーが手動で行われる状態 • 外部でメンテナンスされるシステム固有の自動化 SREでフェイルオーバーのスクリプトを持っている状態 • 外部でメンテナンスされる汎用の自動化 誰もが使用する汎用フェイルオーバーのスクリプトに追加されている状態
• 内部でメンテナンスされるシステム固有の自動化 データベース自身にフェイルオーバースクリプトが同梱されている状態 • システムが自動化を必要としない データベースが問題を検出し、人間の介入なしで自動フェイルオーバーできる状態
自分の仕事の自動化:何もかも自動化する • 手動でのフェイルオーバーは人間の時間をかなり消費し、最もうまくいっても99% の可用性しか得られず、ビジネス上の要求を満たせない • エラーバジェット内に収めるには1回のフェイルオーバーによる停止時間を30秒 以内にする必要があった フェイルオーバーの自動化 →フェイルオーバーに止まらずすべてを自動化する
リリースエンジニアリング
リリースエンジニアの役割 プロジェクトのリリースが確実に一貫して再現可能な方法で行われるようにする為に ツールの使用方法のベストプラクティスを定義する。 プロダクトを安全にデプロイしサービスを動作させ続ける為に、SREと協力し、変更の カナリアテスト、サービスの停止なしでの新リリースのプッシュ、問題が生じた機能の ロールバック戦略を開発する。
哲学 • セルフサービスモデル 自動化されたビルドシステムとデプロイメントツールの組み合わせでリリースを完全に自動化。 • 高速性 リリースを頻繁に行えるようにしバージョン間の変更をできるだけ少なくする • 密封ビルド ビルドツールは一貫性と再現性を持つ。別の開発者が同じコードをビルドした際に同じ結果になる。
• ポリシーと手順の強制 ◦ ソースコード変更の承認 ◦ リリースプロセス間の各手順の指定 ◦ 新しいリリースの作成とデプロイ
継続的ビルドとデプロイメント • ビルド GoogleではBlazeを使用(BazelとしてOSS化) • ブランチ • テスト 変更が投入される度にユニットテスト実行 •
パッケージ化 • Rapid 次ページで説明 • デプロイメント
Rapidアーキテクチャ • リクエストされたリビジョン番号を使い、 リリースブランチ生成 • Blazeを使ってバイナリコンパイルし、ユ ニットテストを実行(並列実行) •
システムテスト、カナリアデプロイメント の実施 • 各ステップの結果はロギングされ、リ リース後に変更に関するレポートが作成 される
設定管理 リリースエンジニアとSREが密に協力する領域の一つ • メインラインの設定使用 • バイナリと設定ファイルの同梱 • 設定ファイルをパッケージ化 • 外部ソースからの設定ファイル読み込み
頻繁に変更が必要だったり、動的な変更をする場合
まとめ リリースエンジニアリングは初期の段階から始めよう • パッケージのバージョン付けはどうするか? • 継続的ビルドやデプロイのモデルを採用するか?定期的なビルドが良いか? • リリース頻度はどれくらいか?
• 設定管理のポリシーはどうするか? • リリースに関して注目すべきメトリクスは? • リソース、期間や予算を計画されているか?
単純さ
システムの安定性とアジリティ 安定性を犠牲にしてアジリティを優先させる方が妥当なこともあります プロダクションソフトウェアの大部分は安定性とアジリティをバランス良く調整する必 要があります SREはソフトウェアの信頼性を高める為の手続き、プラクティス、ツールを作成する為 に働くと同時に開発者のアジリティに与える影響を最小限にとどめる必要もあります
退屈の美徳 ソフトウェアにおいて退屈なのは良いことで、プログラムには定められた通りに動作し 予想通りに作業目標を完遂してもらわなければなりません 必要な複雑さと想定外の複雑さを区別し、想定外の複雑さはエンジニアリングで解決 していくことが重要 • 受け持っているシステムに想定外の複雑さが生じていたら差し戻す • 関わっているシステムや運用を受け持つことになるシステムから複雑さを取り除 く努力を継続的に行う
単純さを保つ為に • 不要になったコードは削除する(無用な混乱をさせない為) ◦ BAD)コメントアウトして残す ◦ BAD)フラグで不要なコードを通らなくする • 最小限のAPI ◦
利用者に提供するメソッドや引数は必要最低限にする • モジュラー性 ◦ バイナリとバイナリ、バイナリと設定を疎結合にし単純にすることにより開発のアジリティとシス テムの安全性を同時に高めてくれる • リリースの単純さ ◦ 複数の変更をまとめてリリースより単一の変更をリリースする方が影響調査しやすい
• 時系列データからの実践的な アラート • オンコール対応 • 効果的なトラブルシューティン グ • 緊急対応
次回予告 第5回
ありがとうございました 参照: SRE サイトリライアビリティ エンジニアリング Googleの信頼性を支えるエンジニアリングチーム (オライリー・ジャパン)