ホーム テクノロジー DEVOPS 非公開: DevOps 面接でよくある 55 の質問と回答 [2023 年]

DevOps 面接でよくある 55 の質問と回答 [2023 年]


DevOps はアプリケーションを構築してデプロイする方法としてますます人気が高まっており、DevOps プロフェッショナルへの需要が高まっています。

この記事では、DevOps 面接で最もよく聞かれる質問のいくつかとその回答について説明します。これらの質問を学習の核として使用すると、採用される可能性が高まります。また、採用担当者であれば、採用プロセスに役立ちます。

コンテンツ 表示

DevOps 面接でよくある質問と回答

DevOpsとは何ですか?

DevOps は、開発と運用の短縮形です。このソフトウェア エンジニアリングの実践により、開発チームと運用チームが統合され、プロジェクトのあらゆる段階が自動化されます。 DevOps チームは、リソース管理、コミュニケーション、チームワークに重点を置いています。

DevOps は、ソフトウェア開発ライフサイクル全体を通じて作業を改善することを目的としたアプローチです。 DevOps プロセスは、計画、コーディング、構築、テスト、リリース、デプロイ、運用、監視の各段階で構成される無限ループとして表されます。

DevOps は、計画、開発、配信、運用の各フェーズを通じて、アプリケーションのライフサイクルに影響を与えます。各フェーズは他のフェーズに依存しており、各フェーズは役割に固有のものではありません。真の DevOps 文化では、各役割が各フェーズにある程度関与します。

DevOps 方法論のさまざまなフェーズとは何ですか

  • 継続的な開発。これは計画とコーディングの段階です。
  • 継続的インテグレーション。これは、開発チームがさまざまなコンポーネントを統合し、コードが壊れないことを確認するフェーズです。
  • 継続的なテスト。これは、事前にスケジュールされた自動テスト フェーズです。
  • 継続的な展開。このフェーズでは、アプリ全体のパフォーマンスに影響を与えず、手間のかからない開発が保証されます。
  • 継続的なモニタリング。このフェーズでは、アプリの全体的な有効性が保証されます。
  • 継続的なフィードバック。エンドユーザーから報告された問題とパフォーマンスが分析されます。
  • 継続的な操作。開発者が製品のより良いバージョンを構築し、問題を迅速に検出できるようになります。

DevOpsの利点は何ですか?

DevOps アプローチを採用するチームは、プロジェクトをより迅速に完了する傾向があります。このようにして、通信エラーが回避され、改善やその他の必要な変更の迅速な実装が容易になります。 DevOps アプローチは、開発チームと運用チーム間のコラボレーションを促進し、チーム全員の目標がより一致するようにします。利点の一部を次のように要約できます。

  • コミュニケーションの向上
  • チームワークと結束力
  • コラボレーションの向上
  • 高品質の製品をより速くお届けします
  • 複雑さを軽減し、問題を迅速に解決
  • 新しいコードを追加するための優れたスケーラビリティと柔軟性
  • より安定した動作環境
  • さらなる自動化
  • コスト削減と資源活用
  • 統合された自動ツールによるセキュリティ

DevOps ツールの名前をいくつか挙げます

  • Jenkins などの継続的統合ツール
  • Gitなどのバージョン管理
  • Maven などのビルド ツール
  • Chef などの構成管理ツール
  • Dockerなどのコンテナプラットフォーム

DevOps KPI をいくつか挙げてください

  • 導入頻度
  • 音量を変更する
  • 導入時間
  • 導入失敗率
  • 時刻検出
  • 欠陥回避率

CI/CD とは何ですか?またその利点は何ですか?

継続的インテグレーション (CI)

CI は、高品質で迅速なソフトウェアの提供を容易にするツールと実践を組み合わせたものです。これにより、ボトルネックが解消され、立ち上げ段階での技術的問題が回避されます。

継続的デリバリー (CD)

これにより、コード変更の配信が自動化され、運用環境でコードを迅速に追加でき、アプリケーションが正しく機能することが保証されます。

継続的展開 (CD)

継続的デリバリとは異なり、この実践の目的は、ソフトウェアを実稼働環境にデプロイする際に人間の介入がないことです。新しいコードまたは変更されたコードの運用環境への公開は自動化されます。

