DevOps
■とは
従来の機能別に分離された組織では、このような開発部門とIT部門の部門間統合はほとんどない。しかし、DevOpsでは、開発部門、IT運用部門、あるいは品質保証(QA)部門が協力するプロセスと方法を推進している。CI/CD が自動テストや頻繁な統合などソフトウェア開発そのものに着目するのに対して、DevOps は CI/CD のような技術的な側面に加えて、開発や運用といった組織的・文化的な側面をも内包する。 ■定義
学術的な観点から、CSIROとソフトウェア工学研究所の3人のコンピュータサイエンス研究者であるLen Bass、Ingo Weber、Liming Zhuは、DevOpsの定義を「高い品質を確保しつつ、システムへの変更をコミットしてから通常の運用に移るまでの時間を短縮することを目的とした一連のプラクティス」とすることを提案している3。しかし、2015 年現在、DevOpsという用語は複数の文脈で使われている ■語源
2008年のアジャイルカンファレンスにおいて、アンドリュー・クレイ・シェーファーとパトリック・デボイス が「アジャイル・インフラストラクチャ」について議論した。そして、DevOpsという用語は2009年ベルギーで初めて開催された「DevOpsDays」から普及し、以後、世界中の多くの国々で「DevOpsDays」カンファレンスが開催されている。 --.icon
DevOpsは文化的な移行と(開発、運用、テストの部門間の)協力の概念であることから、単独での「DevOpsツール」というようなものはなく、複数のツールで構成される「DevOpsツールチェーン」となる。DevOpsツールは、主にソフトウェア開発とデリバリー・プロセスの側面を有しており、一般的には1つ以上のカテゴリに分類される。
1. コード : コードの開発とレビュー、バージョン管理ツール、コードのマージ
2. ビルド : 継続的インテグレーションのツール、ビルドステータス
3. テスト : パフォーマンスを決定するためのテストと結果
4. パッケージ : 案件リポジトリ、アプリの展開前ステージング
5. リリース : 変更管理、リリース承認、リリース自動化
6. コンフィギュレーション : インフラストラクチャの設定と管理、インフラストラクチャとしてのコードのツール
7. モニター : アプリの性能監視、エンドユーザーエクスペリエンス
利用可能なツールは多数あるが、会社・組織でDevOpsツールチェーンを利用するには、カテゴリの特定が必要となる。その基本的なツールを特定する方法は既存の文献で探すことができる。DevOpsの実現には構成管理ツールであるDocker(コンテナリゼーション)、Jenkins(継続的インテグレーション )、Puppet(インフラストラクチャとしてのコード)、またはVagrant(仮想化プラットフォーム)などが用いられることもあり、DevOpsツールの検討で頻繁に参照される。DevOpsという語句からこうしたツールがイメージされることもある。
DevOpsの概念はアジャイルソフトウェア開発といった概念とも関連している。
ただし似てはいるが、方法は異なる。
アジャイルソフトウェア開発は考え方と学びを変えることが組織改革につながるという手法であり、DevOpsは組織改革を強化することで目標を達成する手法である。
小さな変更を頻繁にリリースすることの多いアジャイルソフトウェア開発においては、開発担当者と運用担当者の連携を密にする必要があり、こうした開発手法の普及とともにDevOpsの考え方が広まることとなった。
アジャイルソフトウェア開発が拡がるにつれて、リリース回数が増加する傾向のなかでDevOpsが開発された。
DevOpsの目標の一つは、より信頼性の高いアプリがより早く頻繁にリリースされる環境を作ることである。
この目標を達成するために、リリース管理者は継続的なデリバリー方法を取りながら、アプリケーションリリースの自動化や継続的な統合ツールなどを利用し始めている。
DevOpsに関わる多くの考え方や関係者は、エンタープライズシステムの管理とアジャイルソフトウェア開発の潮流のなかから生まれた。 DevOpsと継続的デリバリーはともにアジャイルメソッドとリーン生産方式を背景としているため、間違われやすい。似てはいるが、異なる概念である
DevOpsはより広い範囲を対象にしており、主なポイントは:
1. 組織改革:ソフトウェアデリバリーに関わるさまざまなチーム(開発、IT運用、品質保証・QA、管理など)の協力を育む
2. 自動化:ソフトウェアデリバリー・プロセスを自動化する
継続的デリバリーはデリバリー・プロセスを自動化することを目的にしているだけで、主なポイントは:
1. 異なるプロセスの組み合わせ
2. プロセスの迅速かつ頻繁な実行
DevOpsと継続的デリバリーは共通の目標を達成するために、一緒に使用されることもある。社内に小さくて速い変化がよく伝達され、協力体制がある場合、リスクを低減しながら、迅速な市場投入を支援し、エンドユーザーの価値にフォーカスすることができる。