支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


DevOpsの概念

開発チーム・運用チームがサイロ化される一般的なシステム開発では、それぞれの目標の違いに起因する意見の衝突が発生することがあります。開発側ではアプリケーションへの新機能導入を目指す一方、運用側はデプロイ後の安定性を目標にするからです。しかし、これではユーザーに価値を提供できる状況にあるとはいえないでしょう。

こうした課題を解決するため、開発(Development)と運用(Operations)が密接に連携してシステムを開発・運用し、ビジネスの価値を高めていく概念として提唱されたのが「DevOps」です。年収・満足度を基準にしたアメリカのIT職種ランキングで6位(2019年時点)につけるなど、近年注目の高まるDevOpsエンジニアにチャレンジしてみたいという方も多いのではないでしょうか?

一方、明確な定義のないDevOpsエンジニアに関しては、年収や仕事内容を含め、曖昧なイメージしか持っていない方も少なくありません。そこで本記事では、DevOpsエンジニアに興味のある方、チャレンジしてみたい方に向け、求人例や年収例を紹介するとともに、DevOpsのプロセスや求められるスキルなども解説していきます。

なぜDevOpsが注目されているのか?

2009年頃にとあるエンジニアによって提唱された「DevOps」という概念が、なぜ近年注目されているのか?その背景には、IT化の進展とともにシステム開発における開発期間の短縮、変更等への柔軟な対応が求められる傾向が強まっているからだといわれています。つまり、システム開発を取り巻く課題を解決するのに、DevOpsが適切だという認識が広まっているのだといえるでしょう。

信頼性を高められる

運用側は、システムの安定稼働を妨げるおそれのある開発側の変更をよく思いません。一方、ツールの活用により、テスト・ビルド・デプロイといった工程を自動化するDevOpsならば、ヒューマンエラーを排除した高い信頼性が確保されるため、運用側も変更を容認しやすくなり、結果的にシステム全体の信頼性向上に寄与できます。

生産性を高められる

開発側と運用側の連携が取りにくい従来のプロジェクトは、リリース手順書が必要、ステータス管理ができない、本番環境で動作しないなどの問題が生じがちです。ツールを使ってメンバー間の連携をスムーズにするDevOpsであれば、煩雑な作業を自動化して飛躍的に生産性を高められます。

俊敏性を高められる

従来のウォーターフォール型開発では、プロジェクト完遂までサービスがデプロイされないため、要求変更へ迅速に対応できなくなりがちです。アジャイル開発を代表とする開発手法を採用するDevOpsであれば、よりスピーディーで柔軟にシステムをリリース・デプロイし、継続的な改善を提供できます。

DevOpsのプロセス

ここまでの解説でおわかりのように、DevOpsの目的は「開発・運用が連携して、ユーザーに迅速かつ継続的にサービスを提供する」ことです。そのためのカギとなるのが、開発手法、ツールの活用・自動化、コミュニケーション・文化であり、プロジェクトによってさまざまなDevOpsの形があるといえるでしょう。以下に、代表的ともいえるDevOpsプロセス・開発手法の一例を簡単に紹介しておきます。

PLAN

開発するシステムの要件定義・設計はもとより、インフラの設計・運用モニタリングの方法、ツールの選定、各プロセスにおける開発実行計画を立てるフェーズです。ユーザーに継続的にサービスを提供するDevOpsでは、このフェーズを軸にしてプロセス全体がサイクル化されます。

BUILD

PLANに従って開発されたソースコードをもとに、サービスの実行に必要なファイルを作成するフェーズです。このフェーズで重要になるのは「バージョン管理」ツールであり、開発・運用の共有が必要不可欠です。もちろん、並行してインフラの構築や運用モニタリングの環境構築も行われますが、インフラ構築を自動化する「インフラストラクチャー自動化」ツールを活用するケースがほとんどです。

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

バージョン管理ツールにソースコードがコミットされた段階で実行される開発手法が、CIとも呼ばれる継続的インテグレーションです。バグを早期発見して信頼性を高めるため、自動的にソースコードのビルドとテストを実行することで、リリースまでの期間を短縮するのに役立ちます。

一方、ソースコードの変更が発生すると、自動的にビルド・テスト・実稼働環境へのリリース準備が整えられる、継続的デリバリー(Continuous Delivery:CD)という開発手法もあります。CDはCIを拡張したものであり、開発者はデプロイの準備が整ったビルド成果物を手元に置けることになります。

DEPLOY

CI / CDを経てビルドされたサービス・アプリケーションに問題がなければ、実稼働環境にデプロイしてリリースします。One Step Build & Deployツールなどで自動化するケースがほとんどであり、BUILDからDEPLOYまでのプロセスを「デリバリーパイプラインDelivery Pipeline」と呼びます。

OPERATION

デプロイ・リリースされたサービス・アプリケーションを運用・監視していくフェーズで、モニターとも呼ばれるプロセスです。CPU・メモリ使用率、プロセス数、エラー数、アプリのアクセス数、応答時間など、事前に監視対象となる項目を決定し、自動化ツールを駆使しながらリソース配分・スケーリングなどを調整していきます。

継続的フィードバック(Continuous Feedback)

ユーザーからの継続的なフィードバックを受け取れる体制を構築し、サービス・アプリケーションへの要望や変更を把握してPLANに反映させるフェーズです。OPERATIONからPLANまでのプロセスを「フィードバックループ(Feedback Loop)」と呼びます。