CI/CD は、アプリケーションのライフサイクル全体を通じて DevOps を実装します。これらのプラクティスは、ソフトウェア開発プロセスのさまざまな段階を合理化し、自動化することで生産性を向上させるのに役立ちます。

マイクロサービス アーキテクチャとは何ですか? 従来のアーキテクチャとの違いは何ですか?

ソフトウェアを作成する従来の方法はモノリシックです。これは、アプリケーションのすべての機能が 1 つのブロックに集められていることを意味します。エラーが発生した場合、または更新が必要な場合は、製品全体を制御するコードが分析されます。

これは停止やクラッシュを引き起こし、コードの保存にとって大きな危険をもたらします。顧客にとって、それは損失と頭痛の種を意味します。

マイクロサービス アーキテクチャでは、アプリケーションの機能は、独立して開発され統合されたサービスを表します。コンポーネントは別々ですが、相互に連携して関連するタスクを実行します。

このようにして、各独立したサービスは他のサービスに干渉することなく実行されます。これは、障害が発生した場合にも当てはまります。機能に障害が発生した場合でも、アプリケーション全体の機能を損なうことなく機能を調整できます。

マイクロサービスの登場により、DevOps の俊敏性と効率性がさらに高まり、エンドツーエンドの開発が加速され、アプリケーションのスケーラビリティがさらに高まります。

DevOpsとアジャイルの違い

DevOps は、ソフトウェアの開発と保守に携わるすべてのチーム メンバー間のコラボレーションを促進する文化です。

アジャイルは、チームの生産性を高め、変化するニーズに基づいてリリースを推進するように設計された開発方法論です。

コードとしてのインフラストラクチャとは何ですか?

コードとしてのインフラストラクチャは、コンピューティングおよびネットワーク インフラストラクチャを定義するアプローチであり、ソース コード管理技術を使用し、他のソフトウェア システムと同様に扱われます。

このコードは、テストの実践と継続的デリバリーの完全な規律に従って、可聴性と再現可能な構築を可能にするためにソース管理内に保持される場合があります。

コードとしてのインフラストラクチャは、いくつかの実践に基づいています。

  • 定義ファイルを使用する
  • 自己文書化されたシステムとプロセス
  • すべての要素をバージョン管理する
  • システムとプロセスを継続的にテストする
  • バッチではなく小さな変更
  • サービスを継続的に利用できるようにする

DevOpsにおけるAWSの役割は何ですか?

AWS には、企業がアプリケーションを確実かつ迅速に開発できるようにする一連の柔軟なサービスがあります。 AWS のサービスは、コードのデプロイ、インフラストラクチャのプロビジョニングと簡素化、ソフトウェア リリース プロセスの自動化、インフラストラクチャのパフォーマンスの監視を簡素化します。

SSHの用途は何ですか?

SSH (Secure Shell) は、異なるコンピュータ間の安全な接続を可能にするプロトコルです。 SSH は、提供などのさまざまな目的を果たします。強力な認証、強力な暗号化、接続の整合性の維持、強力な接続とセキュリティ。

DevOps パイプラインとは何ですか?

DevOps パイプラインは、新しいソフトウェアをリリースする前のいくつかのステップを含むプロセスです。統合やテストから配信や展開に至るまで、プロジェクトのすべてのフェーズに適用できます。一般に、次の段階とチームを経ます。

  • 製品ビジョン: 製品の機能を定義します。
  • 開発チーム: 反復的かつ段階的に開発します。
  • 運用領域: 安定した環境を実装および維持します。
  • モニタリングとフィードバック: 価値を生み出し、顧客が利用できるように努めます。

構成管理とは何ですか?

これは、システム/製品のライフサイクル全体にわたるパフォーマンスと機能的および物理的特性の一貫性を確立および維持するシステムのエンジニアリング プロセスです。

継続的テストとは何ですか?

これは、開発の進行に合わせて、アプリケーションの事前にスケジュールされた自動テストです。

Git とは何ですか?

これは、ソース コード管理のためのオープンソースの無料ツールです。このツールは、小規模なプロジェクトから大規模なプロジェクトまで処理できるように設計されています。

