🚀

SRE NEXT 2023でSLOの開発組織とIoTへの導入についてお話ししました

2023/10/04に公開

株式会社Luup SREチームに所属しています、ぐりもお(@gr1m0h)です。

SRE Loungeの運営メンバーが主体となって運営している、 SRE NEXT 2023 という日本最大のSREのカンファレンスに登壇しました。今回は3回目の開催となります。

「電動マイクロモビリティのシェアサービス「LUUP」におけるEnabling SLOの実践」という題で、Luupの開発組織に対してSREチームがどのようにEnabling SRE、Enabling SLOを行っているか、開発組織全体でSLOについて議論できるようにするためにどんな活動をしているか、IoTチームにEnablingし始めてどんなアプローチで進めているかをお話ししました。

https://sre-next.dev/2023/schedule/#jp027

このカンファレンスはこれまで3回開催されています。
1回目2020はオフライン開催、2回目2022はオンライン開催、今回2023はハイブリッド開催です。

これまで私は色々な形で参加してきました。
1回目はスポンサースタッフとして、2回目は運営(チケット、動画管理担当)として、そして今回の3回目はChair(運営、実行委員長)、登壇者として参加しました。

ということで登壇だけでなく、開会宣言や懇親会の乾杯の挨拶、懇親会で行われたフォトコンテストの結果発表で話しました。登壇以外は初めての体験だったのでとても緊張しました。

参加者、運営スタッフ、スポンサーの方々、登壇者の方々、いつもありがとうございます。毎度思うことですが、今回はChairということで特に感謝の気持ちが強く、個人的に心に残る回となりました。

さて、この記事は登壇内容について簡単に紹介するものになります。
詳しく知りたい方は、動画もあるので、発表資料・動画両方合わせて見ていただければと思います。

はじめに

私のセッションでは以下を伝えたいと思ってお話ししました。ただ、登壇駆動で進めていたので完全な結果が出なかったのが残念です。ですが、IoTということで他にはない面白い内容になったのではないかと思います。

  • SLOを開発者・PdMに伝導、導入するための方法と考慮点
  • IoT分野でSRE・SLOを実践していくための方法

CMC: Critical Machine Communication

毎度のことですが、SLI・SLOなどの用語についての説明の項で CMC: Critical Machine Communication についてお話ししました。
Luup SRE としてこれまで登壇は3回行っており、どの回でもCMCについて説明しています。
CMCはLuupでCUJと区別するために定められた考え方ですが、他社や他のコミュニティで同じような考え方を観測していません。そろそろ浸透してきたのではないかと期待しつつ、一応説明を記載しておきます。

IoTでは、マシンが期待通りに動作できる状態であるかを計測すべきですが、このようなM2Mの部分はユーザの行動に含まれず、CUJではカバーできません。
そこで、Luupでは、CMC、Critical Machine Communicationという考え方を導入しています。
CMCの対象となるものとしてはバッテリーが切れていないか、サーバーと接続されているか等があり、プロトコルとしてはMQTTやLwM2M等があります。
CMCに紐づく動作を計測したSLIによって、マシンが期待通りに動作している状態であるかということを指標化することができます。

今回は、IoTチームへのSLOの導入というお話をしているので、CMCに一歩踏み込んだ内容になっていると思います。

Enabling SRE/SLO

Enabling SREという、開発チームにSREの文化・知識を浸透させて開発者自身がSREプラクティスを実践できるようにする活動をLuup SREでは進めていますが、今回はSREというよりよりターゲットを絞ってSLOにフォーカスしているので便宜上Enabling SLOと表現しています。

17p

この図は「SLOの活動」と各チームの距離感みたいなものを表現しています。
中心に近づくほど「SLOの活動」との関連があるチームというイメージを持っていただければと思います。
これまではSREチームがCUJからSLIを設計・実装し、SLOを運用するという状況で、SLO周りはSREチームのみが行う活動になっていました。
また、IoT・Serverチーム、PdMも議論に参加したり、合意を取ったりなどサポートとして参加してもらっているという状況でした。
それを、右のような状態に変えたいと思っています。
これまでサポートなどで関わっていたチームが実際にSLIを設計・実装し、SLOを運用するということを行い、これまで全くSLOまわりで話をしてこなかったチームも議論に参加できる状態まで知識を身につけるということです。

開発組織全体に対して

開発組織全体に対して、以下を行いました。

  • SLO習熟度調査の実施
  • SLO勉強会の実施

SLO習熟度調査の実施は、組織全体や個人のいま現在の習熟度を知るために実施しました。
エンジニアだけでなく、一緒にCUJ、SLIなどを議論していくことになるPdMにも受けてもらっています。
将来的には、再度実施してEnabling度合いを計測したり、オンボーディング時に実施して個別のフォローアップを行うなどに活用することができるのではないかと思っています。

