概要
会社では週に数回、採用面接を担当してるのですが、最近ではフロントエンド・バックエンドだけでなくSREの採用も執り行うようになりました。
ここではSREを採用する際に実際に私が面接で質問する主な観点と趣旨について公開していこうと思います。
誰が書いてるか
現職は メタップス にて横断的なテックリードやSREエンジニアをしてます。学生の頃に「ユニバーサルHTML/XHTML」やヤコブ・ニールセンの「ウェブ・ユーザビリティ」に感化されフロントエンド技術に興味を持ち始め、その後バックエンドに携わるとミーハーらしくPoEAAやDDDにハマり、勢いに乗ってベトナム・ハノイでのオフショア事業を立ち上げました。自称フルスタックしつつ、現地メンバーの採用を始め育成計画やらアーキテクトとして10年ほど携わり、今に至ります。ここ数年の興味はもっぱらインフラで、SREとしての動きが主軸となりつつあります。
SREに求めるスキル
採用ページから抜粋。AWS DevDay 2019 で登壇したときの技術構成がベースとなってます。
技術的な必須要件
- AWSを利用したインフラ設計・構築・運用経験
- LinuxやDockerの運用経験
- クラウドネイティブなアプリケーションの設計・開発
- OSやミドルウェア、データベースのチューニング
- Ruby on RailsやNode.jsを使ったアプリケーションの開発
技術的な歓迎要件
- オーケストレーションツールを利用したインフラ構築
- OSやミドルウェアの検証・導入
- 大規模トラフィックを捌くインフラ基盤設計の経験
- インフラ運用の効率化・自動化
- 監査・情報セキュリティに関する知見
- OSSの公開、コントリビュート経験
利用技術
- クラウド: AWS
- OS: Linux
- 仮想化: ECS
- データベース: RDS・ElastiCache・ElastiCache・DynamoDB
- 構成管理: Terraform
- 開発言語: Ruby on Rails・Node.js
- 監視: Datadog
- ログ: Fluentd・Elasticsearch Service・Kibana
どのフェーズで面接に関わっているか
主に人事がピックアップしてくれた方を中心に二次面接に関わることが多いです。
ただエンジニア経験が浅くても、ポートフォリオなどから会ってみたい方は割といるので、自分からオファーをかけることもあります。
履歴書はどこまで見ているか
年齢と自己PRくらい。
職務経歴書はどこまで見ているか
仕事内容よりも、「どういったスキルをどの場面で、どのように活用したか」、「どのようなポジションで仕事に携わっていたか。周りとの関係性 (コミュニケーション面)」を見ることが多いです。
ポートフォリオは必要か
重要視してます。職務経歴書よりもソースコードから読み取れるスキル・経験則のほうが情報量が多いためです。QiitaやGitHub、Speaker Deckなど、公開できるリソースはどんどん公開していきましょう。
ケーススタディはあるか
あります。ここでは質問に対する答えの論理性や整合性を見ます。SREはアプリケーションエンジニアと密にコミュニケーションを取るため、説明の伝え方やわかり易さ、積極性も見てます。
コーディング試験はあるか
現状実施してませんが、将来的に取り入れる可能性はあります。
質問の観点と意図
本題。主にジュニア〜ミドルを対象とした内容となります。
アーキテクチャ設計の経験
- 趣旨
- SREはインフラのみ知識だけあれば良い訳ではなく、アプリケーション設計や開発経験も含めた総合的な知見や経験が求められます。Webシステムにおけるアーキテクチャの設計経験があれば、システムのどこにボトルネックがあり、問題を改善する上でどういった工夫を施したか、など詳しく知見を引き出すことができます
- 付随する質問事項
- アーキテクチャの概要説明
- システムの規模
- MAU、トラフィックなど
- 影響を受けたアーキテクチャ
- DDD、マイクロサービス、Twelve-Factor Appなど
- APIの設計
- Open API、Graph API、gRPCなど
- 選定理由
アプリケーション開発の経験
- 趣旨
- SREはインフラの運用・自動化を推進しますが、日々構成をアップデートしていく中で、アプリケーションコードにも手を入れなければならない場面が出てきます。例えば、マイクロサービスの統廃合であったり、システムリプレースにおける開発環境の仮想化・インテグレーションなどが当たります。アプリケーションエンジニアにはサービス開発に専念して欲しいため、インフラと密になりやすいタスクはSREがカバーする方針で運用しています
- 付随する質問事項
- 技術構成
- 得意とする言語とその理由・経験年数
- 不得意な言語があればその理由
- フロントエンド・バックエンドどちらを得意とするか
- 利用したことのあるフレームワーク・それぞれの利点と問題点
- パフォーマンス最適化の経験
- どのように最適化を図ったか
- テストコードの経験
- レビューの経験
- レビュワーとしての観点
DB設計の経験
- 趣旨
- Webシステムでボトルネックとなる大半の要因はDBの設計やクエリの書き方にあります。SREはサービスを監視する上でネットワークのレイテンシも追跡しています。メトリクスに異常があれば、APMなどを介して問題のコードを洗い出し、クエリの実行計画を分析した上でアプリケーションエンジニアに共有するスキルが求められます
- 付随する質問事項
- 経験のあるDBエンジン
- 設計したことのあるテーブル数
- チューニング経験
- どのように? (ハード・ソフト)
- トランザクション数
- KVSの経験
- 導入事例
- 選定基準
SREとしての経験
- 趣旨
- フロントエンドやバックエンド開発もある中で、何故SREを希望しているのか。SREとして将来的に何を目標として仕事をしたいか。前職までの経験で培ったスキル・その時々の課題などをヒアリングし、会社が求めている人材と一致するかを確認します
- 付随する質問事項
- ネットワークやサーバ設計・構築の経験
- オンプレミス
- ミドルウェア
- スパイクアクセス
- 見積もり算定方法
- トラフィックの分散・負荷軽減の対策
- どのような対策を施したか・結果はどうだったか
- AWS/GCPの経験
- 好きなサービス
- 興味のあるサービス
- 運用
- 自動化の経験・どのように改善したか
- 監視
- 利用したことのあるツール・選定基準
- オンコール対応の経験
- IaC
- 設計・構築の経験
- 設計パターンの具体例
- 利用したことのあるツール・選定基準
- 設計・構築の経験
- ログ分析
- 設計・構築の経験
- アーキテクチャ構成・課題
- CI/CD・インフラ運用の自動化
- 設計・構築経験
- アーキテクチャ構成・課題
- セキュリティ
- アプリケーションのセキュリティ対策
- コンテナに対するセキュリティの知見
- IPS/IDSの知見
- 監査
- ガイドライン策定の経験 (SLAやBCPなど)
- インシデント管理
- ネットワークやサーバ設計・構築の経験
雑談
- 趣旨
- 開発に対する意欲や将来的に目指すキャリアプランをヒアリングし、事業メンバーとフィーリングが一致するかを確認します
- 付随する質問事項
- 転職理由
- 自身のスキルの優位性
- 自作でサービスを作ったことがあるか
- 使用言語・開発期間
- 成果と課題
- 興味のある技術
- OSSコントリビュート経験
- 自主的にシステムの課題を発見し、解決するスキルがあるか
- Qiitaなどでの技術公開・勉強会などでの登壇経験
- 情報の発信力。技術をアウトプットできるか
- 入社後に挑戦したいこと
- キャリアプラン
- VPoE or CTO?
- 最終的に入社の決め手となる要素は何か
まとめ
SREという職種は比較的新しく、人手が不足している職種の一つかと思います。サービスをインフラ・アプリケーション両方の観点から成長させていく楽しみもあるので、是非転職の際は検討してみてください!