#90DaysOfDevOps - DevOps & アジャイル - 4日目
DevOps & アジャイル
DevOpsとアジャイルの違いをご存知でしょうか?これらは独立した概念として形成されていました。しかし、今ではこの2つの用語は融合しつつある。
この記事では、アジャイルとDevOpsの決定的な違いを検証し、なぜこの2つが密接に結びついているのかを探っていきます。
私がこの分野を学ぶ上でよく目にする角度、それはDevOps vs アジャイルで、両者は同じような目標とプロセスを持っているにもかかわらず、もう少し理解することから始めると良いと思います。このセクションでは、このことを希望的にまとめていこうと思います。
まず、定義から始めましょう。
アジャイル開発
アジャイルは、製品の1つの大きなインタラクションをリリースするのではなく、小さな成果をより早く提供することに焦点を当てたアプローチであり、ソフトウェアはイテレーションで開発される。チームは、毎週または毎月、インクリメンタルアップデートで新バージョンをリリースします。アジャイルの最終目標は、エンドユーザーに最適なエクスペリエンスを提供することです。
DevOps
ここ数日、DevOpsの最終目標を説明するいくつかの異なる方法で、これを取り上げてきました。DevOpsは通常、ソフトウェア開発者と運用スペシャリストの協力に基づくソフトウェア開発とデリバリープラクティスを説明するものです。DevOpsの主な利点は、簡素化された開発プロセスを提供し、ミスコミュニケーションを最小限に抑えることです。
アジャイルとDevOpsの違いとは
その違いは、主に先入観です。アジャイルとDevOpsは、それぞれ異なる関心事を持っていますが、互いに助け合っているのです。アジャイルは短いイテレーションを求めますが、それはDevOpsがもたらす自動化によってのみ可能になります。アジャイルは、顧客が特定のバージョンを試し、すぐにフィードバックを得られることを望んでいるが、これはDevOpsが新しい環境の作成を容易にする場合にのみ可能です。
参加者が異なる
アジャイルはエンドユーザーと開発者のコミュニケーションの最適化に焦点を当て、DevOpsは開発者と運用チームメンバーを対象としています。アジャイルは顧客に対して外向きであるのに対し、DevOpsは社内向けのプラクティスの集合体であるとも言えます。
チーム
アジャイルは通常、ソフトウェア開発者とプロジェクトマネージャに適用されます。DevOpsエンジニアのコンピテンシーは、製品サイクルの全段階に関わり、アジャイルチームの一員であることから、開発、QA(品質保証)、運用が交差するところにあります。
応用フレームワーク
アジャイルには、柔軟性と透明性を実現するために、多くのマネジメントフレームワークがあります。スクラム>カンバン>リーン>エクストリーム>クリスタル>ダイナミック>フィーチャードリブン。DevOpsは、コラボレーションによる開発アプローチに焦点を当てていますが、特定の方法論を提供しているわけではありません。しかし、DevOpsは、Infrastructure as Code、Architecture as Code、モニタリング、セルフヒーリング、エンドツーエンドのテスト自動化などのプラクティスを推進している。しかし、それ自体はフレームワークではなく、むしろプラクティスです。
フィードバック
アジャイルではエンドユーザーが主なフィードバック元ですが、DevOpsではステークホルダーやチーム自身からのフィードバックがより優先されます。
対象領域
アジャイルは、デプロイメントやメンテナンスよりも、ソフトウェア開発に重点を置いています。DevOpsはソフトウェア開発にも焦点を当てていますが、その価値観やツールはデプロイメントやモニタリング、高可用性、セキュリティ、データ保護などのリリース後の段階も対象としています。
ドキュメンテーション
アジャイルは、文書化や監視よりも、柔軟性や目の前の作業を優先します。一方、DevOpsでは、プロジェクトのドキュメンテーションをプロジェクトの重要な構成要素の1つとみなしています。
リスク
アジャイルのリスクは、その手法の柔軟性に由来する。アジャイルプロジェクトは、優先順位と要件が絶えず変化するため、予測や評価が困難です。
DevOpsのリスクは、この用語の誤解と適切なツールの欠如に由来する。一部の人々は、DevOpsをデプロイと継続的統合のためのソフトウェアの集合体であり、開発プロセスの根本的な構造を変更することはできないと見ています。
使用ツール
アジャイルツールは、管理コミュニケーションコラボレーション、メトリクス、フィードバック処理に重点を置いています。最も人気のあるアジャイルツールには、JIRA、Trello、Slack、Zoom、SurveyMonkeyなどがあります。
DevOpsは、Jenkins、GitHub Actions、BitBucketなど、チームコミュニケーション、ソフトウェア開発、デプロイメント、統合のためのツールを使用します。アジャイルとDevOpsは、フォーカスやスコープが若干異なるものの、重要な価値はほぼ同じであるため、この2つを組み合わせることが可能です。
全部まとめて...良いアイデアかどうか?議論する?
アジャイルとDevOpsの組み合わせは、あなたが得られる次のようなメリットをもたらします。
- 柔軟なマネジメントと強力なテクノロジー。
- アジャイルプラクティスは、DevOpsチームが優先順位をより効率的に伝えるのに役立ちます。
- DevOpsプラクティスのために支払わなければならない自動化コストは、迅速かつ頻繁にデプロイするというアジャイルの要件によって正当化される。
- 強化につながる:アジャイルプラクティスを採用したチームは、コラボレーションを改善し、チームのモチベーションを高め、従業員の離職率を低下させることができます。
- その結果、より良い製品品質を得ることができる。
アジャイルでは、以前の製品開発段階まで戻ってエラーを修正し、技術的負債の蓄積を防ぐことができます。アジャイルとDevOpsを同時に採用するには、7つのステップを踏むだけです。
- 開発チームと運用チームを統合する
- ビルドと実行のチームを作り、開発と運用に関するすべての問題をDevOpsチーム全体で議論する
- スプリントへのアプローチを変更し、開発タスクと同じ価値を持つDevOpsタスクを提供するために、優先順位の評価を割り当てる。開発チームと運用チームが、他のチームのワークフローや考えられる問題について意見交換することを奨励する
- QAをすべての開発ステージに含める
- 適切なツールを選択する
- できることはすべて自動化する
- 具体的な数値化された成果物を用いて、測定と管理を行う
いかがでしょうか?異なる見解を持っていますか?開発者、オペレーション、QA、あるいは、アジャイルとDevOpsをよりよく理解している人からのコメントやフィードバックが欲しいのですが。
リソース
- DevOps for Developers – Day in the Life: DevOps Engineer in 2021
- 3 Things I wish I knew as a DevOps Engineer
- How to become a DevOps Engineer feat. Shawn Powers
ここまで来れば、ここが自分の望むところかどうかが分かるはずです。5日目でお会いしましょう。