いくつかの基本的な Git コマンドについて説明します。

  • Git クローン
git clone <https://name-of-the-repository-link>
  • Git ブランチ
git branch <branch-name>
  • Git チェックアウト
git checkout <name-of-your-branch>
  • Gitの追加
git add <file>
  • Gitコミット
git commit -m "commit message"
  • Gitプッシュ
git push <remote> <branch-name>
  • Git プル
git pull <remote>

Git マージと Git リベースの違いを説明する

Git merge コマンドを使用すると、開発者は、それぞれのブランチのコミットのログをそのまま残しながら、異なる Git ブランチをマージできます。

Git rebase コマンドを使用すると、開発者はあるブランチから別のブランチに変更を統合でき、プロセスが完了するとログが変更されます。

Git フェッチと Git プルの違いを説明する

Git fetch は、オリジナルから最新のメタデータを取得/確認するように git に指示します。ただし、ファイル転送は行わず、チェックのみを行います。

Git pull はチェックを行い、変更をリモート リポジトリからローカル プロジェクトに反映します。

マージ競合とは何ですか?

マージ競合は、2 つのブランチを競合するコミットとマージすると発生します。マージ競合は通常、異なる開発者がコードまたはファイルの同じ行を変更した場合に発生します。

バージョン管理とは何ですか?また、さまざまな種類とは何ですか?

バージョン管理 (ソース管理) は、ソフトウェア コードへの変更を追跡および管理するプロセスです。

これらはさまざまな種類のバージョン管理です。

  • 集中型– サーバー上にソース コードの「中央」コピーが 1 つあり、すべての変更が「中央」コピーにコミットされます。 Subversion (SVN) と Perforce は、一元化されたバージョン管理の例です。
  • 分散 (DVCS) –すべてのプロジェクトのファイルを保存するための中央サーバーがありません。 Git と Mercurial は DVCS の例です。

バージョン管理を使用する利点は何ですか?

  • 開発者が効率と機敏性を維持できるように支援します
  • プロジェクト/ファイルに対するすべての変更の完全なログを提供します
  • トレーサビリティの向上
  • マージと分岐の管理に役立ちます
  • コラボレーションを可能にする

分岐とは何ですか?

ブランチとは、メイン リポジトリの別の新しいバージョンを作成することを指します。ブランチを使用すると、メイン ブランチに影響を与えることなく、プロジェクトのさまざまな部分で作業できます。

分岐戦略とは何ですか?

マージ戦略は、ソフトウェア開発チームがコードを作成、マージ、デプロイするときに採用する方法論です。このようなアプローチにより、バグや間違いがメイン プロジェクトにマージされる前のブランチ段階で確実に修正されます。

DevOps で使用されるいくつかの種類のテストについて説明してください。

単体テスト

コードの特定の部分を単独でテストします。単体テストは、データベースに接続したり、ファイル システムを使用したり、外部システムと通信したり、システム コンポーネントと対話したりしてはなりません。これにより、それらを迅速に実行できるようになり、変更によって既存の機能が損なわれた場合に迅速なフィードバックを得ることができます。

コンポーネントのテスト

彼らは、このような問題を特定できるように、大規模な機能グループをテストします。これらは一般に速度が遅く、より複雑な構成と、データベース、ファイル システム、またはその他のシステムへの接続により多くの I/O が必要になります。

導入テスト

このようなテストでは、デプロイメントが機能していること、つまりアプリケーションが正しくインストールおよび構成され、必要なサービスにアクセスでき、応答していることを検証します。

これらとは別に、エクスプロイトテストとユーザビリティテストもあります。テストについて詳しくは、アプリケーション テストの種類に関する記事をご覧ください。

自動テストとは何ですか?DevOps でテストを自動化する方法は何ですか?

自動テストは、コードを自動的にレビューして検証する手法です。自動化テストは、機能 (ビジネス ロジック)、コード スタイル、およびユーザー エクスペリエンスの品質基準が満たされているかどうかを確認するために実行されます。

自動テストは、Selenium や Katalon などのツールを使用して実行されます。

