DevOps:それが何であり、なぜそれが重要なのか

公開: 2022-03-11

IT効率を改善するための確実な「特効薬」の方法はありませんが、DevOpsは無視できない結果をもたらしました。 その名前が示すように、DevOpsは、ソフトウェア開発とソフトウェア運用の原則を組み合わせて、組織がより高速で効率的な製品を開発できるよう支援することを目的としています。 たとえば、TIAA-CREFは、DevOpsの原則を使用することで400億ドルのビジネスが大幅に改善されていることを確認しています。 TechBeaconによるTIAAの最高デジタル責任者であるScottBlandfordへのインタビューでは、TIAAがいかに不格好なレガシーソフトウェアとシステムから「アジャイルベースのDevOpsアプローチ」に移行し、開発の生産性が4倍に向上したかを説明しています。 アップデートははるかに迅速にリリースされ、「ITは、ユーザーの期待に応え始めたため、長年にわたって侵食されてきた信頼を取り戻しました。」

2017年のStateofDevOps Reportの結果は、DevOpsの原則を採用している高性能組織とそうでない組織との間に著しい違いがあることを示唆しています。 レポートによると、高性能の組織では、ソフトウェアの展開頻度がはるかに高く(46倍の頻度)、変更のリードタイムがはるかに速く(440倍高速)、ソフトウェアの変更の失敗率がパフォーマンスの低下よりも大幅に低くなっています(5分の1)。カウンターパート。

これらの重要な利点にもかかわらず、DevOpsは、誤用されたり誤解されたりすることが多い、重要で比較的新しい技術概念の典型的な例です。 多くの人にとって、アイデアはあいまいなままであり、DevOpsの基本的な定義でさえとらえどころのないことがわかります。

この明確さの欠如は、DevOpsの原則を実装しようとする組織やチームに悪影響を与える可能性があり、戦略的な混乱を引き起こし、DevOpsが推進するはずの速度と効率を妨げる可能性があります。 IBMのDevOpsエンジニアは、InfoWorldが公開した記事で次のように述べています。「いくつかの基本的な質問に答え、解決しようとしている問題を特定する必要がありました。実際の作業方法がわからない場合は、わかりません。どの問題を解決する価値があるか。」

ソフトウェアの開発と運用がより緊密に絡み合い、企業がクラウドインフラストラクチャにますます依存するようになるにつれて、経営幹部とプロジェクトマネージャーは、競争力を維持し、チームが最大限の能力を発揮できるように、DevOpsに精通する必要があります。

DevOpsは、別の漠然とした流行語としてではなく、製品やビジネスを劇的に改善する可能性のある重要な概念として考えるべきです。 この記事は、比較的技術に詳しくない読者を対象としており、何よりもまず、DevOpsとは何かを正確に明らかにすることを目的としています。 次に、具体的な例を使用して、DevOpsの原則が適切に実行された場合にどのように見えるか、およびDevOpsがあなたとあなたの組織にとって重要である理由を探ります。

エンジニア、文化、実践の一種としてのDevOps

DevOpsとは何ですか? Toptalが発行した以前の記事で、Demir Selmanovicは、「DevOpsは文化、考え方であり、(a)全体としてITの一部です」と書いています。 彼はさらに、DevOpsは、組織がIT機能全体の速度と効率を最適化できるようにする手法であると書いています。

クラウドインフラストラクチャの最大のプレーヤーであり、それに応じて重要なDevOpsの専門知識を開発したAmazon Web Servicesは、同様の定義を使用して、次のように述べています。高速:従来のソフトウェア開発およびインフラストラクチャ管理プロセスを使用している組織よりも速いペースで製品を進化させ、改善します。」

「DevOpsの人々は基本的に、システム管理とソフトウェア開発の両方に関心を持ち、スキルを組み合わせて両方への統一されたより良いアプローチを作成することを決定した人々です。」

これらは両方とも、関連分野にすでに精通している聴衆にとっては有用な定義ですが、技術的背景がそれほど広範ではない幹部にとっては抽象的すぎる可能性があります。 実際、DevOpsの定義を取り巻く混乱の一部は、DevOpsがエンジニアの一種、一連のプラクティス、および文化として同時に参照されることが多いという事実に起因している可能性があります。 DevOpsはこれらの各要素を網羅していますが、それらを個別に検討することから始めると便利です。

DevOpsエンジニアの様子から始めると、以前はIBMとHewlettPackardのソフトウェア開発者でDevOpsの原則を採用して10年以上の経験を持つMartinChikilianは、簡単で具体的な言葉で次のように述べています。システム管理とソフトウェア開発の両方で、両方のスキルを組み合わせて、両方に対する統一された、より優れたアプローチを作成することにしました。」

彼らは、会社が持っているサーバー、ネットワーク、およびその他のタイプのインフラストラクチャシステムを維持するだけでなく、ソフトウェア開発を通じてそれらのシステムを積極的に反復および改善することができます。 Chikilianが別の言い方をすると、「DevOpsの人とは、ソフトウェア開発の基盤を活用して、自分自身や企業がインフラストラクチャを処理するためのより優れたツールを構築できるようにする人です。」

