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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Korenaga Makoto
May 19, 2020
Technology
92
2
Share
SRE study group 4th slide
Korenaga Makoto
May 19, 2020
More Decks by Korenaga Makoto
See All by Korenaga Makoto
SRE study group 3rd slide
hapoon
1
72
SRE study group 2nd slide
hapoon
1
66
SRE study group 1st slide
hapoon
1
68
Slackアプリを使ってデイリースクラムを効率化
hapoon
1
580
モノリシックからマイクロサービスへ
hapoon
0
120
Other Decks in Technology
See All in Technology
Sansanの認証基盤を支えるアーキテクチャとその振り返り
sansantech
PRO
1
150
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
130
JSTQB Expert Levelシラバス「テストマネジメント」日本語版のご紹介
ymty
0
110
OpenClawでPM業務を自動化
knishioka
2
370
【関西電力KOI×VOLTMIND 生成AIハッカソン】空間AIブレイン ~⼤阪おばちゃんフィジカルAIに続く道~
tanakaseiya
0
110
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
AI時代のシステム開発者の仕事_20260328
sengtor
0
320
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
540
I ran an automated simulation of fake news spread using OpenClaw.
zzzzico
1
550
AIにより大幅に強化された AWS Transform Customを触ってみる
0air
0
280
非同期・イベント駆動処理の分散トレーシングの繋げ方
ichikawaken
1
250
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
140
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
280
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
[SF Ruby Conf 2025] Rails X
palkan
2
880
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Designing Experiences People Love
moore
143
24k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Accessibility Awareness
sabderemane
0
90
WENDY [Excerpt]
tessaabrams
9
37k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
Optimising Largest Contentful Paint
csswizardry
37
3.6k
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の信頼性を支えるエンジニアリングチーム (オライリー・ジャパン)