Classi開発者ブログ

教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。

SRE留学体験記

​​こんにちは、開発本部のliaob88です。

私は今年の2022年4月から9月までの半年間、SRE留学制度を使ってSRE留学を行っていました。今回はそのSRE留学制度に関する記事を書きたいと思います。

記事の構成としては、まず始めに@lacolacoさんよりSRE留学制度についての説明をしていただきます。その後私の方から実際にSRE留学をしてみた上での感想や振り返りを書いていきます。

SRE留学制度とは

こんにちは、開発支援部の部長をしている@lacolacoです!今日は主役ではないので軽く制度の紹介だけしてバトンタッチします。

SRE留学制度とは、普段はプロダクトチームでアプリケーション開発に携わっているエンジニアに、期間限定でSREへジョブチェンジしてもらうというものです。チームの戦力が一時的に低下する代わりに、実務を通じて短期的に効率よく学習できます。留学を終えてチームに戻ると、獲得した新しいスキルや経験によってチームが自己解決できる問題の幅が広がります。また、エンジニア個人としてのキャリアの可能性も広がりますし、開発組織としてもサービス全体の運用レベルの底上げが狙える、三方よしな施策です。

しかしそんな都合のいい施策は当然ながら簡単に実現はしません。これを可能にするのは本人の高いチャレンジ精神と学習意欲、そして留学生を受け入れて教育するSREチームの受容力です。このあたりは語りたいことがたくさんあるのですが、それはまたの機会に。

ともかく、今年の4月からスタートし、この記事を書いているliaob88さんが第1期生です。10月からは入れ替わりで第2期生の留学が始まります!この後の記事で語られると思いますが、本人にもチームにも非常にいい影響を与えているので、留学制度は今後も継続発展させていくつもりです。

以上が前説でした。それでは本編をどうぞ!

なぜSRE留学をしたのか

私がSRE留学をすることになったきっかけは、上司からお誘いをいただいたことでした。お話をいただいた時は素直に驚いたのと、「自分なんかがやっていけるのだろうか」という不安を感じました。

しかし、私は元々SREに興味があり、SREが普段どのような業務をどのような考え方で行っているのかについて知りたいと思っていました。そしてこのような機会はなかなか訪れないかもしれないと思いSRE留学を決めました。

SRE留学では何をしたのか

大きく分けてSREの通常業務と所属チームとコラボレーションをして進める業務の二つがありました。

SREの通常業務

大きく分けると以下のようなことをしました。

  • 他チームからの相談、作業依頼、レビュー依頼対応
  • 改善活動
  • 障害対応

他チームからの相談、作業依頼、レビュー依頼対応

SREはサービス開発、運用における技術的な相談を他チームから受け付けています。

  • 〜ということを実現したい。なので、こういうアーキテクチャでそれを実現していこうと考えているが、SREの意見を聞きたい
  • このサービスの運用で〜という問題がある、なので〜のようにしたいと考えているが、どう対応していくのが良いかSREにも聞きたい

などなど、内容は様々です。このような各種相談に対してSREとして意見を出し、他チームの開発をサポートしていました。

また作業依頼、レビュー依頼の対応もSREの大切な業務の一つです。Classiのインフラには、SREのみが操作できるリソースや、変更、作成においてSREからのレビューを必須としているリソースがあります。そのためSREには日々インフラ関連の作業依頼、レビュー依頼がたくさん届きます。そちらの対応を他のSREと共に行いました。

改善

改善もSREの重要な業務の一つです。SREは日々他の作業に追われながらも地道に改善を続けています。

私が留学期間中に行った改善としては以下のようなものがありました。

  • 監視環境の整備
  • 業務フロー改善
  • 不要なインフラリソースの削除
  • インフラリソースの最適化によるコストカット

その中から今回は、監視環境の整備の一環として行ったAmazon DynamoDBに関する、DatadogのMonitorやWidgetの整備について少し触れておこうと思います。

現状複数のサービスがアーキテクチャの一部として使用するなど、Amazon DynamoDBはClassiにおいて、運用上とても重要なインフラの一つとなっています。しかし私がSRE留学を開始したタイミングでは、その監視環境は十分に整備がされておらず、改善が必要な状況でした。

私はこれまでにも、DatadogのMonitorやWidgetを使って監視環境を整備する作業は経験していたので、やればできそうと思い、この改善業務を担当しました。

(例. 作成したAmazon DynamoDB関連のMonitorとWidgetの一部)

実際にやってみると、Amazon DynamoDB自体についても学ぶ瞬間が多くあり、結果的に非常に有意義な業務となりました。

そして何よりも、監視環境の整備というサービスの信頼性を高めることにつながる施策を実施できたという点については、SREとして良い改善ができたのではないかと考えています。

障害対応

障害対応もSREの業務の一つです。特に、複数サービスで共有されているリソースが起因となって起きる障害は、影響範囲も大きくSREも障害対応を行います。

私が留学していた期間においても、そのような障害が何度かあり対応に参加しました。しかし参加したどの障害対応においても、解決に貢献することはあまりできず、個人的には悔しい思いをしました。自分もいつかこのような障害対応においても貢献ができるように成長しなければいけないと強く感じました。

所属チームとコラボレーションをして進める業務

SRE留学制度には、留学生を将来的に所属チームに戻し、Embedded SREingを実践していく人材に育てていくという狙いがあります。 この業務は、そのような制度の狙いに沿ってアサインされた業務でした。