ビルド自動化とは何ですか?また、ビルド自動化ツールとは何ですか?

ビルド自動化ツールは、ソフトウェアをビルドする方法 (どの手順をどの順序で実行する必要があるか) と必要な依存関係 (ビルドを成功させるために他のソフトウェアが存在する必要があるか) を指定します。

一部のツールは、Maven や Apache の Ant など、特定のプログラミング言語でのプロジェクトに適しています。これらのテクノロジーは他の言語でも使用できますが、主に Java プロジェクトで使用されます。 Hudson や Jenkins など、さまざまなプロジェクトでより幅広く使用できるものもあります。

ジェンキンスファイルとは何ですか?

Jenkinsfile は、Jenkins パイプラインの定義を含むテキスト ファイルです。 Jenkinsfile がソース管理リポジトリにチェックインされます。その用途には次のようなものがあります。これにより、パイプラインの監査証跡が可能になり、パイプラインでのコード レビューと反復が可能になり、パイプライン内で唯一の信頼できる情報源が得られます。

Jenkins のアーキテクチャについて説明する

Jenkins にはマスター/スレーブ アーキテクチャがあります。これは、1 人の「マスター」の下で多くの「スレーブ」が働いていることを意味します。したがって、Jenkins Distributed Build は、異なる環境で同一のテストを実行し、結果を収集してマスター ノード上で組み合わせて監視できます。

トップの Jenkins プラグインは何ですか?

  • Jenkins 用 Blue Ocean プラグイン
  • Jenkins 用メーラー プラグイン
  • Jenkins 用の Git プラグイン
  • Jenkins 用の Jira プラグイン
  • Jenkins 用の Docker プラグイン
  • Jenkins 用の Maven 統合プラグイン
  • Jenkins 用の Kubernetes プラグイン
  • Jenkins 用 SonarQube プラグイン
  • Jenkins 用 Amazon EC2 プラグイン

Selenium IDE とは何ですか?

Selenium IDE は、テスト ケースのブラウザー操作を記録するツールです。 Selenium 統合開発環境でエラーが発生した場合に、ブレークポイントを設定し、変数を確認および一時停止することができます。

Selenium のさまざまなコンポーネントとは何ですか?

  • セレンIDE
  • セレン RC
  • Selenium Webドライバー
  • セレングリッド

Selenium のさまざまな種類のテストには何がありますか?

  • エンドツーエンドのテスト
  • 回帰試験
  • システムテスト
  • 性能試験
  • 互換性テスト

Selenium のさまざまな例外には何がありますか?

  • 要素が選択できない例外
  • NoAlertPresentException
  • InvalidSelectorException
  • NoSuchSessionException
  • StaleElementReferenceException
  • NoSuchWindowException
  • NoSuchFrameException
  • NoSuchElementException
  • タイムアウト例外
  • ElementNotVisibleException

WebDriver の driver.close() および driver.quit() とは何ですか?

driver.close()コマンドは、フォーカスのあるブラウザ ウィンドウを閉じます。ブラウザが 1 つだけ開いている場合は、ブラウザ セッション全体が閉じられます。

driver.quit()コマンドは、ブラウザのポップアップ、タブ、ウィンドウを含むブラウザ セッション全体を閉じます。

Dockerfile とは何ですか?

Dockerfile は、ユーザーがイメージを組み立てるためにコマンド ラインで使用できるすべてのコマンドを含むテキスト ドキュメントです。

DockerイメージとDockerコンテナの違い

Docker イメージは、ソース コード、ツール、ライブラリ、外部依存関係、およびアプリケーションが任意のオペレーティング システムまたはプラットフォームで正常に実行されるために必要なその他のファイルで作成された読み取り専用のテンプレートです。

Docker コンテナは、Docker イメージ テンプレートを実行するボックスです。

Docker のアーキテクチャを説明する

Docker はクライアント/サーバー アーキテクチャに従い、Docker クライアント、Docker ホスト、Docker レジストリで構成されます。

Docker クライアントは、 REST API とコマンドを使用してサーバー (Docker デーモン) と通信します。

Docker クライアントは CLI を使用してこれらのコマンドを実行します

docker build

docker pull

