DevOpsエンジニアとは?必要なスキルと学習ロードマップを紹介 | サービス | プロエンジニア

    DevOpsエンジニアとは?必要なスキルと学習ロードマップを紹介

    • このページをはてなブックマークに追加

    公開日:2020年09月02日 最終更新日:2020年09月02日

    開発・運用の協力によりソフトウェアのリリースサイクルを高速化するDevOps。この言葉自体はよく知られるようになったものの、それを担うDevOpsエンジニアになるにはどのようなスキルが必要なのかについてはあまり詳しくない人が多いのではないでしょうか。
    今回はDevOpsエンジニアの役割にも触れながら、DevOpsエンジニアになるためのロードマップについて詳しく説明していきます。

    1. DevOpsエンジニアの役割とは?

    DevOpsはもともとはIT業界が発展する中、安定したサービス稼働を志向する運用チームと、開発を次々進めたい開発チームの対立が大きくなる中で生まれました。開発と運用との間での衝突を減らし、迅速なプロダクトの提供や機能追加を実現するためには、DevOpsエンジニアによる開発・運用サイクルの円滑化が重要です。

    開発・運用サイクルを早めるためには品質の担保が課題となります。DevOpsエンジニアの役割は、品質上の課題を解決し、素早いリリースを実現するために、ビルドやデプロイ、テストなどを短いスパンで継続的に行える仕組み(継続的デリバリー環境)を整えることなどが代表的です。

    ▲ページトップへ戻る

    1.1 DevOpsとは

    DevOpsとは「開発チーム(Development)と運用チーム(Operations)が協力しあってシステムを開発・運用し、ユーザーに迅速かつ継続的にプロダクトを提供すること」を意味します。

    DevOpsのより詳細な定義についてこちらの記事で解説しているので、興味のある方はご覧ください。

    ▲ページトップへ戻る

    1.2 代表的なDevOpsツール

    開発・運用サイクルを短縮するために、DevOpsの取り組みでは以下のようなツールが用いられます。

    Jira Software
    Atlassian社が開発する課題管理ツール。タスク管理・工数管理・進捗管理ができ、コミュニケーション活発化やタスクの可視化の効果がある。

    Jenkins
    「リリース速度の向上」「開発プロセスの自動化」「開発コストの削減」を行うツール。汎用性が高く、動作させるOSや自動化させる対象を選ばないことが特徴。

    DevOpsでは上記の他にもBacklogDockerChefなどさまざまなツールが使われます。

    ▲ページトップへ戻る

    2. DevOpsエンジニアになるには?学習ロードマップ

    出典:kamranahmedse/developer-roadmap: Roadmap to becoming a web developer in 2020

    DevOpsエンジニアになるためには「どんな内容のスキルを」「どんな順番で」学んでいけばいいのでしょうか。

    以下ではHackerNoonに投稿されたThe 2018 DevOps RoadMapの内容を踏まえて、DevOpsエンジニアのための学習ロードマップについて紹介します。

    ▲ページトップへ戻る

    2.1 プログラミング言語を学ぶ

    DevOpsエンジニアは自動化のためにプログラミングのスキルを必要とします。以下のような言語のうち、一つ以上習得することが望ましいです。

    Python
    シンプルで扱いやすいスクリプト言語

    Ruby
    柔軟性の高さが特徴のスクリプト言語

    Node.js
    JavaScriptの実行環境。JavaScriptを用いてサーバー開発やアプリ開発を実現する

    Go
    複雑なシステムの開発に向いているコンパイル言語

    Rust
    メモリ消費量が少なく、ハイパフォーマンスを実現するコンパイル言語

    C
    汎用プログラミング言語

    C++
    Cの後発言語

    ▲ページトップへ戻る

    2.2 異なるOSのコンセプトを理解する

    DevOpsエンジニアには、システムの開発だけでなく、インフラの構築についての知識も不可欠です。システム管理者に依存せず、自らOS周りの部分についても判断できるようになるくらい、以下のようなサーバー管理の知識を習得することが必要です。


    • プロセス管理
    • スレッドと並行性
    • ソケット
    • I/O管理
    • 仮想化
    • メモリストレージとファイルシステム

    プロセス管理やI/O管理、仮想化環境の最適化によって、柔軟性や運用性、冗長性が高く、サービス品質が保証されたプロダクトをエンドユーザーに提供することができます。つまり、DevOpsエンジニアがインフラ構築の知識を持つことで、ハイクオリティなサービスを迅速にエンドユーザーに提供するというDevOpsの目的を達成することにつながります。

    ▲ページトップへ戻る

    2.3 サーバー管理について学習する

    DevOpsでのシステム構築は、多くの場合、OSとしてLinuxが採用されます。オープンソースであるLinuxは、様々な開発者の手によって作られた経緯により、UbuntuやDebianなど特徴の異なる多くのディストリビューションが存在します。もしLinuxを扱ったことがない場合、サーバー管理の手法を学ぶため、複数のLinuxディストリビューションを実際に扱ってみるとよいでしょう。

    また、ターミナルにおけるコマンドの知識を習得することも必要となります。代表的なコマンドには以下のようなものがあります。

    su
    他のユーザーに成り代わるときに利用

    ps
    プロセスの状態を確認

    netstat
    ネットワーク接続の状態を確認

    ▲ページトップへ戻る

    2.4 ネットワークとセキュリティについて学ぶ

    HTTPSやFTP、SSL、TLSなど、基本的なネットワークとセキュリティの知識を身に付けることが必要です。近年はセキュリティ事故の種類も多岐に渡っていることから、これらは非常に注目を浴びている分野でもあります。そのため、セキュアなソフトウェアを、DevOpsプロセスの初期段階からシステムに組み込むことが求められます。

    スピードはDevOpsの大きな目的且つ重要な要素ですが、セキュリティがずさんな状態であると、顧客情報流出等の重大事故につながりかねません。DevOpsエンジニアは、柔軟性や運用性を高く保持し、スピード感を保ちながらも、セキュリティに関して配慮できなければなりません。

    ▲ページトップへ戻る

    2.5 プロキシやロードバランサを理解しセットアップする方法を学ぶ

    インフラのコード化をはじめとする開発プロセスの自動化について学ぶには、まずサーバーに何がセットアップされており、どのような機能が備わっているのかについて理解する必要があります。

    そのため、プロキシやロードバランサ、ミドルウェア等、サーバーの機能についての知識を身に付けなければなりません。

    ▲ページトップへ戻る

    2.6 インフラのコード化を学ぶ

    手動で行うことが一般的だったインフラの構築を、コード化により自動で行なうことによって、インフラ構築の正確性やスピードを高めることができるようになりました。DevOpsでは、インフラ構築のコード化は非常に重要です。

    そして、コード化により、コードを多くの仮想化環境へ配布する要件や、構成情報を適切にバージョン管理する必要が生じるため、ツールを活用しなければなりません。DevOpsエンジニアは、インフラのコード化に関わるツールについての知識を習得することが必要です。

    代表的なツールとして、インフラのプロビジョニングツール(インフラの構成管理を自動で行なうツール)である「Chef」が挙げられます。このツールによって、日本語による手順書の用意や手動による作業不要で、インフラの構成管理が可能になります。

    その他、同じくインフラの構成管理ツールであるAnsibleSaltPuppet、コンテナ形式で仮想環境を配布することを実現するコンテナ管理ツールであるDockerもよく使われます。

    ▲ページトップへ戻る

    2.7 CI/CDツールを学ぶ

    迅速にサービスを提供することは、DevOpsの目的の一つです。リリース速度を高めるため、継続的インテグレーション及び継続的デリバリーを実現するツールについて学ばなければなりません。

    継続的インテグレーション
    ビルドからテスト環境への配置を自動化

    継続的デリバリー
    継続的インテグレーションを拡張し、ビルドからテスト実行までを自動化

    代表的なツールが、「Jenkins」です。Jenkinsは、Javaが動く環境であれば、OSの種類関係なく動作します。また、利用者も多く、日本語での情報も手に入りやすいことも特徴です。

    ▲ページトップへ戻る

    2.8 ソフトウェアとインフラの監視を学ぶ

    システムを提供する企業は、パフォーマンスの悪化により、ユーザーからクレームが入る前に対策を打つため、ソフトウェアとインフラを監視し、状態を把握できる体制が整える必要があります。

    この時、どの項目をモニタリングするのか、また、運用フェーズに入ってから改善していく際の優先順位の付け方は、DevOpsエンジニアが意思決定することになります。そのためDevOpsエンジニアには、監視に関する知識や運用経験が求められます。

    代表的なシナリオとして、Seleniumによってテストを自動的に実行し、Nagiosdatadogなどの監視ツールにてモニタリングすることが挙げられます。各ツールに個性があるため、どの監視ツールを使うのかについても検討できなければなりません。

    ▲ページトップへ戻る

    2.9 クラウドプロバイダについて学ぶ

    2020年現在、システムの運用はオンプレミス環境ではなくクラウド環境でのサービス利用が主流となっています。IDCの市場予測によると、国内パブリッククラウドサービスの年間平均成長率(CAGR:Compound Annual Growth Rate)は2019年~2024年の期間では18.7%で推移しています。また2024年の市場規模は2019年比2.4倍の2兆644億円になると予測されています。

    そのためDevOpsエンジニアは、AWSMicrosoftAzureGCPなど、どのクラウドプロバイダを利用すればよいか判断できるようになるため、これらについての特徴や扱い方などの知識を身につける必要があります。

    参照元:国内パブリッククラウドサービス市場予測を発表|IDC

    ▲ページトップへ戻る

    3. DevOpsエンジニアが最低限身につけるべきスキルは何?

    DevOpsエンジニアは現場にて、どのようなスキルが必要とされるのでしょうか。必要とされるスキルのうち、特に重要度の高いものについて、本項に記載します。

    ▲ページトップへ戻る

    3.1 自動化ツールの知識・経験

    DevOpsは、複数の業務の組み合わせ、そして最適化及び効率化の積み重ねによって実現されるため、作業量も膨大となる傾向にあります。そのため実際にDevOpsのプロセスが回り始めた際、手動ですべての業務を行なうとなると、ミスを誘発することは避けられません。

    こういった課題を解決するために必要なのが、自動化ツールについてのスキルです。例えばGitHubにプルリクエストが来たらCIサーバーで自動テストを行なったり、問い合わせがあったらSlackに自動通知したりなど、プロセス間の自動化が重大な役割を担います。

    ▲ページトップへ戻る

    3.2 インフラの構成管理

    インフラの構成情報のバージョン管理を適切に行うことで、インフラの中身を見える化することができ、効率の良いシステム運用が可能となります。

    継続的なプロダクトのリリースを実現するためには、インフラの構成管理が適切に行なわれていることが前提となります。一方で、サーバーの構成情報をきちんと管理していない場合、インフラ全体がブラックボックス化してしまい、誰の手にも負えなくなってしまいます。

    そのため、DevOpsエンジニアには、インフラの構成管理に関する知識及びツールを使いこなすスキルが求められます。

    ▲ページトップへ戻る

    3.3 コミュニケーション

    ここまで技術面にフォーカスしてきましたが、DevOpsの本質は文化的連動にあります。サイロ化した組織を、ツールなどを適切に活用することでコミュニケーションの円滑化を図っていくことが、DevOpsエンジニアの担うべき大きな役割の一つです。DevOpsエンジニアには、ソフト面のスキルも求められます。

    ▲ページトップへ戻る

    4. DevOpsエンジニアが取得するべき資格は何?

    どのような資格を取得することで、DevOpsエンジニアとしてのスキルが証明されるのでしょうか。DevOpsエンジニアが取得すべき資格について、紹介します。

    ▲ページトップへ戻る

    4.1 AWS認定 DevOpsエンジニア-プロフェッショナル

    代表的なものとして、AWS環境におけるシステムの運用管理経験を持つDevOpsエンジニアをターゲットにした「AWS認定 DevOpsエンジニア-プロフェッショナル」があります。
    試験の概要は以下の通りです。


    形式選択式
    受験料30,000円
    試験時間180分
    受験方法テストセンターでの受験、またはオンラインでの受験

    参照元:AWS公式サイト


    DevOpsに関する業務経験があれば比較的取り組みやすい資格ですが、試験範囲が広く、ボリュームも多いため、難易度は高めです。試験対策として知識を補完するため、AWSの研修コースを受講するとよいでしょう。

    ▲ページトップへ戻る

    5. まとめ

    DevOpsエンジニアは、広範囲にわたる知識と経験が求められる立場であるため、そう簡単になれるものではありません。
    ですが、多岐に渡るユーザーの要望汲み取ることと同時にスピード感も求められる時代だからこそ、ハイクオリティなサービスを迅速に顧客に提供することに貢献するDevOpsエンジニアは、これからのシステムライフサイクルプロセスにおいて、ますます必要性の増していく人材であると言えるでしょう。

    ▲ページトップへ戻る


    最新求人情報をチェック!

    月額単価80万円〜100万円
    勤務地 東京都 中央区
    月額単価60万円〜70万円
    勤務地 東京都 港区
    月額単価60万円〜70万円
    勤務地 東京都 港区
    月額単価70万円〜80万円
    勤務地 東京都 千代田区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    フリーランス

    【PHP/Vue.js】Webエンジニア★入札情報サービスのリプレイス業務 NEW

    月額単価 :80万円〜100万円

    官公庁・自治体等の入札・落札情報を探せる「入札情報速報サービス」のリプレイスプロジェクトをご担当...

    フリーランス

    【Python】Webエンジニア★分析基盤システムの開発 NEW

    月額単価 :60万円〜70万円

    小売業向けの基盤システムの開発を担当して頂きます。

    フリーランス

    【GCP/PHP】APIManagerのDevelopperPortal刷新のためのシステム構築 NEW

    月額単価 :60万円〜70万円

    APIManagerのDevelopperPortalの刷新のため、新規システム構築業務を担当して頂きます。 【具体的業...

    フリーランス

    【iOS】システムエンジニア★アプリについての要求仕様検討 NEW

    月額単価 :70万円〜80万円

    通信キャリアの記事系のサービスアプリ(iOS)についての要求仕様検討の支援を担当して頂きます。 【...