SREとしてのキャリアプランについて考えてみた
はじめに
最近、今後のキャリアについて考える機会があり、上司からもキャリアプランについて問われた際にあまり真剣に考えられていなかったなと痛感しました。そのため、今のうちに文章という形で残せればと思いました。
Who are you?
自分自身は2020年卒で某大手SIerに新卒入社し、2年経たずしてWeb系自社開発の上場企業へ転職しました。現在、社会人歴は4年目が終わろうとしている段階です。
ロールについては、1社目はNWエンジニア、2社目はSREとして勤務しています。
スキルセットの評価
これまで経験してきたことを改めてまとめていこうと思います。
- AWSおよびk8sを利用したシステム環境の構築・運用、Security Hardening
- IaC(Terraform)による基盤構築・運用
- CI/CD(CircleCI、Github Actions)の環境整備、改善
- Datadogを利用したアプリケーションおよびミドルウェアの監視環境の設計・改善
- ソフトウェアエンジニアリングによるToilの削減
- 開発チームへのSRE Practiceの啓蒙
- SLI/SLOの導入・運用、支援
- ポストモーテムの推進
- セキュリティ文化の醸成
- 脆弱性検知の仕組みの導入、改善支援
- インシデントフローの設計・運用・改善
- 開発組織を巻き込んだ脆弱性対応
1社目では本格的にプロジェクトを任される前に転職してしまったため、ほぼ2社目での経験になります。
こうして見ると綺麗に見えますが、SREとしてバリューを発揮するために、大きなペインポイントが一つあります。
それは、バックエンド開発の経験が無いことです。
SREとして開発チームに対して横断的に対応するために必要なソフトスキルは培われたなという実感はありますが、開発チームをEnablingするための技術力にギャップがあるのが現状です。
例えば、頻発しているエラーの原因調査を開発チームから依頼されたとしてもバックエンドの開発経験がないために、Datadogから状況の把握まではできるものの、根本原因まではわからないというケースが多く、力不足を感じていました。
以上を踏まえて、現状の強みと改善すべき点をまとめました。
強み
- SRE Practiceの知見
- セキュリティへの意識、知見
- Terraformを用いたクラウド環境の構築・運用
- CI/CDの設計と改善
強みとしては、以上が挙げられるかなと思います。
2社目で2年が経過しましたが、Gitをはじめとしたソフトウェア開発の基礎や、AWSのセキュリティに関する知見、Terraform、Github ActionsやCircleCIのスキルは培えたなと思います。また、SREとして読書会などでSRE本を輪読していたこともあり、SRE Practiceへの理解も深まりました。
改善すべき点
- Webアプリケーションの開発、運用経験
これに尽きると思います。
Webアプリケーションの開発、運用経験が無いために、実際にシステムのパフォーマンスや信頼性を向上させるのに必要なアプリケーションやミドルウェアの改善経験や、MySQLなどのRDBの運用経験がスッポリ抜けてしまっています。
今後、SREやDevOpsという面でキャリアを形成していくにあたって、ここを経験しないと手詰まりになってしまう可能性があるなと感じています。
興味・関心について
今後も社会人として長く働いていくにあたって、できるだけ興味・関心のある分野に携わりたい思いがあります。
まずは、エンジニアという職業についてですが、自分自身はこれからもずっと携わっていきたいなと思っています。その中で、今後のキャリアプランを考えるために、自分がどのようなエンジニアリングの分野に興味・関心を持っているのかを今一度特定したいと思います。
- SRE/DevOps
- 信頼性や可用性を考慮したアーキテクチャの設計構築や運用などは非常にやりがいがありました。
- 自分自身、ビジネスにおいては0→1よりも1→10の方が適しているなと感じており、SREやDevOpsによってサービスの成長を下支えする役回りは性格的にも合っているなと思っています。
- Security
- 今後のキャリアにおいて、セキュリティに関する知見・経験があると非常に有益と考えています。
- 開発したサービスがバズるなどの即効性のあるスキルではないものの、1→10,10→100の段階にあるビジネスにおいては、非常にニーズがあると思っています。
- Platform Engineering
- SREとして2年働いてきましたが、開発チームに対してパフォーマンスの改善を依頼したり、セキュリティ強化を依頼したりと、開発チームの負担が非常に大きくなっているなと感じていました。また、クラウドネイティブ関連のツール (https://landscape.cncf.io/) も非常に多く、開発者の認知負荷が年々向上していると感じています。
- その中でTeam Topologiesを読み、開発者のバリューストリームを効率化するために、認知負荷を低減するような取り組みがしたいと感じました。
以上のような分野で今後キャリアを歩んでいきたいなと思っています。
今後の目標
以上を踏まえて、今後の目標を考えていきたいと思います。
短期的な目標については状態目標と、それに対する行動目標を、中長期的な目標については今後も変わっていく可能性があるため、状態目標のみを記載しています。
短期的な目標(1年〜2年)
- 状態目標
- GolangでWebアプリの基本的なバックエンドが作れるようになる
- チームメンバーと協力して、ロジックの設計・開発ができるレベルに達する
- ソースコードからシステムの挙動を理解できるレベルに達する
- Kubernetes関連のOSSのソースコードを読解できる
- Contributeできれば理想ではあるが、タイミング次第なので目標には記述しない
- チームメンバーと協力し、システムのパフォーマンスや信頼性を向上させるためにプログラムやアーキテクチャの改善ができる
- チームメンバーと協力し、パフォーマンス低下などシステムの技術的問題の原因を発見、解決できる
- GolangでWebアプリの基本的なバックエンドが作れるようになる
- 行動目標
- 以下のロードマップを参考にし、Golangの勉強を行う
- 使用しているAWS,k8sの技術を理解する
- 今後の資産として、構成図のようなドキュメントとして残しておく
- 可用性およびセキュリティ性が高いプログラムの実装
- 自身の書いたプログラムが原因で、障害が発生したり、脆弱性が検知されないようにする
- 可用性およびセキュリティ性が高いアーキテクチャの設計・開発
- 障害発生後におけるアーキテクチャの改善や、脆弱性が検知されていない状態を維持する
- 使用しているAWSサービスにおけるコストの最適化および監視の最適化を行う
中期的な目標(3年〜5年)
- 状態目標
- 自身の力で、システムのパフォーマンスや信頼性を向上させるためにプログラムやアーキテクチャの改善ができる
- 自身の力で、パフォーマンス低下などシステムの技術的問題の原因を発見、解決できる
- 開発者の生産性を最大化するための課題をソフトウェアエンジニアリングで解決できる
長期的な目標(5年~10年)
- 状態目標(おぼろげですが)
- SRE/DevSecOps/Platformチームのマネージャーポジションを目指す
- 海外ではVP of Platform Engineeringというポジションも出てきているらしい
- https://speakerdeck.com/hacomono/hacomono-platform-engineering-showcase-number-1?slide=20
- SRE/DevOps/PlatformEngineering/Securityにおいて深い専門性を持っている
- チームにおける開発体制および環境の課題点を的確に把握し、メンバーをマネジメントし、ソフトウェアエンジニアリングによる改善を行える
- SRE/DevSecOps/Platformチームのマネージャーポジションを目指す
おわりに
今回は自身のキャリアについてを文章として残しました。
非常に整理ができ、かつPublicに宣言することで自分自身への尻叩きになるかなと考えています。
また、目標を設定したからには定期的に振り返っていければと思います。
バックエンドでの経験を経て、パワーアップしてSRE/DevOpsのエンジニアとして戻ってきたいと思います。
Discussion