アマゾンが言うところの「文化哲学の組み合わせ」とは、ソフトウェア開発者が使用するアプローチと、インフラストラクチャまたはソフトウェア運用の専門知識を持つアプローチの組み合わせを指します。 これらのプラクティス間の従来の障壁を打ち破る際に、DevOpsカルチャーは、開発者とインフラストラクチャの専門家がテーブルにもたらす明確な強みから利益を得ることができるように組織に力を与えることを目指しています。 これらのさまざまな種類のエンジニアをサイロ化する企業にとって、DevOpsの原則をうまく実装するには、「文化と考え方を変える必要があります」。 エミリーダウドルが2016年のNordicAPIプラットフォームサミットで説明しているように、障壁を取り除くことは、開発者とインフラストラクチャの専門家の間に時々存在する可能性のある自然な摩擦を軽減し、より友好的で協力的な作業環境を促進するのにも役立ちます。

簡単に言うと、DevOpsは、エラーが発生しやすい人間の相互作用を含む複雑な手動プロセスを、テスト、測定、および簡単にスケーリングできるインストルメント化されたアプローチに変換することを目的としています。

DevOpsの実践者と文化がどのように見えるかを理解することで、実践としてのDevOpsの意味がより明確になります。 簡単に言うと、DevOpsは、エラーが発生しやすい人間の相互作用を含む複雑な手動プロセスを、テスト、測定、および簡単にスケーリングできるインストルメント化されたアプローチに変換することを目的としています。 たとえば、開発者がビジネスユーザーがフィードバックを提供できる環境を作成したい場合、開発者は自動化されたプロセスを開始できます。このプロセスでは、開発者はコードの一部を渡すのではなく、DevOpsチームによって作成されたコマンドを発行できます。インフラストラクチャチームへ)。これは、関連するタスクを一貫してテストされた方法で実行し、期待される結果にすばやく到達し、コラボレーションを可能にします。

DevOpsを包括的に定義するには、エンジニア、文化、実践の一種としての意味を理解する必要があります。 これらの観点からDevOpsの意味を探ったので、正常に実装されたときにDevOpsがどのように見えるかを調べることが重要になります。

DevOpsツールキット

ソフトウェア開発者とインフラストラクチャの専門家をサイロ化する企業からコラボレーションを採用する企業への前述の文化的変化に加えて、企業はDevOpsに不可欠な多くの特定のプラクティスとツールを理解する必要があります。 以下は、そのような慣行の中で最も重要な(確かに唯一ではありませんが)3つです。

自動化:効率の向上はDevOpsの中心であり、これは、ソフトウェア開発とインフラストラクチャのメンテナンスにおける比較的低速で面倒な一連のプロセスを自動化することで大幅に達成されます。 Amazonが引用している具体的な例の1つは、比較的小さいが頻繁なソフトウェアアップデートを自動的に送信する方法です。 この方法により、システム管理者の負担が軽減されます。システム管理者は、これらの更新を手動で実行する必要がある場合があります。 Amazonが指摘しているように、この方法には、管理者が発生する可能性のあるバグをより簡単に見つけて修正できるようにすることで、ソフトウェア展開のリスクを軽減するという利点もあります。 自動化はDevOpsの基礎であり、以下で説明する他のDevOpsプラクティスにとって非常に重要です。

継続的インテグレーション:基本的なレベルでは、DevOpsは、エンジニアと、さらにはチーム全体の間の緊密なコラボレーションに関するものです。 継続的インテグレーションとは、エンジニアが中央の場所でコードを共有およびマージする方法を指します。 Amazonが説明するように、「これまで、チームの開発者は長期間孤立して作業し、作業が完了した後でのみ変更をマージしようとする可能性がありました。」 継続的インテグレーションを通じて、エンジニアはより効率的にコラボレーションし、コードの開発と統合に関連するボトルネックをより断片的に回避できます。

継続的デリバリー:継続的デリバリーとは、ソフトウェア製品の変更が行われたときに、ソフトウェア製品の変更を自動的に配信および実装することを指します。 つまり、コードへの変更は、コードがすでに中央の場所に格納されている場合にのみシステム全体に効果的にプッシュできるため、継続的デリバリーは継続的インテグレーションによって可能になります。 自動化は継続的デリバリーにとっても重要です。 実際、前述の小規模で頻繁なシステム更新の送信例は、継続的デリバリーの例と考えることもできます。 継続的デリバリーにより、組織は変更と改善を迅速に実装でき、エンジニアは他の複雑な問題により効率的に時間を集中できます。

適切な人材の採用

もちろん、企業は上記の慣行を成功させるために適切なエンジニアを雇う必要があります。 DevOpsエンジニアは、ソフトウェア開発とシステムインフラストラクチャの専門知識を組み合わせたスキルセットを持っている必要があり、この組み合わせを見つけるのは難しい場合があります。

「生のコードと、アイデア、配信、消費者の間の摩擦を減らすなど、ビジネスが日常的に直面しなければならない課題との間のギャップを埋めることができることが重要です。」

