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 / How to Survive as The First SRE
Search
Fukao Moto
June 28, 2018
Technology
0
2.4k
現場で使えるSRE / How to Survive as The First SRE
リリースから1年7ヶ月で1000万ダウンロードを超えるクラシルの成長を1人目のSREとして支えた話
- kurashiruの軌跡
- 信頼性を高める
- SREガイドライン
- 1人目のSRE
Fukao Moto
June 28, 2018
Tweet
Share
More Decks by Fukao Moto
See All by Fukao Moto
RedshiftとGlueで簡単データウェアハウス / Data Warehousing with Redshift and Glue
motobrew
0
600
Other Decks in Technology
See All in Technology
.NET 9 のパフォーマンス改善
nenonaninu
0
1.2k
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
160
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
AWS環境におけるランサムウェア攻撃対策の設計
nrinetcom
PRO
0
120
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
110
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
420
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
180
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.5k
MLOps の現場から
asei
7
660
APIとはなにか
mikanichinose
0
110
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
1k
Featured
See All Featured
KATA
mclloyd
29
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Become a Pro
speakerdeck
PRO
26
5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Visualization
eitanlees
146
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Documentation Writing (for coders)
carmenintech
66
4.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Rails Girls Zürich Keynote
gr2m
94
13k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Transcript
現場で使えるSRE © 2018 Fukao Moto
kurashiruの軌跡 SREガイドライン 1人目のSRE 信頼性を高める 現場で使える Site Reliability Engineering
プロの料理人(8年) タコライス研究家 宇宙兄弟好き SRE and データ可視化推進室 Fukao Moto 深尾もとのぶ
学生時代にアルバイトしていた 地元岐阜のピッツェリアへ就職 連日1時間待ちの行列 未経験でプログラマになる 半年後に行った現場が Linuxファイルシステム開発 29歳でフリーランスSIerになる 社員5000人規模の グローバル企業でAIX設計・運用 ベンチャーに憧れ
35歳で拠点を東京に移す AWS RedshiftでDMP構築
2016年12月 レシピ動画サービス 「クラシル」を運営する delyに1人目のSRE としてジョイン
None
リリースから1年7ヶ月で 1000万DL達成 2016年5月 2018年 全国TVCM開始 リリース 2017年 1000万突破 ダ ウ
ン ロ l ド 数 レシピ動画数世界一 某TV番組で紹介 Webダウン ここでジョイン
成長期 成熟期 衰退期 プロダクトライフサイクル 導入期 now? join 2016年5月
プロダクトライフサイクル 導入期 成長期 成熟期 衰退期 インフラ構築 モニタリング 負荷対策 CI/Pipeline リプレイス
コスト削減 セキュリティ バックアップ アラート設定 DevOps キャパシティランニング ドキュメンテーション 障害対応 カイゼン ポストモーテム 効率化 join now?
1 人 目 の S R E と し て
k u r a s h i r u の 成 長 を ど の よ う に 支 え て き た か ?
kurashiruの軌跡 SREガイドライン 1人目のSRE 信頼性を高める 現場で使える Site Reliability Engineering
1 人 目 の S R E と し て
プ ロ ダ ク ト 開 発 の 不 確 実 性 に 技 術 ・ 設 計 面 で ど う 対 処 す る か ?
プロダクトライフサイクル 導入期 成長期 成熟期 衰退期 インフラ構築 join
ス ケ ー ラ ビ リ テ ィ あ と
は つ い て く る ? と り あ え ず ・ ・ ・
画像:Betsy Beyer他(2017) 「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン
プロダクト 開発 キャパシティプランニング テスト、リリース手順 ポストモーテム、根本原因分析 インシデント対応 モニタリング サービスの信頼性の階層 参考文献:Betsy Beyer他(2017)
「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン
プロダクト 開発 キャパシティプランニング テスト、リリース手順 ポストモーテム、根本原因分析 インシデント対応 モニタリング サービスの信頼性の階層 参考文献:Betsy Beyer他(2017)
「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン Scalability
ス ケ ー ラ ビ リ テ ィ と は
?
Throughput Servers or Containers リソースを増やすほど スループットが上がる =スケーラビリティ リソースを増やしても スループットが上がらない =ボトルネック
ボ ト ル ネ ッ ク を 解 消 す
れ ば ス ケ ー ラ ビ リ テ ィ を 確 保 で き る
ボ ト ル ネ ッ ク を 分 類 す
る た め の 3 つ の 質 問
負 荷 を か け た 時 リ ソ ー
ス に 縛 ら れ て い る か ?
ど の リ ソ ー ス に 縛 ら れ
て い る か ?
O S の 外 側 に ボ ト ル ネ
ッ ク が あ る か ?
負荷をかけた時 リソースに縛られて いる?いない? どのリソースに 縛られているか? いない いる CPU メモリ ディスクI/O
ネットワーク/リモート (その他のH/W) 設定/ソフトウェア OSの外側に ボトルネックがあるか? ボトルネックの5分類 ある ない
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア ボトルネックの分類
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア 現場で使える Site Reliability Engineering
C P U 使 用 率 は 概 ね C
P U 負 荷 の 参 考 に な る
CPU負荷を見分ける • CPUに空きがあってもiowaitが上がればidle が下がる(見た目のCPU使用率が上がる) • ロードアベレージはCPUの負荷でもI/Oの負荷 でも上がる • topやsarコマンドのCPU使用率はコア数で割ら れるがロードアベレージはコア数で割られない
• user+sysが100%だと、I/O負荷があっても iowaitは上がらない 参考Web:「マルチコア時代のロードアベレージの見方」http://d.hatena.ne.jp/naoya/20070518/1179492085 参照2018-6-24 「I/O負荷の正確な状況はiowaitでは分かりません」https://qiita.com/kunihirotanaka/items/a536ee35d589027e4a5a 参照2018-6-24
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア 現場で使える Site Reliability Engineering
“ 推 測 す る な 、 計 測 せ
よ ” 引用:安井 真伸ほか(2008)「[24時間365日] サーバ/インフラを支える技術 」技術評論社
メモリ メモリが足りなくなると ・スワッピングによるディスクI/O ・ページングのオーバーヘッド ・ファイルシステムキャッシュ不足 など 同じファイルを何度も読み書きするサーバは ファイルシステムキャッシュが有効的
CPUやメモリが足りない場合は スケールアップやスケールアウト! コードを見直す必要もあるけど 短期的にはサーバを増やして対応 費用対効果やフェーズ次第!!
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア 現場で使える Site Reliability Engineering
従 来 の 一 般 的 な シ ス テ
ム は デ ィ ス ク I / O が ボ ト ル ネ ッ ク に な る こ と が 多 い
ディスクI/O 3つの対応パターン より早いものを使う I/Oの量を減らす 分散させる
Provisioned IOPS, SSD, NVMe 圧縮, キャッシュ, アルゴリズム、データ構造 スケールアウト、LVM、RAID0 代表的な対応策 より早いものを使う
I/Oの量を減らす 分散させる
CDN Nginx memcached kurashiruの 3つのキャッシュ
1 0 年 前 は 1 0 万 倍 あ
っ た デ ィ ス ク と メ モ リ の 速 度 差 は ほ と ん ど な く な っ て き て い る 参考文献:伊藤直也ほか(2010) 「Web開発者のための大規模サービス技術入門」 技術評論社
S S D や N V M e の 大
容 量 化 、 低 価 格 化 に よ っ て 今 後 ど う 変 わ る の か ?
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア 現場で使える Site Reliability Engineering
根 本 原 因 分 析 に は サ ー
ビ ス ご と の レ イ テ ン シ や D B の ス ロ ー ク エ リ が 有 用
負荷をかけた時 リソースに縛られて いる?いない? どのリソースに 縛られているか? いない いる CPU メモリ ディスクI/O
ネットワーク/リモート (その他のH/W) 設定/ソフトウェア OSの外側に ボトルネックがあるか? ボトルネックの5分類 ある ない
プロダクト 開発 キャパシティプランニング テスト、リリース手順 ポストモーテム、根本原因分析 インシデント対応 モニタリング サービスの信頼性の階層 参考文献:Betsy Beyer他(2017)
「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン
4大シグナル レイテンシ トラフィック エラー サチュレーション 参考文献:Betsy Beyer他(2017) 「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」
(澤田武男ほか訳) オライリージャパン
CPU メモリ ディスクI/O ネットワーク/リモート 設定/ソフトウェア 現場で使える Site Reliability Engineering
負荷をかけた時 リソースに縛られて いる?いない? どのリソースに 縛られているか? いない いる CPU メモリ ディスクI/O
ネットワーク/リモート (その他のH/W) 設定/ソフトウェア OSの外側に ボトルネックがあるか? ボトルネックの5分類 ある ない
O S や ミ ド ル ウ ェ ア 実
行 環 境 や ア プ リ に ボ ト ル ネ ッ ク が 隠 れ て い る
設定/ソフトウェア TCPポート数 バッファサイズ コネクション数 スレッド数 キュー、バックログの上限 など
設定/ソフトウェア 隠れたボトルネックを探すのは困難 いろんな負荷をかけてみると 同時リクエスト数 最大サイズ、合計サイズ 解決の糸口が見つかるかも・・・
事例:ボトルネック解消 abコマンドで負荷テスト Unicornは1プロセスで1リクエストずつ捌く CPUもメモリ使用率も低いのに500エラー メモリを使い切るように worker_processesを5から24に増やす 1000リクエスト以上並列に送ると500エラー CPU使用率が50%台まで上がる
事例:ボトルネック解消 NginxとUnicornの間のUNIXソケット backlog: 1024 (default) unicorn.sockのbacklog=8192 CPU使用率が100% 負荷に合わせてスケールアウト スケーラビリティを確保 1000リクエスト以上同時に送ると500エラー
参考:「1台あたり10,000人を捌くRails製Webサーバのチューニング」http://tech.dely.jp/entry/2017/06/21/191832 参照2018-6-24
ボ ト ル ネ ッ ク を 1 つ ず
つ 潰 し て ス ケ ー ラ ビ リ テ ィ を 確 保
ス ケ ー ル し に く い サ ー
バ
RDBMSは シングルマスタが主流 最近はCloud Spannerや AuroraのMulti Masterなど 色々あるけど基本はCAP定理 DBのスケーラビリティ
Query Time Time & Data データが増えるほど クエリの実行時間が長くなる =プロダクトがスケールできない データが増えても クエリの実行時間が増えない
=プロダクトのスケーラビリティ確保
RDBMSの対策 ( デ ィ ス ク I / O の
対 応 策 と 同 じ ) より早いものを使う I/Oの量を減らす 分散させる
オンメモリ、Provisioned IOPS 圧縮、インデックス、パーティショニング 水平分割、垂直分割 DBのI/O対策 より早いものを使う I/Oの量を減らす 分散させる 参考Web:「ソーシャルゲーム案件におけるDB分割のPHP実装」 https://www.slideshare.net/infinite_loop/socialgame-db-slice
参照2018-6-24
DBの分割はアプリ側の対応が必要 適切なキャパシティプランニング サービスが最速でグロースしても 耐えうるサイジング キャパシティプランニング
・ 信 頼 性 を 高 め る に は
ス ケ ー ラ ビ リ テ ィ を 確 保 す る ・ 根 本 原 因 分 析 を し て ボ ト ル ネ ッ ク の 解 消 ・ 成 長 に 耐 え う る キ ャ パ シ テ ィ プ ラ ン ニ ン グ 現場で使える Site Reliability Engineering
kurashiruの軌跡 SREガイドライン 信頼性を高める 現場で使える Site Reliability Engineering 1人目のSRE
kurashiruの軌跡 SREガイドライン 信頼性を高める 現場で使える Site Reliability Engineering 1人目のSRE
1 人 目 の S R E と し て
プ ロ ダ ク ト 開 発 の 不 確 実 性 に 運 用 面 で ど う 対 処 す る か ?
運 用 に お け る S R E の
課 題
リ ソ ー ス は 有 限 だ が 不
確 実 性 や 信 頼 性 に は 際 限 が な い
Reliability 改善コスト 改善するほど 信頼性は高まるけど 終わりがない しかも効果は だんだん限定的になる
“ あ る 一 線 を 越 え る と
、 信 頼 性 を 向 上 さ せ る こ と は サ ー ビ ス に と っ て 、 む し ろ マ イ ナ ス に な る こ と が わ か っ て い ま す 。 ” 参考文献:Betsy Beyer他(2017) 「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン
際 限 が な い な ら 際 限 を
決 め る
サ ー ビ ス レ ベ ル 目 標 (
S L O )
SLOの運用 SLO SLI 1st week 2nd week 3rd week 4th
week API稼働率 99.99% 100% 100% 100% 100% APIレイテンシ(95p) 500msec 0 1 0 0 検索レイテンシ(99p) 300msec 1 3 2 0 ログ欠損率 1%/day 0 1 0 0
SLOの決め方 • ユーザー体験を守る • SLIの取得にコストをかけ過ぎない • 必要なサービスだけ • 定期的に見直す
SLOの運用 SLO SLI 1st week 2nd week 3rd week 4th
week API稼働率 99.99% 100% 100% 100% 100% APIレイテンシ(95p) 500msec 0 1 0 0 検索レイテンシ(99p) 300msec 1 3 2 0 ログ欠損率 1%/day 0 1 0 0 課題 達成 達成
アラート対応 アラートごとに調査、対策 SLOに影響がなければ対応不要 ただし将来影響がありそうなら調査 B e f o r e
A f t e r
評価 インシデント件数、アラート件数 SLOを達成したかどうか =減点方式 =目標達成方式 A f t e r
B e f o r e
改善(Issue) B e f o r e 守りのタスクがエンドレス SLOを達成して 攻めのタスクをやる
A f t e r
攻 め 守 り 信頼性向上 技術的負債の返済 やらなければいけないこと グロース施策 技術的挑戦 やりたいこと
トイル 機能追加 分 け 方 は 人 に よ っ て 異 な る
人によって異なる 攻めと守りのバランスを 各自でコントロールするため バックログやカンバンといった アジャイル開発のFWを応用 攻めと守りのバランス
ToDo Issue Backlog Doing Done Issue Issue Issue Issue Issue
Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue
SREのタスク(ISSUE)はとりあえず Backlogに入れる 毎週の定例ミーティングで 優先順位の高いISSUEの ステータスをToDoに変える SRE ISSUE
ToDo Backlog Doing Done Issue Issue Issue Issue Issue Issue
Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue
担当は基本的に決めないので 自分からISSUEを拾う(Doing) ToDoを優先しつつ Backlogから拾っても良い 自分から拾うことで自分の タスクをコントロールしやすい SRE ISSUE
ToDo Backlog Doing Done Issue Issue Issue Issue Issue Issue
Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue Issue
SREのISSUEは背景(Why)と スコープ(What)を決めて、担当(Who)や期限 (When), 方法(How)は決めない 背景を共有していれば 優先順位や期限は各自が判断できる (契約案件など期限つきのISSUEもある) SRE ISSUE
やり方(How)は担当者が決める 手段の目的化を防ぎ 生産性とモチベーションが上がる 自由に行動するためには ガイドラインが必要 SRE ISSUE
S R E ガ イ ド ラ イ ン
SREガイドラインとは SREや他のエンジニアが、 自由に行動するために、 守るべき基準を決めたもの 例:EC2サーバはタグで管理 (project, environment, roleは必須)
SREガイドライン サービスレベル目標(SLO) SREオンボーディング 構成管理、タスク管理 リスクコントロール インシデント対応、イベント対応 ドキュメント管理
・ S L O で ス コ ー プ を
決 め る ・ バ ッ ク ロ グ や カ ン バ ン を 使 っ て 優 先 度 の 高 い タ ス ク を こ な す ・ S R E ガ イ ド ラ イ ン に よ っ て 主 体 的 に 行 動 現場で使える Site Reliability Engineering
kurashiruの軌跡 SREガイドライン 信頼性を高める 現場で使える Site Reliability Engineering 1人目のSRE
kurashiruの軌跡 SREガイドライン 信頼性を高める 現場で使える Site Reliability Engineering 1人目のSRE
W h a t S R E I s
S R E に は 専 門 ス キ ル
が 必 要 ?
イ ン フ ラ エ ン ジ ニ ア と
S R E
D e v O p s と S R E
プロダクトライフサイクル 導入期 成長期 成熟期 衰退期 インフラ構築 モニタリング 負荷対策 CI/Pipeline リプレイス
コスト削減 セキュリティ バックアップ アラート設定 DevOps キャパシティランニング ドキュメンテーション 障害対応 カイゼン ポストモーテム 効率化
1 人 目 の S R E
“ 私 た ち は 、 M I T か
ら 出 向 し て ア ポ ロ 計 画 で 働 い た マ ー ガ レ ッ ト ・ ハ ミ ル ト ン こ そ が 最 初 の S R E と し て の あ ら ゆ る 重 要 な 特 性 を 備 え た 人 物 だ と 考 え ま す 。 ” 引用:Betsy Beyer他(2017) 「SRE サイトリライアビリティエンジニアリング Googleの信頼性を支えるエンジニアリングチーム」 (澤田武男ほか訳) オライリージャパン
Margaret Hamilton 画像引用:https://ja.wikipedia.org/wiki/マーガレット・ハミルトン_(科学者) 参照2018-6-24
な ぜ 彼 女 が 最 初 の S R
E だ と 考 え ら れ て い る の か ?
“ 宇 宙 飛 行 士 だ っ て 人
間 だ 間 違 い を 犯 し う る の で は な い か ” “ 自 分 た ち プ ロ グ ラ マ ー も 間 違 い を 犯 し う る の で は な い か ” 参考文献:小野雅裕(2018) 「宇宙に命はあるのか 人類が旅した一千億分の八」 鴎来堂
月面着陸の誘導コンピュータに忍び込ま せたプログラム 何らかの原因でコンピュータがフリーズし そうになったら、生死に関わるプログラム だけを自動で再起動しアラームを出す その際のステータスコード「1202」 アラーム1202 参考文献:小野雅裕(2018) 「宇宙に命はあるのか 人類が旅した一千億分の八」
鴎来堂
ア ラ ー ム 1 2 0 2 が な
か っ た ら ア ポ ロ 1 1 号 は 月 面 に 降 り ら れ な か っ た
誘 導 プ ロ グ ラ ム の 開 発
が 目 的 だ っ た ら ア ラ ー ム 1 2 0 2 は 生 ま れ な い
目的 手段 人類を月に送ること 月面着陸誘導プログラム
S R E に と っ て 重 要 な
の は 専 門 ス キ ル よ り 目 的 と 主 体 性
ア ラ ー ム 1 2 0 2 は i
f 文 1 つ で も で き る ! ?
W h a t S R E I s
・ 目 的 を 達 成 す る た め
に 主 体 性 が あ れ ば 必 ず し も 高 度 な ス キ ル は 必 要 で は な い ・ ア ラ ー ム 1 2 0 2 を 作 る た め に は 多 少 の エ ン ジ ニ ア リ ン グ の ス キ ル は 必 要 現場で使える Site Reliability Engineering
© 2018 Fukao Moto アポロ計画の文化の一部は、 想像もつかないような人々やことも含め、 あらゆる人、そしてあらゆることから 学ぶということです。 Margaret Hamilton