DevOpsエンジニアが成功するために必要な10の重要なスキル - TechRepublic

DevOpsエンジニアが成功するために必要な10の重要なスキル - TechRepublic

Adobe、Amazon、Targetなどの企業は、社内および顧客向けにソフトウェアやセキュリティアップデートをより迅速に提供する手段として、DevOpsへの注目度を高めています。ワークフローの普及により、DevOpsエンジニアの求人はかつてないほど増加しています。

Indeedの2017年版「アメリカで最も魅力的な仕事」リストにおいて、DevOpsエンジニアは給与、求人件数、成長機会の点で第3位にランクインしました。Indeedによると、これらの職種は過去数年間で106%成長し、平均基本給は123,165ドルとなっています。

「特定の環境には数多くの技術的スキルが求められる可能性がありますが、DevOpsエンジニアリングの現実は、頻繁な変化です」と、DevOpsスタートアップ企業VictorOpsのデベロッパーアドボケートであるマシュー・ブックマン氏は述べています。「デプロイメントパイプライン、システムアーキテクチャ、インシデント管理など、DevOpsエンジニアは常に新しいテクノロジー、複雑な問題、そしてダイナミックな役割に挑戦することになります。」つまり、このポジションに就く人材には、好奇心旺盛で、やる気があり、知性も高くなければならないとブックマン氏は言います。

専門家によると、DevOps エンジニアが仕事で成功するために必要な上位 10 のスキルは次のとおりです。

参照: クイック用語集: DevOps (Tech Pro Research)

1. ソフトスキル

DevOpsとは、サイロを打破することで開発チームと運用チーム間の機能的な業務体験を変革することだと、ハピエスト・マインズ・テクノロジーズのディレクター兼DevOps責任者であるカルティガ・サダシヴァン氏は述べています。「DevOpsエンジニアは、サイロ間の橋渡し役となり、異なるチームを結集して共通の目標に向かって取り組むことが求められます」と彼女は述べています。

Project Management Essentialsの創設者兼プリンシパルであるアラン・ザッカー氏は、「対人スキルは重要ですが、過小評価されがちです」と述べています。ソフトウェアエンジニアであるDevOpsの専門家は、人やプロセスよりもツールに目を向けがちです。

「優れたDevOpsエンジニアは、まず人材、文化、そして組織の運営方法を理解することから始めます」とザッカー氏は述べた。「そして、継続的なデリバリーという目標を達成するために、運用環境全体を簡素化することに重点を置いた戦略を構築します。」

DevOpsチームを成功させるには、優れたコミュニケーションスキルを持つ人材が必要だと、ベラトリックス・ソフトウェアの社長兼共同創業者であるアレックス・ロビオ氏は述べています。「アジャイル開発チームと同様に、ソフトスキルは非常に重要です。これは個々のエンジニアだけでなく、DevOpsの導入と標準化に向けた組織文化の変革にも重要です」とロビオ氏は述べています。

2. ツールとテクノロジーに関する幅広い理解

DevOps の世界では新しいテクノロジーやツールが次々と登場していますが、優れた DevOps エンジニアにとって、以下の分野のテクノロジーやツールを幅広く理解することが重要だと Sadasivan 氏は言います。

ソース管理(Git、Bitbucket、Svn、VSTS など)

継続的インテグレーション(Jenkins、Bamboo、VSTSなど)

インフラストラクチャ自動化(Puppet、Chef、Ansible など)

デプロイメントの自動化とオーケストレーション(Jenkins、VSTS、Octopus Deploy など)

コンテナの概念(LXD、Docker)

オーケストレーション(Kubernetes、Mesos、Swarm)

クラウド(AWS、Azure、GoogleCloud、Openstack など)

優れたDevOpsエンジニアは常に好奇心旺盛だと、オートミック・ソフトウェアのテクノロジー・エバンジェリスト、ロン・ギドロン氏は言います。「常に新しいことを学ぶためには、常に質問し、答えに耳を傾け、新しいアイデアを生み出し、新たな挑戦を歓迎する必要がある」と彼は付け加えました。

参照: DevOps エンジニアになる方法: チートシート (TechRepublic)

3. セキュリティトレーニング

WhiteHat Security の脅威研究センター副社長であるライアン・オリアリー氏によると、開発と運用を組み合わせることはコードの開発と展開を効率化する優れた方法であるが、サイクルが高速化するということは、コードに脆弱性が以前よりもはるかに早く持ち込まれる可能性があることを意味している。

そのため、DevOpsエンジニアは、一般的なサイバーセキュリティの脆弱性を防御するだけでなく、アプリケーションを攻撃から保護するための安全なコードを書けなければならないとオリアリー氏は述べた。

企業がDevSecOpsに向かう傾向にある中、後から追加するのではなく、最初から安全なソフトウェアを組み込むことが重要だと、シノプシス ソフトウェア インテグリティ グループのシニア プリンシパル コンサルタントであるミーラ スバラオ氏は語る。

「DevOpsのプロセスにおける要件定義フェーズでセキュリティ対策を実施しましょう」とスバラオ氏は述べた。「プロセスの初期段階でセキュリティ対策を講じるほど、問題解決にかかるコストは低くなります。DevOpsのプロフェッショナルは、専門的なセキュリティ専門家である必要はありませんが、ソフトウェアセキュリティのトレーニングを受けることで大きなメリットが得られます。」

参照: 特集: DevOps 革命の波に乗る (ZDNet)

4. インフラ自動化ツールの使用経験

