DevOps面接では、ソフトウェアを確実にリリースできるかどうかが試されます。コードがどのようにしてノートPCから本番環境へ届くのか、健全に動いているかをどう把握するのか、そして問題が起きたときにどう対応するのか。以下では、基礎から、ほとんどの面接の明暗を分けるシナリオ問題まで、20問を回答付きで紹介します。コマンドが示されている箇所は、ツール自身のドキュメントで確認できる標準的なものです。
基礎
1. DevOpsとは何ですか?
開発と運用を一体化し、ソフトウェアの構築・テスト・リリース・運用を同じ共通プロセスで行う働き方です。目的は、より速く安全なリリースと、障害発生時のより迅速な復旧にあります。文化であり実践の集合体で、ツールはそれを支えるものであり、単なる職種名ではありません。
2. 継続的インテグレーション、継続的デリバリー、継続的デプロイメントの違いは何ですか?
| 実践 | 意味 |
|---|---|
| 継続的インテグレーション | 開発者が小さな変更を頻繁にマージし、マージのたびに自動ビルドとテストが実行される |
| 継続的デリバリー | パイプラインを通過したすべての変更がリリース可能な状態にあり、いつリリースするかは人が判断する |
| 継続的デプロイメント | パイプラインを通過したすべての変更が自動的に本番環境へリリースされる |
3. ソフトウェアデリバリーの主要な指標は何ですか?
DORAの研究プログラムで広く使われている4つがあります。デプロイ頻度、変更のリードタイム、変更失敗率、サービス復旧時間です。最初の2つは速度を測り、後の2つは安定性を測ります。速度を上げるために安定性を犠牲にしないよう、4つすべてを追跡するという点を説明できると良い回答になります。
4. 優れたCIパイプラインとはどのようなものですか?
- コードをチェックアウトし、キャッシュされた依存関係を復元する。
- ビルドする。
- まず高速なテスト(単体テスト)を実行し、その後により遅いテストを実行する。
- lintや依存関係の脆弱性スキャンなど、静的チェックを実行する。
- 成果物(コンテナイメージやパッケージ)を一度だけビルドし、コミットでタグ付けする。
- それを公開し、同じ成果物をすべての環境へデプロイする。
重要な考え方は、一度ビルドして同じ成果物を昇格させることです。そうすれば、テストしたものと出荷するものが同じになります。
バージョン管理とリリース
5. ブランチ戦略とリリースはどう行いますか?
よくあるアプローチは2つあります。トランクベース開発では、小さな変更を頻繁にメインブランチへマージし、未完成の作業はフィーチャーフラグで隠します。GitFlowのようなブランチベースのワークフローでは、リリース用に長期間存続するブランチを使います。トランクベース開発は通常、マージが小さく頻繁なので、継続的デリバリーと相性が良いです。
6. ブルーグリーンデプロイとカナリアデプロイとは何ですか?
| 戦略 | 仕組み | ロールバック |
|---|---|---|
| ブルーグリーン | 同一の環境を2つ用意する。待機中の環境へデプロイしてテストし、その後トラフィックを切り替える | トラフィックを元に戻す |
| カナリア | 新バージョンへ少量のトラフィックを流し、指標を監視しながら徐々に増やす | トラフィックをゼロに戻す |
| ローリング | インスタンスを少数ずつ置き換える | 前へ進めるか、ロールを巻き戻す |
ブルーグリーンは追加のキャパシティが必要です。カナリアはデータに基づいて判断するため、優れた指標が必要です。
7. フィーチャーフラグとは何で、なぜ使うのですか?
デプロイせずに機能をオンまたはオフにできる設定上のスイッチです。コードのデプロイと機能のリリースを分離し、少人数でのテストを可能にし、問題が起きたときの素早いオフスイッチを提供します。欠点は古いフラグが溜まっていくことなので、機能が安定したら削除します。
8. 安全にロールバックするにはどうしますか?
以前の成果物を利用可能にしておき、デプロイを再現可能にし、データベース変更を後方互換にします。そうすれば古いバージョンが新しいスキーマに対しても動作します。データベースを無視したロールバック計画は計画とは言えません。リスクの高い変更では、ロールバックによってデータが失われる場合は、修正を加えて前へ進める方を優先します。
インフラストラクチャとコンテナ
9. Infrastructure as Codeとは何ですか?
サーバー、ネットワーク、権限をコンソールでクリックして設定するのではなく、バージョン管理されたファイルで定義することです。これにより、環境の再現性が高まり、レビューが可能になり、再構築も容易になります。一般的なツールにはTerraform、Pulumi、クラウドプロバイダー独自のテンプレートなどがあります。詳しくはTerrafom面接対策をご覧ください。
10. コンテナと仮想マシンの違いは何ですか?
仮想マシンは、仮想化されたハードウェア上に完全なゲストOSを含みます。コンテナはホストのカーネルを共有し、アプリケーションとその依存関係のみをパッケージ化するため、起動が速く、メモリ使用量も少なくなります。ただし、コンテナは仮想マシンよりも分離性が低くなります。
11. 良いDockerfileに含まれるべきものは何ですか?
小さく具体的なベースイメージを使い、ビルドキャッシュを活用するために変更が少ないレイヤーを先に配置し、依存関係ファイルをコピーしてインストールしてからソースコードをコピーし、非rootユーザーで実行し、シークレットをイメージに埋め込まないことです。マルチステージビルドを使えば、ビルドツールを最終イメージに含めずに済みます。
12. なぜKubernetesを使うのですか?
Kubernetesは複数のマシンにまたがってコンテナをスケジューリングし、失敗したコンテナを再起動し、スケーリングし、ローリングアップデートやサービスディスカバリを処理します。その一方で多くの複雑さも追加するため、良い回答では「使わない」判断をする場面にも触れるべきです。たとえば、数台のサーバーに収まる小規模なアプリやマネージドプラットフォームの場合です。詳しくはKubernetes面接対策をご覧ください。
13. シークレットはどのように管理しますか?
ソース管理やイメージに絶対に入れないことです。シークレットマネージャーやプラットフォームのシークレットストアを使い、各サービスに必要最小限のアクセス権を付与し、シークレットをローテーションし、ログに出力しないようにします。漏洩した場合の対応も述べましょう。無効化し、ローテーションし、使用痕跡がないかログを確認します。
信頼性と運用
14. モニタリング、ロギング、トレーシングとは何ですか?
| シグナル | わかること |
|---|---|
| メトリクス | エラー率やレイテンシなど、システムが時間とともにどう推移しているか |
| ログ | 特定のイベントで何が起きたか |
| トレース | 1つのリクエストが複数のサービスをどう通過したか |
アラートは、原因(1台のマシンのCPU高騰など)よりも、ユーザーが体感する症状(エラーや応答の遅さなど)に対して設定しましょう。
15. SLI、SLO、SLAとは何ですか?
サービスレベル指標(SLI)は、成功したリクエストの割合などの測定値です。サービスレベル目標(SLO)は、30日間で99.9パーセントなど、その目標値です。サービスレベル契約(SLA)は、顧客に対する約束であり、多くの場合、未達時の結果を伴います。100パーセントとSLOの間の差はエラーバジェットです。これはリスクと変更のために許容される余地です。
16. 本番サービスが遅くなっています。どうしますか?
- ダッシュボードとエラー率を使って、本当に問題が起きているのか、誰が影響を受けているのかを確認する。
- 最近何が変わったかを確認する。デプロイ、設定変更、トラフィックの急増など。
- 特定のエンドポイント、リージョン、依存関係などに絞り込む。
- リソース(CPU、メモリ、接続数)と下流のサービスを確認する。
- 最近の変更が原因の可能性が高い場合は、まずロールバックし、その後で調査する。
- 作業中も状況を共有する。
面接官は、冷静で順序立ったアプローチと、根本原因を突き止める前に被害を抑える姿勢を評価しています。
17. ブレームレス・ポストモーテムとは何ですか?
インシデント後に作成される振り返り文書で、誰がミスをしたかではなく、システムとプロセスがどのように失敗を許したかに焦点を当てます。タイムライン、影響、原因、担当者を定めた具体的なフォローアップアクションを含みます。目的は学び、同じ失敗を繰り返しにくくすることです。
18. 水平スケーリングと垂直スケーリングの違いは何ですか?
垂直スケーリングは1台のマシンにより多くのリソースを与えることです。水平スケーリングはマシンの台数を増やすことです。垂直はシンプルですが上限があり、単一障害点になります。水平はより大きくスケールでき、1台のマシンの喪失にも耐えられますが、ステートレスなサービスか共有ステートが必要です。
実践
19. パイプラインをどのようにセキュアにしますか?
パイプラインを変更できる人と本番にデプロイできる人を制限します。依存関係とイメージを既知の脆弱性についてスキャンし、成果物に署名して検証し、認証情報を短命かつスコープ限定にし、パイプラインファイルへの変更をコードと同様にレビューします。広範な権限を持つビルドエージェントは格好の標的です。
20. 失敗したデプロイについて教えてください。
これは技術面接の中の行動面接の質問です。短いストーリーで話しましょう。何が変わったか、どう気づいたか、最初に何をしたか(通常はロールバックなどで被害を抑える)、何がわかったか、そして再発しないために何を変えたか。面接官が見ているのは、責任を追及しない言い回しと、具体的な再発防止策です。
準備の方法
- 小さなパイプラインを端から端まで構築しましょう。リポジトリ、ビルド、テスト実行、コンテナ、そしてアクセス可能な環境へのデプロイまで含めます。
- 自分の経験から、インシデントや失敗したリリースを1つ説明できるようにしておきましょう。
- 「サービスが遅い」という問いへの回答を、落ち着いた順序立ったリストになるまで声に出して練習しましょう。
- CI、コンテナ、Infrastructure as Code、モニタリングなど、各分野で1つのツールをしっかり理解しておきましょう。名前を長く並べるよりも効果的です。
関連する練習として、AWS面接質問集、Terraform面接質問集、Kubernetes面接質問集、コンピュータネットワーク面接質問集のガイドもご覧ください。
声に出して、自分の言葉で練習しましょう。後で文字起こしを確認すると、どこで話がそれたり要点を外したりしたかがわかります。ライブ面接や評価では、AIツールに関する雇用主のルールに従ってください。
YesToTheOfferで回答を練習しましょう
声に出してリハーサルし、自分の履歴書に基づいた回答を取得し、後で文字起こしを確認できます。30分無料、サブスクリプション不要。