SLO勉強会の実施は、エンジニアみんなで議論できるように素地を作るために実施しました。
習熟度調査の結果をフィードバックして内容を作成しています。
なぜSLI・SLOの知識がLuupの開発組織で今必要なのかという背景、SLI・SLOの基本的な知識について、最後にLuupSREチームが今どんなSLOを運用しているか、既知の問題とその対応状況について共有しました。
最終的には開発組織の週次MTGでSLOのサマリーを共有し、議論できる状態にしていければと思っています。

Enabling方法について

まず、導入方法についてですが、以下の理由からEmbeddedSREという方法は取らずに各チームのリーダーとの直接的なコミュニケーションで進めています。

  • SREチームのリソース不足
    • 正社員2人、フルタイムは正社員含めて3人という状況
  • 業務委託メンバーのコントロール
    • 業務委託メンバーの稼働としてSLO部分含めて良いかの判断がSREではできなかった
    • 業務委託メンバーの稼働を管理している各チームの正社員に判断してもらう

稼働管理みたいな問題はありますが、最終的にはテストやセキュリティ同様にSREという考え方も開発者の当たり前の知識としていくことが重要です。(とセッションでコメントしましたが、テスト、セキュリティに対してSREというのはレイヤーが違う気がしました、リライアビリティ(信頼性)と言った方が意図としては近いかもしれません。)
各チームのリーダーと直接コミュニケーションを取り、議論したり、SLI・SLOについて一緒にタスクを進めていく中で、自然とSREの考え方を各チームのリーダーという個人にEnablingできるのではないかと思います。各チームのリーダー≒正社員ということもあり、会社や所属チームの重要な意思決定に関わっていきます。このように明示的ではないですが、自然と各チームのリーダーが各所属チームでSRE伝道師の役割を担ってくれるかもしれません。

IoTチームに対して

IoTでのSLIを考える際には、車両、マシンが期待通りに動作できる状態であるかを計測すべきです。つまり、CUJではカバーできない、CMCの領域になります。
本来ならCUJベースのSLI同様、CMCをベースにSLIを検討していくという方法を取るのが良いのですが、SREの活動を開始する前に、IoTチームの車両の施錠解錠のエラー率の低減という活動の中で自動サービスアウトというのを検討していました。
SREとしては、これを活用する方向で現在進めています。

定期通信途絶によるサービスアウト

Luupの車両は定期的にバッテリー残量や位置情報などを通信しています。
通信の状況が悪かったり何かの拍子に車両の再起動がかかったりするとしばらく通信できないことが発生する可能性があります。
その際に車両がサービスインしていると、実際には操作できないのにお客様に対して車両が操作できるような見え方をしてしまいます。
これを防ぐために定期通信が一定時間ない車両に対して自動的にサービスアウトする機能を開発しています。

ハードウェアエラーによるサービスアウト

車両からの通信内容にエラーの情報が入ってくることがあります。
これまで運用してきて、エラーの中でどのエラーがクリティカルなのかが分かってきました。
そこで一定時間でエラー別に閾値を越えたらサービスアウトする機能を開発しています。

CMC based SLIの設計

31p

サービスインしている車両数の割合でモニタリングする方法を検討中です。
先ほど説明したサービスアウト機能起因でサービスアウトが行われたりして、一定値を越えて車両を提供できていない割合が上がるとSLO違反になるというようなモニタリングを想定しています。
SLOの運用自体はIoTチームが行いますが、値を改善するのをIoTシステムでやりきるのは不可能なので、SLOの責任を持つチームはこれから決めていく必要があります。
SLOを分解する必要も出てくるかもしれません。

さいごに

今回がオフラインでは4回目の登壇でした。カンファレンスでは2回目です。
Xで私が登壇した時のコメントを見ていましたが、反応が良く、とても嬉しかったです!また、間違った解釈もされていないようなので安心しました。
懇親会でも、私のセッションを聴いてわざわざ話しかけにきてくれた方がいたのでとても嬉しかったです!
オフラインでこのように反応がすぐ返ってきたり、登壇後に話しかけてもらえるのはとても良い体験ですね。オンライン登壇よりもオフラインの方が良いというのを身にしみて感じました。

登壇時のコメントについてですが、気になったものはコメント返せているはずです。コメントほしかったり議論したいことがあれば教えてください。話に行きます。
また、知り合いが以下のようなコメントをしてくれました、確認したのは登壇後ですが、心理的に助けられましたし、とても嬉しかったです。ありがとうございます。


Chairとして、開会宣言も初めての経験でとても緊張しました。
これもまた知り合いが以下のようなコメントをしてくれました、ありがとうございます。


最後に、弊社でのプロダクト開発、SREや使用技術に少しでも興味を持っていただけた方は、以下のリンクからお気軽にご連絡ください!私のX(Twitter)アカウントもDM解放しています。
直近副業や転職を考えている方でなくとも、ただ気軽に話を聞きたいという方でも大歓迎です!

https://recruit.luup.sc/

Luup Developers Blog

Discussion