内容としては、所属チームで進められていた新規サービス開発案件にSREとして参加するというものでした。そこでは主にインフラ開発全般を担当しています。こちらは留学期間終了後も、所属チームにて引き続きリリースに向け開発を続けていく予定です。自分がメインでインフラ開発全般を担う機会はこれまでなかったのでとても良い経験になっています。

SRE留学で何を学ぶことができたのか

たくさんのことを学んだ留学期間でしたが、ここでは特に印象的だったことを3つ挙げたいと思います。

低レイヤーの知識とその重要性

SREの業務では、OS、DB、Networkなどの低レイヤーに関する知識を求められる機会がありました。特に先に述べた影響範囲が大きい障害の障害対応では、そのような知識を求められる瞬間が多々あり、知識の必要性を痛感しました。

そうした経験から留学期間中に低レイヤーに関する学びも少しずつ始めました。 また、学習の一環として使用したprocess-bookについては、「process-book読もう会」という勉強会を主催し、頼りになる先輩方や優秀な後輩たちと共に議論を交えながら読み進めました。 「process-book読もう会」に関しては、ぜひこちらの記事も合わせてご覧ください。

tech.classi.jp

まだまだ知識は足りず、これからも学び続けていく必要を強く感じています。ですが、低レイヤーを学ぶことの必要性を実体験を通して感じることができたことは、良い機会だったと今は考えています。

現状の各サービスの状況やインフラの全体像

SRE留学をする以前は、現状の各サービスの状況やインフラの全体像については把握できていませんでした。

所属チームが担当するサービスやそのインフラに関する知識はある程度持っている一方で、他チームが担当するサービスやそのインフラに関する知識、そして各サービスで共有しているリソースに関する知識はほとんどない、という状態でした。

一方、先に述べた通りSREの業務には他チームからの作業やレビューの依頼対応、技術的な相談対応があります。その中にはチームの枠を超えて、Classiが運用するサービスを俯瞰した上で判断を下すことが求められるものもありました。そのような業務を通して、所属チームが担当するサービスだけでなく、他チームが開発、運用するサービスや、そのインフラなどについても、その概要については多少ながらも把握することができました。

これはSRE留学ならではの学びだったと思います。所属チームに戻った後、他チームとコラボレーションをして進めていく業務が発生した際などにもきっと良い影響がありそうだと考えています。

pre-mortem thinking

SREの業務の中には、失敗が許されないものも多くあります。そのため常に最悪を想定して、切り戻し手順をきちんと確認した上で業務を遂行をすることが求められました。

しかし私はこれまで、どちらかと言えば失敗から学ぶことが重要視される環境で業務を行っていました。そして私自身もそのような環境に甘えてしまい、失敗に備えることをあまり実践してきませんでした。

そのような自分が、SREの業務を担当した途端に、最悪を想定して業務を遂行できるという都合の良いお話はもちろんありません。何度も手痛いミスをしました。その中には復旧作業が大変なものもあり、今でも苦い記憶として心に残っています。

そしてこの経験を個人的に振り返っていた際に、上司に教えていただいたのが pre-mortem*1 thinkingです。pre-mortem thinkingを使った業務の流れは以下のようになります。

  • 業務の遂行に失敗した状況を具体的に想起する
  • 想起した内容から、なぜ失敗したのかに関する根本原因を探る
  • その根本原因に対する防止策を考える
  • 業務を始める

この方法であれば少なくとも想定できる失敗については回避できるようになるので、失敗の可能性を大きく減らすことができます。pre-mortem thinking を教えていただいてからは、なるべくどのような業務でも、まず失敗を想定して、必要であれば切り戻し手順を書き出してから始めるよう意識しています。

もちろん今でも、失敗をすることは悪である、とは考えていないですし、そういう教えをされたことはありません。ただ、どうしても失敗が許されない状況というのは、今後も必ずどこかであると思います。そういう業務を遂行する上で、効果を発揮する思考法を学ぶことができたのは良い経験でした。

SRE留学で何が難しかったか

一方でラーニングゾーンに身を置いてもがき苦しみ、その一方で影響範囲が大きく、失敗すれば各所に迷惑がかかるような重要な業務を担っていく日々に難しさを感じました。SREとして求められる能力とのギャップに自信を失いながらも、前を向いて業務を続けていく必要がある状況に、体力的にも精神的にも疲弊してしまった瞬間が何度かありました。

しかし幸いにも、上司や他のSREと定期的に相談の場を作ることができていたので、そのような場を活用して定期的に気持ちをリフレッシュしながら、なんとか無事留学期間を終えることができました。その点については上司や他のSREに本当に感謝しています。

今後

半年間の留学期間を終えたので、10月からは所属チームに戻り業務をしていきます。

SRE留学の文脈で今後やってみようと考えていることは「SRE留学を経験すると、所属チームの業務がどのように映るのか、そしてどのように貢献できるようになるのか?」という問いに、自分なりの答えを出して運営側にFBすることです。私はSRE留学制度卒業生として、この制度がより良い方向に向かうよう貢献することが求められていると思います。そこにはこの留学制度へのFBも含まれていると考えています。

なので、所属チームでの業務についてまた一から学び直しチームに貢献できるよう努力するとともに、SRE留学制度卒業生としてSRE留学制度の運用や改善になんらかの貢献ができるように頑張っていきたいと思います。

© 2020 Classi Corp.