Atlassianの元DevOpsエンジニアでCloudReachのシステムアーキテクトであり、システム管理、情報セキュリティ、ネットワークで15年の経験を持つアンドレア・ヴィラは、DevOpsエンジニアが成功するには幅広い経験と知識が必要であると考えています。

「効果的にするには、今日のDevOpsエンジニアは開発者のバックグラウンドを持ち、システム管理とネットワークの知識に関する幅広い知識を持っている必要があります」とVilla氏は述べています。 「生のコードと、アイデア、配信、消費者の間の摩擦を減らすなど、ビジネスが日常的に直面しなければならない課題との間のギャップを埋めることができることが重要です。」

強力なDevOpsエンジニアとしての資格を得るのは、口で言うほど簡単ではなく、そのようなエンジニアを見つけるのも同様に難しい場合があります。 それでも、DevOpsプラクティスの基礎となるツールを理解することで、組織は適切な人材を見つけてこれらのプラクティスを正常に実装することを中心に、採用プラクティスをより正確に調整できるようになります。

DevOpsが本当に重要な理由

DevOpsプラクティスを使用すると、さまざまなメリットがもたらされます。その中には、効率の向上、セキュリティ、組織のコラボレーションなど、すでに明確に示されているものもあります。 2017年のStateofDevOpsレポートは、この効率の向上を数値化しており、DevOpsプラクティスを採用しているパフォーマンスの高い組織は、計画外の作業とやり直しに費やす時間が21%少なく、新しい作業に費やす時間が44%多いと報告しています。

ただし、より一般的に言えば、DevOpsプラクティスの実装を成功させると、不可欠であり、明らかに魅力的でない領域での効率と実行を改善することで、会社に大きな影響を与える可能性があります。

マッキンゼーとワンダーサインでシニアクラウドアーキテクトとして働いた12年以上のDevOpsの経験を持つエンジニアであるFredrikHaardは、この点をより完全に明確に述べています。

「優れたDevOpsエンジニアは、データセキュリティ、ディザスタリカバリ、軽減、監査など、組織が優先しない可能性のあるすべての領域を擁護し、責任を負う必要があります」とHaard氏は述べています。 「DevOpsで行う選択は、企業に長期的な影響を与える可能性があります。」

マイクロソフトはまた、クラウド+エンタープライズエンジニアリンググループにDevOpsプラクティスを実装することで、これらのプラスの効果を確認しています。 マイクロソフトは、最良の結果を提供するために、「設計から本番環境への展開までの開発のライフサイクル全体を通じて、エンジニアリングと運用が緊密に連携する必要がありました」と説明しています。 マイクロソフトは、DevOps文化に移行し、DevOpsプラクティスを使用することで、以前よりもはるかに迅速に拡張し、高品質のサービスを顧客に提供することができました。

これらの問題を解決し、効率を向上させること自体は素晴らしいことですが、最終的には、すばらしい製品を生産し、より大きな利益と顧客満足を生み出すという、より根本的な目的を達成するための手段です。

DevOpsエンジニアは、企業の内部コマンドチームとして効果的に機能し、企業が適切に機能するために絶対に不可欠であるとはいえ、魅力的ではない、または見えないさまざまな問題の解決を支援します。

これらの問題を解決し、効率を向上させること自体は素晴らしいことですが、最終的には、すばらしい製品を生産し、より大きな利益と顧客満足を生み出すという、より根本的な目的を達成するための手段です。 おそらく、DevOpsが本当に重要である最も重要な理由は、組織がこれらの各メトリックを最大化できるようにすることができるということです。

DevOpsで未来に立ち向かう

2015年、アンドリーセンホロウィッツのパートナーであるスコットワイスは、DevOpsは「単なる方法論以上のものです。 これは、現代のプログラマーにとって必須のスキルセットであり、ますます独自の部門になりつつあります。」

これは、Amazon、Microsoft、Googleなどのさまざまなテクノロジー企業がDevOpsチームを構築し、この分野の専門知識を構築するために多大なリソースを費やしているため、真実であることが証明されています。 ワイスやその他の主要なハイテクプレーヤーは、DevOpsを単なる一時的な流行ではなく、ソフトウェアの将来における重要なコンポーネントと見なしています。

業界がクラウドインフラストラクチャへの依存度を高めるにつれて、DevOpsは引き続き特に重要になります。 2017年のレポートで、Gartner Researchは、クラウドサービス市場が2020年まで年間15%以上成長すると予測しました。この成長をドルで表すと、フォーブスが発表した最近の記事によると、クラウドコンピューティング市場は約2600億ドルから成長するとのことです。 DevOpsは、企業がシステムをクラウドに正常に移行する速度に大きな違いをもたらす可能性があります。 Toptalでは、最初からDevOpsを使用してきました。これは、超成長クラウド企業としての成功に不可欠です。

クラウドサービス市場が急速に成長しているように、DevOpsの重要性も同様です。 エネルギー、ヘルスケア、高等教育のいずれにおいても、企業はDevOpsの専門知識を開発する必要があります。 DevOpsとは何か、どのように実装されているのか、なぜそれが非常に重要なのかを理解することは、この重要なプラクティスを今後使用することを考える上で重要な最初のステップです。