fbpx

知っておくべきDevOpsの4原則 #GitLab #DevOps #ソフトウェアのテスト #自動化 #agile

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「GitLab」社のブログで2022年2月11日に公開された「4 Must-know DevOps principles」の日本語翻訳です。

知っておくべきDevOpsの4原則

DevOpsは人気のソフトウェア開発手法ですが、セキュリティ(DevSecOps)やビジネス (BizDevOps)など他の領域を含めて考えると、初心者の方には少し分かりにくいかもしれません。 DevOpsという方法論の中心には、以下の重要な原則が4つあり、いずれも組織のソフトウェア開発プロセスの改善に非常に役立ちます。

  1. ソフトウェア開発ライフサイクルの自動化
  2. 共同作業とコミュニケーション
  3. 継続的な改善と無駄の最小化
  4. ユーザーニーズの重視とフィードバックループの最短化

DevOpsの主要な原則についての考察

今から約15年前に、開発と運用をシームレスに連携させるという構想が生まれました。「DevOps」という言葉は2009年、この手法の第一人者の一人とされるPatrick Deboisによって生み出されました。DevOpsはアジャイルソフトウェア開発の原則を多く含んでいますが、特に開発と運用のサイロを打破することに重点を置いています。DevOpsはそこから浸透し続け、レガシーシステムを持つあらゆる規模の企業で採用されていきました。

DevOpsは組織固有のニーズや環境に適応し、ビジネスにとって最も重要なものに適応することができます。そのため、様々なDevOpsの取り組みを見つけるかもしれませんが、その核となる必ず知っておくべき原則は以下の4つです。

ソフトウェア開発ライフサイクルの自動化

すべてのDevOpsチームが目指すべきものは自動化です。DevOpsが登場する前、ソフトウェア開発はプロセスの各段階で人の関与(および物理的な引き継ぎ)を必要とする非常に手のかかる作業でした。このように人の作業が必要な以上、企業は年に1回新しいコードを更新したりリリースしたりするのが精一杯で、多くは1年半から2年というリリース周期になっていました。

ところが今日、優秀なDevOpsチームは、1日に何度もコードをリリースしています。それは主に自動化のおかげなのです。

DevOpsにおける自動化の恩恵と重要性を理解するために、ソフトウェアのテストについて考えてみましょう。このステップはしばしば見落とされ、評価されませんが、リリース遅延の原因となることがあります。ソフトウェアのテストが重要であることに疑問の余地はありません。テストなしでは、企業は不完全な、あるいは実際に安全でないコードをリリースする危険性があります。しかし、テストはおそらくDevOpsのすべてのステップの中で最も人が介入するところであり、テストケースを書き、無数のテストを実行し、その結果を分析し、開発者とともに修正を行う必要があります。チームが、コードを時間通りにリリースすることができない原因として「テスト」が第一に挙げられる理由です。

これを経て、「基本的なソフトウェアのテストは、コードを書くのと同時に行うことができるのではないか」という考えが生まれました。テストの自動化によりプロセス全体は劇的にスピードアップされ、ソフトウェアのテスト担当者はコード品質に今まで以上の時間を割くことができます。

テストの自動化は、DevOpsにおいて自動化が成功した最も顕著な例ですが、その成功はテストのみに留まりません。継続的インテグレーションは既存のコードから新しいコードに置き換えるプロセスを自動化し、継続的デプロイは、リリースの自動化を支援します。また、Infrastructure as Codeでは、開発者環境のプロビジョニングプロセスを容易に自動化できます。

共同作業とコミュニケーション

優れたDevOpsチームは自動化を採用していますが、さらに一流のDevOpsチームは共同作業とコミュニケーションを重視しています。DevOpsにはdev(開発)とops(運用)(そしてセキュリティ、テスト、ステークホルダー等)を結びつけるという基本的な考え方があるため、チームは共同作業を行うことができます。そして、それは明確で定期的なコミュニケーションがなければ実現しません。

これはDevOpsの原則としては一見単純なことのように見えますが、やはり悪魔は細部に宿るものです。開発者はコードを書いてさっさとリリースしたいと考えますが、一方運用担当者はツール、コンプライアンス、クラウドに注目し、セキュリティチームはコードの安全性を確保したいと考えるものです。開発部門、運用部門、セキュリティ部門は、同じ優先順位を持つわけではなく、同じ「言語」を話すわけでもなく、全く異なる視点から問題解決に取り組む必要があります。その顕著な例として、コミュニケーションや共同作業における溝の深さから開発部門とセキュリティ部門がうまくいかないケースが挙げられます。

チームをまとめるには努力が必要で、しばしば既成概念にとらわれない発想が必要です。DevOpsを成功させるためにチームはコミュニケーションをとる必要がありますが、「鶏が先か、卵が先か」と言うように、DevOpsの導入自体がコミュニケーションを良くし、そして開発者の幸せにつながるということが、Gitab社の2021 Global DevSecOps Surveyの調査結果で明らかになっています。

継続的な改善と無駄の最小化

リーン、アジャイルなどの初期のソフトウェア開発方法論に大きく傾倒しているDevOpsは、無駄の削減と継続的な改善にも重きを置いています。テストなどの繰り返し作業を自動化して時間の無駄を減らしたり、新しいコードをリリースするのに必要なステップを減らしたりと、うまく機能しているDevOpsチームはパフォーマンス指標を測定し、改善が必要な領域を特定し続けています。リリース時間の継続的な改善平均復旧時間の短縮、バグの発見数など、他にもさまざまな指標に取り組むことをチームに期待できます。

ユーザーニーズの重視とフィードバックループの最短化

最後に知っておくべきDevOpsの原則は、このプロセスのすべてのステップに実際のユーザーを参加させることの重要性です。自動化、コミュニケーションと共同作業の改善、継続的な改善を通じてDevOpsチームは「ユーザーが真に何を望んでいるのか」、そして「どのように提供するか」に焦点を当てることができます。ユーザーマインドに入り込む方法を見つけるのがかなり難しいことは間違いなく、達成するためのプロセスを実行するのに苦労することもあるでしょう。

もう一つ難しいのは、一度集めたユーザーからのフィードバックを、時間を無駄にせず迅速に伝達しなければならないことです。そのため、フィードバックループは短くしておくことが重要であり、将来的にさらに短くしていくよう努める必要があるのです。

DevOpsモデルの実践結果

チームがDevOpsを正しく実践するとどうなるのでしょうか。2021年の調査では、60%の開発者が、DevOpsのおかげでコードのリリースが2倍以上早くなったと回答しています。DevOpsモデルのその他の利点には、コード品質の向上、市場投入までの時間の短縮、計画の改善などがあります。さらに、DevOpsの実践が成功すれば、開発者の幸福度が高まるという調査結果もあります。幸福な開発者ほど生産性が高いという科学的データもあります。

これからのDevOpsは?

世界的なパンデミックもあり、DevOpsの導入と成功は、非常に大きな「ジャンプスタート」を経験しました。調査結果によると、チームは「どうやって一緒に仕事をするか」という文化的な問題を乗り越え、「どうやって正しいテクノロジーを導入するか」というマインドセットへと成熟していったようです。Kubernetes、DevOpsプラットフォーム、AI/機械学習などの先端技術の活用は、今後のDevOpsのあり方を示唆するものでもあります。コードレビューを始めとして、プロセスを効率化するDevOpsプラットフォームの継続的な採用など、自動化のさらなる進展、AI/機械学習を活用したよりスマートな意思決定が期待できることは間違いないでしょう。

New call-to-action

New call-to-action

New call-to-action

新規CTA