2020年に、若干遅めですが以下のオライリー本は購入し、なんとなくSREはなんなのかを意識し始めました。
2020年段階で読み終えて、且つ、消化した感があるのは入門監視のみで、SRE本とワークブックは今のところ積読状態になっています。
今年はこの辺りのキャッチアップをしたいので、まず書籍を読む前に以下のチェックリストを自分なりに、読み解いて解釈してみようと思いました。
SRE チームの評価に役立つレベル別チェック リスト | Google Cloud Blog
調べた結果を記載します。
SREチームの評価に役立つレベル別チェックリストとは?
-
アセスメントシートや、チェックリストのリンク集
そもそもこのチェックリストは何か?ですが、アセスメント評価に該当するもので、以下のようなものとも関係がありそうに思います。 -
枝葉ではなく、幹のチェックリスト
リリースのパイプラインだけといった作業の枝葉に対するチェックリストではなく、組織の在り方も含めた企業のITサービス運用に関する包括的なチェックリストに思いました。 -
実際に使用する場合は、単純なチェックではなくスコア化したほうが良さそう
単純なチェックだと、何故良いと思ったのかダメだと思ったのかがわからないので、DX Criteriaの使い方 - DX Criteria v201912- 「2つのDX」とデジタル経営のガイドライン の「はい」、「いいえ」、「はい、でも。。」、「いいえ、でも。。」方式での確認が良いように思いました。 -
実際に読んで、「わからない」と思うことが重要
SRE経験の浅いチームでは、自分も含めて「わからない」と思う語句や概念が多いです。
まず「わからない」から始まり、「意識する」が第一歩かと思います。
学習の5段階レベル - NLP学び方ガイド(NLPとは)|資格セミナー総合情報サイト|協会 公式
SRE の基本原則
SREの基本原則としてチェックリストには以下の3つが記載されています。
何らかのサービス レベル目標(SLO)を決め(開発、事業部門の一部でない場合は、これらの部門のメンバーと共同で)、ほぼ毎月目標を達成していること
非難を伴わない障害報告書を記録するカルチャーがあること
本番環境におけるインシデントの管理プロセスが作られていること(これは全社的であることが望ましい)
3つの基本原則で気になったことを記載していきます。
サービスレベル目標(SLO)
サービスレベル目標(SLO)以外に、サービスレベル合意(SLA)もあります。
また、サービスレベル項目(SLI)というSLO、SLAとして設定する指標を示す言葉もあります。
- 契約トラブル回避のススメ つかんでおきたい「SLA」と「SLO」のちがい | NTTコミュニケーションズ 法人のお客さま
-
SaaSスタートアップが知っておくべきSLAと利用規約の勘所―2020年の改正民法も踏まえて― | 法律事務所ZeLo・外国法共同事業
-
SLA、SLOのサンプル
明確なSLAの定義があると認識しているのは、AWS、GCP等のサービスです。
SLOが毎月達成されているか確認するには?
何らかの手段で計測する必要があります。
計測の手段として、APMツールを使うということを思い浮かべました。
【ツール8選】APMツールとは?基本解説やおすすめツールをご紹介! | QEEE
また、クラウドサービスではなく、オープンソースを使用することもできます。
OSSのおすすめ監視サーバ・監視ツール比較18選 | OSSでのシステム構築・デージーネット
非難を伴わない障害報告書とは?
これは、ポストモーテムのことかなと思います。ポストモーテムについては良い記事がたくさんあり、読むと勉強になります。
また、テンプレートが Google re:Work のページで公開されています。
SRE文脈以外でも使われる言葉、テンプレートなのかと思います。
- Google re:Work - ガイド: イノベーションが生まれる職場環境をつくる
インシデントの管理プロセスとは?
-
そもそもインシデントとは何か?
システム開発としてインシデントをどう捉えるか難しい感じがしますが、個人的には起きた出来事(ヒヤリ・ハット)をインシデントと考えました。おそらく、この基本原則に関する「インシデント」は、システム障害にあたるものも含んでいそうに思います。以下、医療系のインシデントの扱いが参考になりましたが、システム開発だと「アクシデント」という用語は使わず、これを「障害」と呼んだり「インシデント」と呼んだりしていると思います。
- インシデントをヒヤリハットだと思っている人々この辺りの区別は企業によって違い、また、言葉の定義をしっかりすべきです。
また、以下の記事のようにポストモーテムにあたるもので、外部に報告が必要なものと内部だけで止めるものを分けて書くのは重要に思いました。
- ポストモーテムにおける根本原因分析 - 夜は寝るポストモーテムはヒヤリハットなインシデントに対しても書く。外部に報告が必要な場合は、ポストモーテムもインシデント報告書も書く。という運用が良いと思います。
-
管理プロセスについて
この辺りは、ITILのインシデント管理プロセスが参考になります。
- インシデント管理とは?5項目で理解するインシデントと問題の違いと理想的な管理フロー - ITIL用語解説 - デジタルプラクティスただ、プロセスとして重厚すぎるので自社向けでのテーラリングは必要で、テーラリングの際はSRE本の14章がまさに管理プロセスの話で参考になりそうです。
GoogleのSREの本「第14章 インシデント管理」を読みました。 : 読書ブログ @kuromitsu_ka
初級者チームのチェックリスト
初級者チームのチェックリストの内容は以下の通りです。 引用部がチェックリスト内容で、1項目ずつ補足説明、感想を記載します。
人員の配置転換と採用のプランがあり、予算が承認されていること
SREワークブックの20章に記載があります。
SRE人材のリソース計画、その予算が承認されているのかを確認する項目です。
「SREがない場合でも、SLOを使うことによってSREのプラクティスはできます。」の一文はSREチームがない組織で何かやってみようという気持ちを後押ししてくれます。
スタッフを配置したチームが何らかのサービスのオンコール サポートを担当するとともに、少なくともシステム運用の負荷の一部を担っていること
-
システム運用の負荷の一部を担うとは?
システム運用作業を実施することに思いました。
-
オンコール
アラートに対して受電し、エラーの内容確認を行う作業です。
リリース プロセス、サービスのセットアップとティアダウン(そして可能ならフェイルオーバー)のためのマニュアルを整備していること
-
セットアップとは?
事前準備のことです。Junit3はsetUpメソッドでテストの事前準備を行います。
ローカル開発環境の構築手順を持っていること、Infrastructure as Code とも関係がありそうです。
Infrastructure as Codeの留意点とメリット ~サーバー更改プロジェクトへの適用で得られた知見・実感 - アイマガジン|i Magazine|IS magazine
-
ティアダウンとは?
事後処理のことです。Junit3はtearDownメソッドでテストの事後処理を行います。
SLO の一部としてカナリア リリースを評価していること
-
カナリアリリースについての文書リンク
3分でわかる カナリアリリース | 日経クロステック(xTECH)
GoogleとNetflix、カナリアリリース分析ツール「Kayenta」オープンソースで公開。新たにデプロイしたリリースに問題がないかを自動分析 - Publickey
-
ブルーグリーンデプロイメント
カナリアリリースとブルーグリーンデプロイメントは関係があると思いましたので、 記載しておきます。 **AWSでブルーグリーンデプロイを実践してみた | キャスレーコンサルティング株式会社
Blue-Green Deploymentにおける注意点 | Developers.IO
後以下の教材は良い演習資料に思いました。
-
Wicket でのブルーグリーンデプロイメント
個人的に、WIcketが馴染み深いフレームワークなので、Wicketでブルーグリーンデプロイメントを実施する際の関心事を記載しておきます。
-
ページキャッシュ対策
DataStoreの設定がデフォルトのファイルシステムを使う挙動である場合、ブルーグリーンデプロイメントに制約が生まれます。 以下Githubリポジトリの実装が参考になりそうです。
RoadRunner120485/wicket-redis-session-test
StateLessページにするという対応も考えられます。
-
必要なときのためにロールバック メカニズムを用意していること(ただし、たとえばモバイル アプリケーションが関係するときは簡単ではないことが考慮されます)
-
ロールバックメカニズムとは?
所謂、ロールバックをするための仕組みです。
スナップショットを取得、ロールバックのための仕組みが手動で構築されていることが最低限で、そこから自動化などが進められるのが理想です。
KubernetesでDeploymentのRollback | SIOS Tech. Lab
CodeDeploy の Blue/Green デプロイでロールバックを実行する | Developers.IO
DevOps 技術: 継続的デリバリー | Google Cloud
Spinnakerを使ったカナリーリリースの自動評価 #spinnaker #kayenta - My External Storage
-
モバイルアプリケーションについて モバイルアプリの場合は、インストールしてもらうという状況になるので、再インストールをユーザーにしてもらう必要があり、ロールバック時のハードルが高いです。
【iPhone】アプリのバージョンダウン方法 iOS 10以降、iTunes 12対応版 | 楽しくiPhoneライフ!SBAPP
導入したら導入したで問題はありそうですが、PWAという選択肢も有りかもしれません。
プログレッシブWebアプリ(PWA)として配布 - OutSystems
キャッシュの更新をどうするか、どうやってクリアするのかという課題はあります。
完全でなくても、運用手順書(プレイブック / ランブック)があること
SREと名前がついていない運用保守チームでも手動、自動関わらず、運用手順書は必要です。
少なくとも年 1 回は理論的な(ロールプレイングによる)ディザスタ リカバリ テストを実施していること
以下が情報がまとまっていて参考になりました。
SRE がプロジェクトの仕事を立案、実施していること(開発者の支持を必要としない運用負担軽減の取り組みなど、開発者から直接見えない部分でもかまいません)
プロジェクトの仕事の立案、実施ができるとは、自己組織化モードになっていることが理想に思いました。 エンジニアがリーダーになるためには. 前回に引き続き、今回はリーダーシップについて。読んだのは、翻訳者の島田さん(… | by Shinichiro OGAWA | なんとなく日記
定期的に(つまり毎週)インシデント対応手続きの訓練をする程度のオンコール
全くオンコールが発生しない状況が長く続くと、人の入れ替えが発生したりする場合、オンコールに対応できる人材がいなくなってしまいます。SREはSLOで100%の稼働率は目指していないのは、この訓練の意味もあるのかと思います。
SRE の統括責任者(つまり CTO)が審査、承認した SRE チーム憲章
SREではなくてもチーム憲章は必要です。
一瞬インセプションデッキが浮かびましたが、SREとしての話題を記載するにはSRE チーム憲章の方が適していると思います。
問題点や目標について議論し、情報を共有するための SRE と開発リーダーの定例会議
サービス単位にチームが分かれていたりすると、SREチームがサービスごとに存在する可能性があり、その間でのコミュニケーションも重要に思いました。
- SREチームが複数ある場合、その複数チームが定例会議を行っている
- サービスの開発チームとサービスのSREチームが定例会議を行っている
を観点に考えても良いように思いました。
開発と SRE の共同作業によるプロジェクトの立案、実施。SRE の貢献とプラスの効果が開発のリーダーにも見えていなければなりません
SREチーム自体の価値と、貢献を図るためのSLIを設定しないとまず、貢献とプラスの効果が可視化されません。まず最初にSREのプロセスのまず初めにやることで、SLO、SLIを定義するのはこの効果を可視化して、全員が納得して進めるためだと思いました。
チェックリストは以上です。
O’Reilly Japan - SRE サイトリライアビリティエンジニアリング、O’Reilly Japan - サイトリライアビリティワークブック ともに分厚い本なので、読むこと、理解することに時間がかかります。
実践時は、チェックリストを使って落下傘方式で学ぶことと、冷静に頭から書籍を読んで体系的に学ぶの両方で少しずつ学習できればと思います。
まずは業務との関連を意識するところからでしょうか。
以上です。
コメント