wwwave'sTechblog |ウェイブのエンジニアブログ

株式会社ウェイブのエンジニアによるテックブログです。会社の話や Ruby、Vue.jsについてなど技術的な話をしていきたいと思います。

株式会社ウェイブの人事部ブログです。社内の雰囲気やイベント、福利厚生などについてお伝えいたします!

株式会社ウェイブのエンジニアブログです。 エンジニアの目線から会社の話や技術的な話をしていきます。

エラーバジェットが枯渇しても新機能開発を止めない運用を開始しました!

執筆者:SRE シラト
・SRE 2年生になりました!!!
・DevOpsの文化浸透を目指してます!
・最近、散歩ポケモンGOを始めました。

対象読者

・SLO/エラーバジェットの導入検討している、運用を行っている人

はじめに

SLO/エラーバジェットの運用ハードルが高いと感じていませんか?
私自身、運用を開始しても形骸化しないかとても不安でした。

数ヶ月前からCoolmicで運用を開始しましたので、意識したこと、所感についてお話しいたします!

※ SLO/エラーバジェットの説明やアーキテクチャのご紹介はありません

運用で意識したこと

1. プロダクトチーム全体を巻き込む

例えば、SREが単独でSLOを設定して運用を開始したらどうなるでしょうか?

👮‍♀️SRE「最近、TOPページの表示速度遅いから改修した方がいいかも!」
🧑‍💻他チーム「対応します!(まだ遅くないから大丈夫だな)」

個人、チーム間で、デッドラインの認識が異なると何もアクションしなくなり形骸化が加速してしまいます。

重要なのは、

『チーム全員で顧客目線の信頼性を定義、可視化して、共通認識にする』

ことだと思います。当たり前のことかもしれませんが、他のチームも巻き込むことはとても大切なのに、忘れがちだったりします。

2. エラーバジェットが枯渇しても復旧対応を必須にしない

調べてみると大きく2つの事例がありました。

①新機能開発を止めて復旧作業を優先する
②エラーバジェットが枯渇したらチーム全体に共有して、復旧作業を優先するべきか判断する

以下の理由から②での運用を開始しました。

設定したSLOが正しいとは限らない

SLO/エラーバジェットは、顧客目線で設定した運営側の数値でしかありません。
あくまで仮説で設定した数値なので、必ず復旧作業をする必要があるかというと、いささか疑問を感じました。

重要なのは、

『エラーバジェットが枯渇したから復旧作業をする』

のではなく

『顧客からの信頼度が下がるから復旧作業をする』

ことだと思います。 エラーバジェットが枯渇したら一度立ち止まって、判断するフェーズがあってもいいかと思いました。

3. ダッシュボードをいい感じにする

ダッシュボードがかっこいいとやる気でませんか?
完全に個人的な気持ちの問題なので、論理的な視点もなにもありません!

所感

1. 推測するな、計測せよ

実際、可視化してみるだけでも「あれ、このページって他のページと比較すると表示速度が遅いんですね」という声が上がりました。
可視化されていないと「気が付いたらパフォーマンスが悪化していた・・・。」という状態になりかねません。

2. 判断コストを削減できる

エラーバジェット運用を行う最大のメリットかと思います。
パフォーマンス改善するべき?バグ修正するべき?の判断においては、かなり需要な指標ですね!

3. 数値を見る文化に助けられた

少し話が脱線しますが、Coolmicには、朝会で売上数値などを確認する文化があります。
朝会で、エラーバジェットの枯渇状況を確認するので、毎日問題がないか確認することになります。
そのため、SREが関与せず、エラーバジェットが枯渇しそうになると、タスク化されます。

改めていい文化になったと感じました!

おわりに

運用の正解はないと思うので、定期的に運用を見直そうと思います。
正直もっと早く導入すればよかったと反省しつつ、判断コストが削減できるのはいいですね!

これからのウェイブSRE

システム開発部SREチーム、マネージャーのm-nemotoです。
2021/08からチームのマネージャーとなり、約1年が経ちました。 前任者が築いてくれた基盤や制度を引き継ぎつつ、一方ではチームの課題にゼロから向き合った1年でした。
本記事では、これまでのチームの課題と、これからチームが何を目指していくかをご紹介できたらと思います。

これまでのチームの課題

これまでのSREチームでは、SREメンバーがプロジェクトの一つを担当し、インフラの構築〜運用を実施する、という業務内容でした。よくある「インフラ色が強い」SREチームだったと思います。
当然といえば当然なのですが、インフラチームとして活動することで「インフラ技術がサイロ化してしまう」という課題が生じました。DevOpsを実現するためのSREチームがDevOpsを阻害する、という中々クリティカルな課題でした…。
それだけではなく、SREメンバーが特定のプロジェクトを担当することで、トラック係数の問題、実施した改善事項を他プロジェクトに展開できない (しづらい)、DevOpsの成熟度がチームによってまばら、といった課題も発生しました。

上記の問題を解決するためには「チームの目標を見直した方がいいのでは」という結論に至り、私たちはチームの目標とミッションを再検討しました。

チームの目標とミッション

検討に使用した資料や書籍、ウェビナーの一部をご紹介します。
(いずれも素晴らしい資料でチームの成長に欠かせないものでした。資料を公開してくださった著者、関係者の方々にこの場を借りてお礼申し上げます!)

上記の資料を元に (ときにチームで輪読会を実施) 検討を続け、チームの目標を「DeveloperExperienceを最大化することでプロジェクトに貢献する」としました。また、ミッションを以下に絞りました。

◇ Platform SRE

開発チームが利用するインフラ環境を構築し、積極的にインフラの標準化を図ります。
標準化によって、実装コストの削減、改善事項の横展開、オンボーディングコストの削減などを改善します。
また、標準化したプラットフォームをSREチームの成果物として扱い、利用者に迅速なフィードバックを行います。

◇ DevOps (Embedded SRE)

SREメンバーが開発チームに参加し、DevOpsに基づいた改善を行います。
具体的には、DORA Metrics、バリューストリーミングマップを可視化し、開発チームのDevOpsパフォーマンスを測定します。
測定結果からボトルネックを把握した後は、チームの垣根を超えて、改善活動を行います。
行った改善活動はPlatform SREで巻き取り、組織全体への適用を検討します。

◇ ツール管理

Platform SREのミッションと重なるところはあるのですが、開発部で使う共通ツールの管理をSREで担当します。
クラウド管理や自動化などの改善を行い、運用コストを削減します。

今後

目標をチームメンバー全員で検討したため、目標設定が決まるや否やすぐにアクションに繋げることができました。
現在、Platform SREでは標準となるアーキテクチャの検討とIaCのコーディングルールなどの整備を行っています。DevOpsに関しては早速開発チームに参加し、DevOps関連のメトリクスを可視化できるよう準備中です。
実施したタスクについては本ブログで発信していけたらと思います。

最後に

これまでインフラ色が強かったSREチームですが、これからはSREの本来の目的に立ち返りDevOpsの推進と部全体の最適化を行うチームになりたいと思っています。
目標の変更は、開発部メンバーの協力なしでは設定できない目標でした。
負荷になってしまうところもあったかもしれませんが、快諾してくださった開発部メンバーには頭が上がりません。
そんな素敵なメンバーと一緒に仕事をしたいという方がいましたら是非募集要項をご覧ください!

recruit.wwwave.jp

トップに戻る