こんにちは、学習PMF部でエンジニアをしている辻です。
私は2023年12月から2024年5月までSRE留学という社内制度を利用して、SREチームに期間限定で所属していました。
SRE留学とは?や、第1期生、2期生、3期生の体験記はこちらをご覧ください。
tech.classi.jp
tech.classi.jp
tech.classi.jp
留学を志望した理由
SRE留学をする以前は主にCALEというシステムの開発・運用を担当しており、その中でパフォーマンス改善やSLI/SLOの設定、Toil削減などに取り組んだことで、SREに興味を持ちました。
SREの活動に必要なAWSの知識やTerraformの知識、Classi全体のシステムの知識などを獲得して、学習トレーニングやCALEといったシステムでの開発や運用に活かせることを期待しました。また、SREチームに参加することで、単一のチームやシステムに関わるだけでは得られない視点を獲得できるとも考えました。
留学中にできたこと
基本的に、やりたいことをやらせてもらえる環境なので、留学中にしかできないことや学びになることを実施しました。日常的なタスクとして、SRE宛に来るTerraformのレビューや依頼の対応は行っていましたが、私が実施した代表的なタスクを2つ紹介します。
学習トレーニングのSLI/SLOの設定
CALEというシステムのSLI/SLOの設定を行った経験から、学習トレーニングでもSLI/SLOを設定したいと思いました。SRE留学前からSREチームでは学習トレーニングにSLI/SLOを設定することが計画されており、参加させてもらいました。
SREチームのid:ut61zさんと一緒に取り組むことで安心感があり、またSLO本読書会もこのタイミングで開催され、非常に有意義でした。学習トレーニングチームの方々と話し合いながら設定を決め、id:ut61zさんにも多く相談しました。設定後、このSLOの値を基に改善の議論が発生しており、今後もSREチームと連携しながら改善を続けていきたいと思います。
Opsサーバリプレイス
このタスクはチームで行いましたが、私は主にAnsibleの記述、CI/CDの構築、起動方法の設計・実装を担当しました。Opsサーバとはいわゆる踏み台サーバのことで、検証環境、本番環境でなんらかのオペレーションを実行するために利用しています。既存のOpsサーバはitamaeでプロビジョニングされているのですが、Classiではそのリポジトリのメンテナンスが不十分だったり、EC2関連のシステムの関心が入り混じったリポジトリからOpsサーバの関心の分離をしたいという意図があったため、AnsibleとPackerを用いて作り直しました。
既存のOpsサーバでは、起動方法にAuto Scalingグループを使っていましたが、デタッチ忘れやタグの付け忘れ、Opsサーバの消し忘れや立ち上げが手間などの課題がありました。
そのため、新しいOpsサーバの起動方法はChatOpsを採用し、AWS Chatbotを使ってより簡単に立ち上げることができ、管理しやすいようにしました。
起動と削除をSlack上で行えるようにしたことで、管理が容易になり、履歴も残るため、既存のOpsサーバでの起動方法の課題も解決しました。
このリプレイスのタスクで学習した許可セットなど、SRE留学中に、普段の業務ではあまり触らないところも触ることができ、勉強になりました。SRE留学から戻った後もこれらの知識は活きてくると思います。
これらのタスク以外にも、構成図の作成、Sandboxリソース作成の通知、GithubActionsの導入、証明書の更新など、SRE留学をしていなければ経験できなかったタスクを多く経験し、多くの学びがありました。
良かったこと
普段の業務では、あまり触れることのない部分に触れた
具体的には以下の機能などです。
- SCPを含んだAWS Organization
- IAM Identity Center
- IR購入に関するあれこれ
SRE留学では、SREチームと同等の権限を持ってSREとして業務を行うので、普段では触れない部分に触れることができるのは、SRE留学の良いところだと思いました。
コードレビューを通してClassiのシステムへの理解とAWS・Terraformの理解が深まった
SREチームの朝会では、SREチーム宛に来たTerraformのプルリクエストをレビューするのですが、その中で出てきたわからないことはその場でSREの方に聞くことができるので、すごく勉強になり、レビューを行う過程で、Classiの全体のサービスやそのシステム構成をある程度把握することができました。
また、留学前は自身のチームの範囲のAWSサービスやそのTerraformコードの部分しか理解していませんでしたが、Classi全体で使われているAWSやTerraformへの理解も深まりました。
難しかったこと
横断的な動きができなかった
留学生の振り返りでよくこの点が挙げられていますが、他のチームから寄せられる質問への対応やプラットフォームに関することに積極的に関わっていくことができませんでした。「こういった場合どうしたらいいですか?」という質問がSRE宛のメンションで来ても、知識が必要ということと、SRE留学生としての立場では意思決定が難しく感じる面があり、あまり関与していくことができませんでした。
今後
ClassiのSREチームはプラットフォーム部のチームなので、直接的なSREingをプロダクトに対して行うというよりはプロダクトチームへのSREingの支援という側面が強いです。留学期間中に特定のプロダクトに対する直接的なSREingはあまりできませんでしたが、プラットフォーム部のSREチームに留学したことで、今まであまり触ってこなかった技術などに触れられてとても充実したSRE留学でした。SRE留学からプロダクトチームへ戻ったときに、その経験を活かし、よりアプリケーションの近くでSREingを実践していき、SREチームと連携しながら取り組んでいきたいと考えています。