SREに求められる知識?
SREとして働く上でどんなスキルセットが必要なのか、そして自分はどこまで知識を持っているかというのを洗い出したいので書き出してみる。
qiitaで「各社の募集要項からSREに求められるスキルをまとめた」という素晴らしいPOSTがあったので参考にしてみることにする。
大規模システムの構築・運用
DAU 10万以上のサービス(もしくはそれと同様)のインフラ運用経験(FiNC/歓迎スキル)
20,000 req/sec オーバーのAPIトラフィックを安定して処理するためのバックエンドシステムの開発、運用(mercari/業務内容)
具体的な数値が出ているのはこの辺。
mercariのTechBlogで以下のようなPOSTがあった。
高トラフィックに耐えうるシステムの構築・運用の知識とはここまでできるエンジニアと思って差し支えなさそう。
ちなみにOpenRestyについての知識は私はないので宿題にする。
経験値
- 20,000 req/secを超えるシステムの構築・運用・管理経験はある。
- 負荷試験
- 試験シナリオは直近で考えて最大でどこまで耐えられるか等、検証した経験あり
- AWS使っている案件だとELBが高スループット保証しているので問題になることはなかったと記憶している。
- ただスパイクアクセスの場合はPre-Warmingを申請が必要とかそういう経験はあったちなみにスパイクする時間はだいたい判明していた。
- AutoScalingが間に合わなくてインスタンス事前に増やしておいたりとかもあった。
クラウド
パブリッククラウド(AWS/GCP...)の経験が求められている。
AWS等クラウド環境の技術進化に興味を持ち続け、最新のサービスを当社のビジネつ実現に適切な形で、適応する提案や研究意識(BASE/必須スキル)
クラウド上でのインフラ構築経験、および、3年以上の運用経験(FiNC/必須スキル)
ここらへんが自身の経験に当てはめて考えやすい。
経験
- AWSの運用経験は2年ほど
- プライベートクラウドの運用経験は2年以上(現在進行系)。
- AWSのカンファレンスとかその他勉強会は参加しているけど、研究まではしていない。
- 研究を何と定義するかによるが、調査・仮設・実験・考察・アウトプットでそれなりに有名であること。とするとそのような経験も知名度もない。
開発スキル(プログラミングスキル)
システムのパフォーマンスや信頼性を向上させるのに必要なアプリケーション、ミドルウェアへの機能追加、バグ修正を行うためのプログラミング能力(mercari/必須スキル)
OSSの公開、コントリビュートの経験(mercari/歓迎スキル)
経験
- アプリケーションエンジニア(インフラレイヤーもかじってる)ので満たしてはいそう。
- 実際の経験を話せることが重要なので、事前に振り返って経験整理すれば問題なさそう。
- OSSの公開、コントリビュートの経験なし
- やりたいです。エンジニアのスキルを見極める分水嶺的なものと認識しているので、年内挑戦予定(3ヶ月程度しかない...)。
パフォーマンスチューニング
アプリチームと共同し、サービスのパフォーマンス改善の可視化、分析、提案(BASE/業務内容)
高速なレスポンスを実現するためのアプリケーション、ミドルウェアのパフォーマンス改善(mercari/業務内容)
経験
- 前述した通り経験あり。
- 勉強会に登壇している人達と比べたら見劣りはする。
- 直近ではここらへんを業務担当範囲にしている気がする。
ネットワーク
TCP/IP、HTTPなどのネットワークプロトコルについての基礎知識(mercari/必須スキル) ネットワークに関する基礎知識(エニグモ/必須スキル)
ここが一番難しかったです。
「TCP/IPの十分な知識がある」って何を持って証明できるかわからないのでチェックシートほしい。
— mutao.net (@mutao_net) September 25, 2021
そもそも自分の中で証明する方法を思いついていないということは知識不足ってことなのかな😂
経験についてはあとで調べて追記します。
Linux
最近自分の中で一番「キテ」いる分野。すごい面白いです。
経験
- インフラ(Linux)構築・運用経験 3年以上あり。
- Linuc Level1 取得済み(早くlevel3まで取らねば)
冗長化・分散手法
大規模サービス運用ではもはや前提となるためか、明示的に書いているところは少ないかも。
なるほど。オンプレ/クラウドといったことは抜きにしてそもそも論で分かっているかどうかを問われていそう。
経験
- 冗長化や分散手法に対する基本的な知識あり
ログ収集・解析基盤
ログ解析、モニタリング自動化経験(cybozu/歓迎スキル)
ログ(メトリクス)収集・解析基盤の開発・構築・運用(cybozu/業務内容)
データ分析を迅速に行うためのログ収集・分析基盤の構築、運用(mercari/業務内容)
もはや鉄板といった感じ。
経験
- ログ解析、運用経験あり。
- 地味にアウトプットもしている。
監視・モニタリングシステム
インフラ基盤のモニタリング・アラートシステムの開発・運用(cybozu/業務内容)
障害検知やキャパシティプランニングのためのモニタリング環境の構築、運用(mercari/業務内容)
経験
- 監視システムの構築の経験はなし。
- 0ベースで監視システム構築から入るってすごい経験。。。
- 運用経験はあります。アラート組み込んだりも経験あり。
- アラート検知の設定が悪くてオオカミ少年みたいなアラートを作ってしまった経験も恥ずかしながらある。
セキュリティ
OS セキュリティ関連の知識(cybozu/歓迎スキル)
セキュリティに関する深い知識(mercari/歓迎スキル)
経験
- 自分の中で一番弱い箇所だと思う。
- CVEを読んで脆弱性対策をするとかそういった経験はあり。
オペレーション自動化・効率化
CIや自動構成管理、オーケストレーション等の構築、運用経験(BASE/歓迎スキル) Infrastructure as Codeの運用経験、もしくは興味をお持ちの方(エニグモ/歓迎スキル) デプロイや各種オペレーション自動化ツールの開発、運用(mercari/業務内容)
これも好きな分野。効率化とか考えるの好きだし、逆に言うと非効率だったり手間がある作業はどんどん潰したい。
経験
- Ansibleでの構成管理経験あり
- Jenkins/Drone.io
RDBMS
3年以上のRDB運用経験(FiNC/必須スキル)
経験
- ざっくり言うとあり。
- Cluster構成考えるとかレプリケーションとるとかは経験なし。知識としてかじったぐらい。
コンピュータサイエンス
コンピュータサイエンスの修士またはそれに相当するスキル・経験(Retty/必須スキル)
ものすごいハードルが高い。。。大学院を修了してもいないし、そういった経験のある人とコミュニケーションをとった記憶もない気がする。
経験
- 前述の通り自分のレベルは低い。
- 体系的に学んだという実績を示すものはない。
感想
今回はqiitaに取り上げられていた募集要項の中から判断しやすいものを抜粋して自分がどのレベルにあるかざっくり探ってみました。
自分はまだまだ未熟であり、インプット・アウトプットの質と量を向上させていく必要があると感じました。業務経験も浅い気がしますね(5年目エンジニア)。
今回を気に知らないOSSも知れたので勉強の種が更に増えてモチベが上がりました。
(お家ラズパイKubernetes化計画を年内目処にやろう)
SREに求められているのは広範に渡る高いスキルだと知れたとともにSREとして働いている皆様に頭が上がりません。