docker run
  • Docker Host は、アプリケーションを実行および実行するための環境を提供します。 Docker デーモン、ストレージ、イメージ、コンテナー、ネットワークで構成されます。
  • Docker Registry は、 Docker イメージを管理および保存します。

Dockerをサポートするクラウドプラットフォーム

Docker ホスティングをサポートするプラットフォームは次のとおりです。

  • 鎌寺
  • Googleクラウドラン
  • A2ホスティング
  • スタックパス
  • Sloppy.io
  • アマゾンECS
  • マイクロソフトアジュール
  • ホストプレスト
  • バルトル

コンテナと仮想マシンの違いは何ですか?

コンテナと VM は両方とも環境の仮想化と分離を利用して、アプリケーションから独立した処理を促進します。それでもコンテナは、メモリや処理などの利用可能なリソースのレベルで分割が行われるため、異なるアプリケーションを同時に実行できる分離された環境を作成します。一方、仮想マシンを使用すると、物理マシンに、元のマシンとは異なるオペレーティング システム、ハード ディスク、およびハードウェアに依存しない他のマシンを収容できます。

Docker と Kubernetes の主な違いは何ですか?

Docker は、最もよく使用される DevOps コンテナ ツールの 1 つです。アプリケーションの移植性に重点を置き、アプリケーションを技術的なコンテナおよびパッケージング システムに配置し、異なるプラットフォーム間で移動します。

同時に、Kubernetes は、論理的な分類によってコンテナーをグループ化できるコンテナー オーケストレーション ツールです。自動配布により複数のコンピュータに展開できます。

Kubernetes と Kubernetes の比較について詳しく読むドッカー。

プラットフォーム仮想化とは何を意味し、その利点は何ですか?

プラットフォームの仮想化とは、コンピュータ システム全体をシミュレートして、単一の物理マシン上でオペレーティング システムの複数のインスタンスを同時に実行することを意味します。

この構成では、仮想マシン モニター (VMM)、つまりハイパーバイザーが物理マシンのハードウェア リソースを完全に制御します。ゲスト オペレーティング システムは、VMM が管理する仮想マシン内で実行されます。環境の仮想化には、1 つ以上の仮想マシンとそれらの間のネットワーク接続のシミュレーションが含まれます。

仮想化は、さまざまな方法で導入にかかる時間とそれに伴うリスクを軽減するのに役立ちます。導入時に仮想マシンを使用すると、システム全体で垂直方向および水平方向に効果的な構成管理を実現するのに非常に役立ちます。

特に、仮想化の使用には次の利点があります。

  • 変化する要件への迅速な対応
  • 統合
  • 標準化
  • ベースラインの維持が容易

ナギオスとは何ですか?

Nagios は、IT インフラストラクチャ全体を監視して、ビジネス プロセス、システム、サービス、アプリケーションが適切に機能していることを確認するツールです。

Nagiosはどのように機能しますか?

  • モニタリング。 IT スタッフは、ネットワーク プロトコル、システム メトリック、アプリケーション、ネットワーク インフラストラクチャ、サービス、およびサーバーを監視するように Nagios を構成します。
  • 警告中。 Nagios は、重要なコンポーネントに障害が発生した場合にアラートを送信します。アラートは、SMS、カスタム コード、または電子メールを通じて送信できます。
  • 応答。 IT チームはアラートを認識し、対応します。
  • レポート。後で確認できるように、通知、停止、アラート応答、およびイベントの履歴記録を提供するレポートが生成されます。
  • メンテナンス。計画的なダウンタイムにより、メンテナンス中にアラートが送信されるのを防ぎます。

Nagios のプラグインについて言及する

  • 公式 Nagios プラグイン– 公式チームによって開発および保守されています
  • カスタム プラグイン– 個人のニーズに合わせて個人/企業によって作成されました
  • コミュニティ プラグイン– Nagios コミュニティのメンバーによって開発されました

Nagios を使用した仮想化について説明する

Nagios は、さまざまな仮想化プラットフォーム上のさまざまなメトリクスを監視する機能を提供します。 Nagios は、Xen、Amazon EC2、VMware、Microsoft Virtual PC などのさまざまな仮想化プラットフォームから実行できます。