多くのテクノロジー環境と同様に、DevOpsの重要な要素は自動化だと、DaticalのDevOpsエンジニア、ジェームズ・ジャイルズ4世氏は述べています。従来のシステム管理者やエンジニアが行う多くの手作業は、Python、Ruby、Bash、Shell、Node.jsなどのスクリプト言語を使用することで自動化できます。「これにより、人的要素が排除され、手作業の一貫したパフォーマンスが確保され、チームは節約した時間をチームや会社のより広範な目標に費やすことができます」とジャイルズ氏は述べています。

AT&Tの技術担当副社長ジム・モース氏は、「DevOpsエンジニアは、要件定義から開発、テスト、運用まで、あらゆるレベルで自動化技術とツールを実装する能力を持っている必要がある」と述べた。

kCuraの主任DevOpsエンジニア、アダム・カズバン氏は、「インフラシステムを手動で構成する時代は終わりました」と述べています。「インフラはコードでプロビジョニングおよび構成する必要があります。そうしないと、サポートに溺れてしまいます」と彼は言います。PowerShell、Chef、Terraformなどのツールはこれを可能にし、インフラの自動化を可能にします。オンプレミス(VMWare、Hyper-Vなど)およびクラウド(Azure、Amazon Web Servicesなど)のインフラプロバイダーの経験も大きなプラスとなります。「インフラと監視ツールの接続を自動化することを忘れないでください」とカズバン氏は言います。

5. テスト

Software Stewards のプログラマー兼コンサルタントである Andrae Raymond 氏によると、自動化はテストによって推進されるため、DevOps エンジニアとして成功するには強力なテスト スキルが必要だそうです。

「コードや機能のデプロイメントを自動化するという考えは、特に何かが壊れた場合のエンドユーザーへの影響を考えると、不安を感じることがあります」とレイモンド氏は述べた。「適切なテストが実施されていれば、各機能が記述通りに動作することを確信できます。開発からデプロイメントまで、あらゆる段階でテストを実行し、システム全体が新機能によって正常に動作することを確認できます。」

6. 顧客第一の考え方

DevOpsエンジニアは通常、社外と直接顔を合わせる役割ではありませんが、開発者、QA、カスタマーサクセス、プロジェクトマネジメント、そしてビジネスリーダーは皆、DevOpsエンジニアのクライアントです、とジャイルズ氏は言います。「運用、開発、製品チームからのリクエストをうまく調整する際には、共感力、優先順位付け、そして透明性が、良好な関係を築く鍵となります」と彼は言います。

優れたDevOpsエンジニアは何よりもまず、顧客に価値を提供することに常に気を配り、自分の仕事がどのように成果につながっているかを理解し、測定したいと考えています、とPuppetの最高製品責任者であるオムリ・ガジット氏は述べています。サプライチェーンにおける自分の役割ではなく、成果そのものを重視することで、エンドツーエンドの成功に向けて最適な最適化を行うための正しい直感が得られる、と彼は付け加えました。

7. コラボレーション

優秀なDevOpsマネージャーは、優れたチームメンバーであり、必要に応じて同僚を支援してボトルネックの解消に貢献する必要があるとガジット氏は述べた。「どんな問題も皆の問題であり、優秀なエンジニアは常に周囲の人々をより良い方向に導きます」とガジット氏は述べた。

優れたDevOpsエンジニアは、コードレビューから受け入れテストの作成まで、他のメンバーがスムーズに作業できるよう、少人数のグループで作業を進めます。「チーム全体がより迅速に動けるよう、他者への共感が鍵となります」とガジット氏は言います。「DevOpsでは、個々のメンバーよりも顧客とチームを最優先に考えなければなりません。だからこそ、こうした資質こそが優れたエンジニアを際立たせているのです。」

参照: 職務内容: DevOps エンジニア (Tech Pro Research)

8. 柔軟性

tCellのオペレーション担当シニアディレクター、ダン・シモエス氏は、DevOps文化を成功させるには柔軟性が不可欠だと述べています。「聖域などありません。すべてはリスクとリターンのバランスです」とシモエス氏は語ります。「これは多くのセキュリティリーダーにとって成長の機会であり、DevOpsグループがリーダーシップを発揮するチャンスでもあります。」

JFrogのDevOpsエンジニア、アナスタシア・グリンマン氏は、マルチタスクはDevOpsエンジニアにとってもう一つの重要なスキルだと述べています。「DevOpsエンジニアは、様々なチームのプロセスの中核を担うミッションクリティカルなシステムに取り組むリソースとして、一度に多くの人々から依頼を受けます」とグリンマン氏は言います。「多くの場合、すべてが重要で、すべてが緊急です。DevOpsエンジニアは火消しに追われる立場にあるため、複数のタスクを同時に処理できる能力が不可欠です。」

9. ネットワーク認識

Kentikの戦略提携担当バイスプレジデント、ジム・フレイ氏は、「DevOpsエンジニアはネットワークを意識する必要がある」と述べています。「DevOpsプロジェクトの最終目標は、アプリケーションをエンドユーザーに確実に提供することです。これにはネットワークが関わってきます」とフレイ氏は言います。「DevOpsエンジニアへのアドバイスは、ネットワークを無視すれば危険にさらされるということです。優秀なDevOpsエンジニアは、設計、計画、テストにおいてネットワークを考慮する必要があることを理解しています。」

10. 全体像を把握する

多くのDevOpsエンジニアは優れたソフトウェアエンジニアだが、全体像を把握してクライアントにとって何が意味があるかを判断する能力が欠けていることがある、とザッカー氏は述べた。

DevOpsは多分野にわたるチームとアプリケーションのニーズと要望を統合するため、成功するDevOpsエンジニアは、特に大規模組織において、企業レベルにおけるDevOpsとデジタルトランスフォーメーションの全体像を見失ってはならないとGidron氏は言います。これにより、プロジェクト間で競合点や制約が生じるのを防ぐことができます。

Tagged: