DevOpsとは開発チーム(Development)と運用チーム(Operations)がお互いに協調し合います。
SREとDevOpsは、いずれも開発スピードだけではなく、ソフトウェア・サービスの品質を向上するための開発手法です。
これらを導入することで、「ビジネスの変化に適応可能なスピードを重視する開発部門」と「安全性・安定性を重視する運用部門」の間のギャップの解消が期待できます。
開発・運用するソフトウェア/システムによってビジネスの価値をより高めるだけでなく、そのビジネスの価値をより確実かつ迅速にエンドユーザーに届け続けるという概念があります。
安定したサービス稼働を志向する運用チームと、開発を次々進めたい開発チームの対立が大きくなる中で生まれました。
インフラエンジニアからdevopsエンジニアへのロードマップ!
品質上の課題を解決し、素早いリリースを実現するために、ビルドやデプロイ、テストなどを短いスパンで継続的に行える仕組み(継続的デリバリー環境)を整えることなどが代表的です。
ただ、非常に多くのツールやプラクティスがあり、その中から正しい選択を選ぶことはとても大変です。
「どのツールを学ぶべきか?」「どちらのプラクティスを追いかけるべき?」「MavenとJenkinsを学「DockerとKubernetesはどうなの?」 「インフラの自動化はDevOpsの一部なのか?」 などなど。
インフラエンジニアとの違い
開発プロセスの円滑化までを担当する点においては、従来のインフラエンジニアと異なりさらに上級のスキルが必要になるでしょう。
何かしらの不具合があった場合、プログラムに詳しくない運用者は対処や報告に苦慮するでしょう。その際DevOpsエンジニアは、正しい判断で的確に報告することが可能なため、開発の高速化や開発プロセスの円滑化に繋がるといえます。
SREへのスキルチェンジやスキルマップ!違い
①Chefやansibleなどの構成管理ツールの経験
Chef / Puppet / Ansibleの実務経験がある、または他同様のツールでの実務経験が求められます。経験者の母数が少ないためか、試した事がある、興味がある人の募集も散見できます。
②クラウドサービス(AWS/Heroku/Azure等)の利用経験
オンプレミスよりもAWS/Azure等のパブリッククラウド利用経験が重要視されます。
構成管理ツールを使いパブリッククラウドにアプリケーションを設置する前提の求人が多く見られます。
③スクリプト言語でのプログラミングの経験
プログラミングの言語は、大きく分けてスクリプト言語とコンパイラ言語の2つがあり、DevOpsエンジニアにとって必須となる構成管理ツールなどは、主にスクリプト言語が使用されています。
スクリプト言語でのプログラミング経験は必須です。
ほとんどの構成管理ツールはスクリプト言語で設定情報を記述します。
シェルスクリプトの利用機会も多い為、サーバーサイドでシェルを使ったプログラミング経験もあると歓迎されます。
④サーバー負荷、スケーラビリティ確保の経験
クラウドサービスと構成管理ツールを合わせて使う目的に、負荷状況に応じたスケーラビリティ確保があります。
サーバーのパフォーマンスチューニングによって解決する問題と、ロードバランサーを使い負荷分散させて解決する問題の両方が存在しますが、どちらかというと後者の負荷分散スキルが求められているようです。
⑤Linuxサーバーの保守・運用経験
クラウド上のインスタンスに新しく環境構築し、そこから保守・運用を行うためにはLinuxサーバー運用の知識と経験が必要になってきます。
脆弱性が見付かった際にはパッチを当てる等の対応が当然求められますので、トラブルを抑えたサービス運営のために必要となります。
⑥インフラ・ネットワークの理解
パブリッククラウドではCISCOやYAMAHA等の特定ネットワーク機器の知識が求められることは少なくなりますが、これらを使ったようなネットワーク設計をクラウド上で行いますので、ネットワークエンジニアの経験があると役に立ちそうです。
⑦テストスキルやセキュリティの対策と対処
DevOpsエンジニアの必須スキルの5つ目は、テストスキルやセキュリティの対策と対処ができるという点です。
ネットワークを使用する環境では、外的な攻撃から保護するためにもセキュリティが求められます。不正アクセスやハッキングなどの外部攻撃から、重要なデータの流出などを防ぐためです。
セキュリティの脆弱性や外部攻撃から保護し、不具合が発生した場合に適切な対処がとれるテストスキルを持った人材は、非常に重要になります。
⑧コーディング・スクリプティング・アジャイル開発の知識
従来のシステム管理では、反復的なタスクを自動化するためのシェルスクリプトが作成されていました。
それに加えて高度なソフトウェア開発・コードレビュー・ソース管理などのアジャイル開発についても理解している必要があります。
インフラエンジニア・DevOpsエンジニアの将来性
技術の進化と共に開発に携わるエンジニアの数は増加し、ツールは多様化しつつあります。
複雑化していくソフトウェアの開発において、デプロイや運用監視などのプロセスを自動化するDevOpsの手法を導入する企業は増加しています。
開発環境を整備し、プロセスの自動化を推進してチームの生産性を向上させるDevOpsエンジニアは今後さらに不可欠な存在となるでしょう。
DevOpsエンジニアの年収は?
米キャリア情報サイト、コンパラブリー(Comparably)は発表した年収ランキングでは6位に位置しています
1位 データサイエンティスト(11万850ドル)
2位 プロダクトマネジャー(10万5000ドル)
3位 モバイル開発者(9万8000ドル)
4位 開発者(9万6000ドル)
5位 セールスエンジニア(9万3000ドル)
6位 DevOps(デブオプス)エンジニア(9万ドル)
DevOpsエンジニアの求人内容は?
某有名WEBサイト
開発・運用業務の効率化のために以下のような業務を担当していただきます。
運用環境の企画、構築
自動化ツールの導入、開発
システム監視、パフォーマンスチューニング
オペレーションの改善
チーム内のエンジニアのリード
某有名グルメサイト
・ミドルウェアバージョンアップ対応(アプリケーション改修も含む)
・アプリケーション、ミドルウェアのパフォーマンスチューニング
・運用および開発改善を目的としたアプリケーション改修
・運用および開発改善を目的とした新規システムのアーキテクチャ設計および構築(ミドルウェア等の技術選定/検証、導入も含む)
・デプロイ、テスト環境、CI環境、開発環境の改善
・開発エンジニアへの技術的な支援
・Ansibleを用いたミドルウェアの構成管理
大手メーカー
・5年以上のIT経験、特にハンズオンでご自身で構築した経験
・5年以上のシニアエンジニアに相当する経験と後進指導経験
・3年相当のAWSやGCPのクラウド構築・運用経験、自動化経験
・日本語及び英語での卓越したコミュニケーション能力(口頭、書面、プレゼンテーション)
・継続インテグレーション・継続デプロイメントの構築運用経験
※以下の内から2つ
・Eコマースシステムの構築・運用経験
・大規模ウェブサービスの構築・運用経験
・継続インテグレーション・継続デプロイメントの実行経験・適用経験
・開発プロセス方法論の導入経験。特にScrum/Agile手法
・テスト方法論や品質管理方法論の導入経験
まとめ
全般的にはネットワークエンジニア・インフラエンジニアをDevOpsエンジニアとなっているのでしょう。
インフラエンジニアが生き残るにはプログラミングができないといけないと感じます。
コメント