Nagios はモニタリングにどのように役立ちますか?

Nagios は、NRPE、check_mk、SNMP などのエージェントを使用してサーバー上の統計を収集し、メトリックが事前定義されたしきい値を超えている場合にアラートを送信します。

Nagios は監視目的でどのポート番号を使用しますか?

SNMP、ポート 161 および 162

Nagios ネットワーク アナライザーとは何ですか?

Nagios ネットワーク アナライザーは、ユーザーが業務を中断する前に異常な動作、機能停止、セキュリティ上の脅威をプロアクティブに解決できるようにする sflow データ分析ソフトウェアです。この商用グレードのツールは、ネットワーク トラフィックと IT インフラストラクチャに関する幅広い洞察を提供します。

Nagios の継承と再帰に影響する変数

  • 名前– オブジェクトの変数/プロパティを継承できるテンプレート「名前」。
  • 用途指定 変数/プロパティを継承するテンプレートのオブジェクト名。
  • Register は、テンプレート オブジェクトの名前を Nagios に「登録」する必要があるかどうかを示します。

パペットとは何ですか?

Puppet は、ソフトウェア構成の管理と展開のためのオープンソース ツールです。

Puppet マニフェストとは何ですか?

Puppet マニフェストは、リソースの構成方法を説明する Puppet 構成言語を含むファイルです。

パペットコードとは何ですか?

Puppet コードは宣言型コードです。つまり、そこに到達するために必要な手順ではなく、システムの望ましい状態を使用して Puppet コードを記述します。

シェフとは何ですか?

Chef は、インフラストラクチャをコードに変換する構成管理ツールです。このツールは、手動プロセスではなくコードを記述することに重点を置いています。

シェフはどのように働いていますか?

Chef の作業は、システム管理者または開発者が自動化するタスクを定義するときに始まります。その後、クックブックとレシピ (ドメイン固有の言語で書かれた小さなプログラム) がキャプチャされ、 Test KitchenChefSpecFoodcriticなどのさまざまなツールを使用してテストされます。

クックブックとレシピが期待どおりに動作する場合は、ナイフとシェフのコマンドライン ツールを使用して Chef サーバーにデプロイされます。 Chef デプロイメント プロセスには、Chef サーバー、ワークステーション、およびノー​​ドが含まれます。 3,000 を超えるクックブック テンプレートから選択し、ニーズに合わせてカスタマイズできます。残りの作業はシェフが担当します。

DevOps プロジェクトの管理経験について教えてください

DevOps スキルは技術的なノウハウだけを意味するものではなく、マネージャー、プログラム ディレクター、プロジェクト マネージャーによく見られる人間的および管理的スキルを必要とします。

変更を管理およびサポートする方法、新しいバージョンのコードの運用側への転送を容易にするゲートウェイを提供する方法、さまざまなプラットフォームとツールを評価および監視してパフォーマンスを測定する方法、および将来の配信を改善するために結果を分析および共有する方法を知ることが不可欠です。 、など。

この質問に方法論を使ってアプローチし、複雑な問題を解決するまでの過程を説明します。インフラの機能改善についてはどのように取り組んでいくつもりですか?フロント、ミドル、バックオフィスの開発者とどのように協力する予定ですか?どのような監視ツールを使いこなしていますか?また、競合解決の経験をチーム内で共有することも検討してください。

まとめ

Glassdoor によると、米国における DevOps エンジニアの平均給与は年間 104,281 ドルです。 DevOps は新しいキャリアではありますが、今ではより多くの企業がこの役割を担い、専門家に必須のスキルを身に付けるためのさまざまなコースを公開しているのを目にすることができます。上記は、DevOps の面接で遭遇する可能性が高い質問の一部です。

DevOps を学ぶための優れたオンライン コースを検討することもできます。

タイタス・カムニャ氏からの情報提供あり。

「 DevOps 面接でよくある 55 の質問と回答 [2023 年]」についてわかりやすく解説!絶対に観るべきベスト2動画

【受かる回答と落ちる回答】短所を教えてください
【就活】一次面接でよくある質問の回答方法を徹底解説します!