DevOpsは、アプリケーション開発の高速化と品質向上を促し、新しいソフトウェア機能や製品、あるいはその修正版の迅速なリリースを推進するフィロソフィーとフレームワークであり、今も進化を続けています。
DevOpsを実践することで、アプリケーション開発チーム(Dev)とIT運用チーム(Ops)の担当者間の継続的なコミュニケーション、コラボレーション、連携、可視化、透明性の確保が円滑になります。
このような「Dev」と「Ops」の緊密な関係は、ソフトウェアの初期計画からコーディング、ビルド、テスト、リリースにとどまらず、デプロイメント、運用、継続的な監視に至るまで、DevOpsライフサイクルのすべての段階で維持されます。この関係によって、さらなる改善、開発、テスト、デプロイメントに役立つ、お客様からの継続的なフィードバック ループが活性化されます。このような取り組みの成果の1つとして、必要な機能の変更や追加を継続的に短期間でリリースできることが挙げられます。
DevOpsの目標を4つのカテゴリ(Culture、Automation、Measurement、Sharing(CAMS))に分類する人もいますが、これらの分野ではDevOpsツールを活用できます。これらのツールにより、開発と運用のワークフローがより合理化され、コラボレーションしやすくなります。また、統合、開発、テスト、デプロイメント、監視に関連していて、これまで時間がかかっていた手作業や静的なタスクが自動化されます。
DevOpsの中核的な価値は、開発チームとIT運用チームの間のコミュニケーションやコラボレーションの障壁を取り除く取り組みだけではなく、顧客満足度と価値の迅速な提供も含まれます。DevOpsは、ビジネスのイノベーションを推進し、プロセスの継続的な改善を推進するようにも設計されています。
DevOpsを実践することで、組織の最終的なお客様に優れたビジネス バリューをより迅速、より安全に提供できるようになります。そのバリューは、製品のリリース、機能、またはアップデートの頻度を高めるという形で提供されることがあります。そのためには、製品のリリースや新機能が、適切なレベルの品質とセキュリティを維持しながら、どれだけ短期間でお客様に提供されるかが関係してきます。また、問題やバグをどれだけ迅速に特定し、どれだけ早く解決して再リリースするかが重視されることもあります。
基盤となるインフラも、ソフトウェアが最初に開発され、テスト、本番環境へのリリースが行われる際に、ソフトウェアのシームレスなパフォーマンス、可用性、信頼性を実現し、DevOpsをサポートしています。
DevOpsには、開発や製品リリースを高速化、改善するための一般的な手法がいくつかあります。それらは、ソフトウェア開発の方法論と実践という形をとっています。特に人気があるのは、スクラム、カンバン、アジャイルです。
DevOpsの手法を実践している人は、多くの場合、DevOpsに適したツールをDevOpsの「ツールチェーン」に取り入れて使用しています。これらのツールは、ソフトウェア提供ワークフロー(「パイプライン」)のさまざまな段階をさらに合理化、短縮、自動化することを目標としたものです。また、このようなツールの多くは、開発チームと運用チームの自動化、コラボレーション、統合というDevOpsの基本原則も促進しています。DevOpsライフサイクルのさまざまな段階で使用されるツールの例を次に示します。
DevOpsの手法には、継続的な改善と自動化という考え方が反映されています。多くの手法では、1つまたは複数の開発サイクル フェーズに焦点を当てています。これらの手法としては、次のものがあります。
DevOpsの支持者はビジネスや技術の面でさまざまなのメリットがあると述べており、その多くはお客様の満足度を高めるものです。DevOpsのメリットには次のようなものがあります。
ソフトウェアの開発とデプロイメントを合理化するためのDevOps手法の多くは、アジャイル ソフトウェア開発とリーン プログラミングの初期の原則に基づいています。しかし、DevOpsはもともと、開発者と運用チームの活動を調和させるための草の根的な動きから進化したものです。
2000年代初頭には、GoogleやFlickrなど人気のあるWebサイトへのアクセス数が急増し、その可用性を維持する必要がありました。そのため、ソフトウェア信頼性エンジニア(SRE)が採用されるようになりました。SREとは、コードを本番環境にリリースした後もサイトの稼働がを維持されるように、開発者と緊密に連携する運用担当者です。
2009年に、FlickrのエンジニアであるJohn Allspaw氏とPaul Hammond氏がカンファレンスでDevOpsに近い独自の手法を発表しました。そのプレゼンテーションは「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日に10回以上のデプロイ:Flickrにおける開発と運用の協力)」というタイトルでした。同年、Patrick Debois氏がベルギーで最初の「DevOps Day」を開催しました。DevOps Dayが世界中で開催されるようになったことで、#DevOpsのハッシュタグも採用され、勢いを増しました。
ここ数年の間に、DevOpsの目標を推進するために、業界やオープンソースのツールとフレームワークが開発され、提案されました。
NetAppでは、DevOpsを活用したビジネス成果の向上を後押ししています。運用チームが少ない技術作業でインフラの自動化を実現したり、開発者が軋轢を減らしながら信頼性と予測性の高い環境を構築したりできるよう支援しています。NetAppのテクノロジを活用すれば、お客様は、組織が求めるサービスや機能を自信を持って提供し、オンプレミスとクラウド環境の両方で開発者の生産性を最大限に高めることに貢献できます。
NetAppのソリューションなら、開発者、テスト チーム、QAチーム、運用チームはインフラのリソース(永続的ストレージ ボリュームなど)をコードとして利用できます。すべて、DevOpsパイプラインで普段使用しているツール内から利用できます。たとえば、Puppet、Ansible、Docker、Kubernetes、OpenShiftなどのツールから、NetAppストレージAPIやIAC統合を活用できます。
NetAppのソリューションがもたらすメリットは、開発者がストレージをコードとして簡単に利用できるだけではありません。NetAppのテクノロジを活用すれば、運用チームも開発者やテスト担当者にリソースを確実にプロビジョニングし、提供できます。開発者やテスト担当者は、Snapshotやクローンなどのストレージ機能を自身ですばやくプロビジョニングすることで、コーディングやテストのサイクルを短縮できます。これらの機能によって、リアルタイムの本番環境のデータやコード セットのコピーをわずか数秒または数分でコードとしてプロビジョニングできるため、開発とQAのワークフローがスピードアップします。NetAppがDevOps向けに開発されている理由をご説明します。
NetAppはコミュニティに注力しており、現在は、thePubとして実を結んでいます。この開発者コミュニティでは、コラボレーションの促進、ヒントやアドバイスの共有、最新のDevOps手法やプロトコルに関するアイデアの議論が行われています。
DevOpsの文化は、分野の垣根を超えた少人数のチームに重点を置いています。これらのチームは、独立して作業を進めることができ、ソフトウェア製品で提供するユーザ エクスペリエンスに対して共同で責任を負っています。