DevOpsエンジニアとは?

ここまでで解説してきたように、DevOpsとは開発・運用が連携して、ユーザーに迅速かつ継続的にサービスを提供するという目的を達成するための概念・文化であり、本来はエンジニアとしての職種のひとつではありません。

あえていえば、開発・運用が連携できる文化をつくりあげ、DevOpsプロセスすべてに携われる専門家が、DevOpsエンジニアだといえるのかもしれません。この辺りの定義の曖昧さが、DevOpsをわかりにくくしている要因でもあり、企業によっても人によっても捉え方は変わります。

DevOpsエンジニアの求人例

それでは、定義の曖昧なDevOpsエンジニアは、市場でどのように捉えられているのか?DevOpsに興味がある、あるいはDevOpsエンジニアにチャレンジしたい方が年収イメージを描きやすいように、公開されている正社員求人をいくつか紹介します。ある転職エージェントで公開されていたDevOpsエンジニア求人は、検索時点で61件ありました。

フィンテックサービス企業のDevOpsリードエンジニア求人
・必須要件:Webサービスの開発・運用経験5年以上
・歓迎要件:JavaEE、PHPなどを使った開発経験1年以上
・待遇:正社員、年収500〜900万円

クレジットカード企業のDevOpsエンジニア求人
・必須要件:自動化ツールの使用経験、Java / C# / Linuxの開発経験1〜2年
・歓迎要件:ソフトウェアデベロッパー・エンジニアの経験
・待遇:正社員、年収450〜900万円

DevOpsエンジニアの年収は?

求人例では年収上限900万円となっていますが、一般的にDevOpsの年収は500〜1,500万円程度だといわれています。これだけ年収に幅があるのは、企業によってDevOpsエンジニアの捉え方が異なるからでしょう。DevOpsチームのエンジニアを募集する企業であれば、500万円前後という年収は納得感があり、チームをリードしてDevOpsプロセス全体に携わるシニアエンジニアであれば、年収1,500万円でも欲しいと思う企業はたくさんあるはずです。

高年収DevOpsエンジニアに求められるスキル

それでは、高年収のシニアDevOpsエンジニアになるためには、どのような知識・スキルを身に付ければいいのでしょうか?求人企業がまだまだ少ないことからもわかるように、このスキルがあればシニアエンジニアになれるという基準はありませんが、考えられる要素を挙げておきましょう。

DevOpsの考え方への理解・実践

DevOpsの考え方には、相手を尊重する「Respect」メンバーを信頼する「Trust」失敗を責めない「Healthy attitude about failure」相手を非難しない「Avoiding Blame」の4つがあります。まさに文化ともいえるDevOpsの考え方を理解し、実践していく実行力・コミュニケーション能力が、シニアDevOpsエンジニアには求められます。

サーバ・ネットワークの知識・スキル

開発・運用が密接に連携するDevOpsでは、土台となるサーバ・ネットワークを含むインフラの知識・スキルが欠かせません。ユーザーに継続的な価値を提供するためのインフラ設計・構築はもちろん、ユーザーの声をPLANに反映するフィードバックループでは、運用経験を活かしたモニタリングが重要になります。

パブリッククラウドの知識・スキル

ユーザーのニーズを素早くシステムに反映させていく必要のあるDevOpsでは、スケーラビリティに優れたパブリッククラウドを活用するケースがほとんどです。当然、AWSを含むパブリッククラウドの知識・スキルは身につけておくべきでしょう。なかでもスケーリング、死活監視自動化は重要です。

セキュリティ・テスト・アプリケーション開発の知識

採用するDevOpsのモデルによっては、シニアエンジニアがアプリケーションのライフサイクル全般に携わります。つまり、セキュリティ、テストケースの作成・実施、アプリケーション開発の知識・スキルにも精通していなければなりません。DevOpsチーム全員がセキュリティに取り組む場合は「DevSecOps」とも呼ばれます。

ツールの知識・スキル

DevOpsでは自動化ツールをはじめとしたさまざまなツールが活用されるため、シニアエンジニアにはこれらのツールに関する知識、スクリプト言語を使ったプログラミングスキルが求められます。代表的なツールをいくつか紹介しておきましょう。

・仮想化ツール(実行環境の仮想化、実行環境の自動構築):Docker
・構成管理ツール(インフラ構成の管理・制御):Ansible、Chef
・CI / CDツール(コードのビルド・テスト自動化):Jenkins、CircleCI
・モニターツール(実行環境の監視):Zabbix、Nagios
・テスト自動化ツール:Selenium
・ソースコード/バージョン管理ツール:GitHub、git
・コミュニケーションツール:Slack

まとめ

DevOpsは、ITシステムによってビジネスの価値を高めるだけでなく、それを迅速かつ継続的に届け続けるために生まれた概念です。開発手法やツールの使い方だけを採用しても機能しないDevOpsは、まさに開発組織の文化とイコールの存在なのです。当然、DevOpsエンジニアの定義も曖昧であり、活躍していくための方程式などもありません。しかし、裏を返せばそれだけ挑戦的でやりがいのある役割だともいえます。この機会にDevOpsエンジニアにチャレンジしてみてはいかがでしょうか?