はじめに
2023年度4月より、社内の異動を通じて、職種をバックエンドエンジニアからSREにジョブチェンしました。
同じような挑戦をしている方、検討している方の参考になれば幸いです。
これまでの経験
ZOZOではバックエンドエンジニアとして約4年間働いてきました。最初の一年半は、Go言語で新規事業のバックエンド開発をしました。残りの二年半は、Go言語でZOZOTOWNのマイクロサービス開発をしました。
前職でOpenStackやAnsibleなどを使ったインフラ系の業務経験はありましたが、SREとしての実務経験はなく、パブリッククラウドやKubernetesの経験もありませんでした。
異動先
組織
「プラットフォーム基盤SRE」という組織に異動しました。
この組織は、マイクロサービスプラットフォームのプロビジョニングとオペレーションの自動化に責任を持ちます。信頼性の高い基盤を土台として、ZOZOTOWNの開発者とSREの成果創出をサポートおよび促進し、ZOZOTOWNの成長を高速前進させることがミッションです。
業務内容の例
- マイクロサービスのインフラ構築と保守
- 監視・アラートの設定と保守
- CI/CDの構築と保守
- 負荷試験
- 障害試験
- 運用業務(Upgrade系の業務、問い合わせ対応、アラート対応、事前スケーリング作業、定期作業など)
- etc
基本的にIaC化されているので、それの実装や検証、社内コミュニケーション、ドキュメント作成などが主な仕事です。
技術スタック
Docker/Kubernetes(EKS)/kustomization/Istio/Flagger/Flux/AWS/CloudFormation/Terraform/Datadog/Sentry/Pager Duty/GitHub Actions/GitHub/Gatling
SREへジョブチェンするまで
経緯
上司との1on1で、自ら異動を希望しました。
ありがたいことに、残念がっていただきましたが、CTOまで話がいき、スムーズに異動の話が進みました。
将来的にはバックエンドに戻る意思が高かったのですが、最低2年間はお世話になりたいというお話をさせていただきました。SREとして一人前になり、その恩返しをするためには、2年間は必要だろうという計算でした。未経験かつ期限付きで受け入れていただいたSRE部には本当に感謝しております。
ジョブチェンの理由
大きく2つあります。
1つ目は、バックエンドエンジニアに加えて2つ目の専門性を身につけることで、ソフトウェアエンジニアとしてより強くなれると思ったからです。バックエンドの経験はSREでも役立つと思いますし、その逆も然りだと思います。将来的にバックエンドエンジニアに戻っても、SREでの経験がシステムの要件定義や設計、実装、試験、リリース、運用業務、CI/CDの構築と保守、社内コミュニケーションなどの様々な場面で役立つと思っています。
2つ目は、バックエンドエンジニア以外としても働けたという自信を自分の中で持つためです。この自信により、将来への心理的安全性を手に入れたかったです。極端にいうと、バックエンドエンジニアが不要という世の中(現実的に直近でなるとは思いませんが)になったとしても、他の職種で食べていけるという心の余裕みたいなものが欲しかったです。また、重要なのはバックエンドエンジニアやSREなどの特定の職種でなく、「ジョブチェンをして苦しみながらも頑張って勉強してキャッチアップして、その職で一人前になる。」という経験をしたかったです。
なぜSREか?
ソフトウェアエンジニアとしての選択肢としては他に、フロントエンド、ネイティブアプリ、MLなどの分野があると思います。
フロントエンドの開発は個人的に苦手で、ネイティブアプリの開発はもっと苦手(というよりも経験が一切ない)で、MLは学生時代に少しかじった程度であり、いずれも自分にはマッチしなそうでした。
SREは前職でインフラの経験が少しあったのでその経験を活かせると思ったのと、バックエンドとの親和性が比較的高そうだと感じました。
なぜプラットフォーム基盤SRE?
プラットフォーム基盤SREは、自分が開発担当していたマイクロサービス(zozo-api-gateway、認証サービス、会員サービス)を管理しているチームであり、自分が開発に携わったマイクロサービスを今度はSREとして担当してみたいと思ったからです。また、マイクロサービスの知識はSREメンバーよりも深いため、その点でのGIVEをチームや会社にできると考えたためです。
また、バックエンドエンジニア時代からプラットフォーム基盤SREのメンバーとは業務上でのコミュニケーションが多くあったので、人間関係もうまくいきそうだと容易に想像できたからです。
なぜこのタイミング?
ようやく、バックエンドエンジニアとしてある程度の高い水準で仕事ができるようになったという自己評価を得たからです。
そして、新しいことにチャレンジするならば、なるべく若いうちが良いと思ったからです。(年齢は30前半です。)
異動までに準備したこと
- Kubernetes完全ガイドを少なくとも5週は読みました。
- Kubernetes on AWS ~アプリケーションエンジニア 本番環境へ備えるを読みました。
- CKADを取得しました。
- 「上記の本を読んでなんとなく知識はついたけど手が動かない。」という感じだったので、ハンズオン形式で勉強ができるCKADがかなり役立ちました。
- 技術メモも書きました
- CloudFormationとEKSテンプレートのサンプル実装をしました。
- 以下のIstioのYoutubeの動画を見たり、公式ドキュメントを読みました。
- Flaggerの公式ドキュメントを読みました。
- 社内のGitHubリポジトリや資料を覗いて、実プロダクトでのk8s、CFn、Istio、FlaggerのYAMLを異動前に分かる範囲で予習しておきました。
ジョブチェンしてみてどうだったか
明日の記事にて未経験の自分が具体的にどんな業績をあげられたか、ジョブチェンしてみてどうだったかを記事にしています。
ぜひ、明日も読んでください。
We are hiring
もし興味あれば、ぜひ採用リンクからご応募ください!
https://hrmos.co/pages/zozo/jobs/0000247