こんにちは。ディベロップメントテクノロジーセンターの青山です。
ここ最近、私はDevOps/アジャイルの社内啓蒙、現場への適用、お客様への提案などに携わっています。活動を進めている中で、アジャイルは知っている人が多いのですが、DevOpsというキーワードは知っているが、具体的にはどういうものか知らない方が多いことに気づきました。
そのような方々に向けて、何回かに分けてDevOpsについて紹介していきたいと思います。
今回はDevOpsが必要な時代背景およびDevOpsの概要・普及状況について述べます。
なおDevOpsですが厳密な定義は存在せず、各人・各組織がバラバラに解釈しており様々な定義が存在します。当ブログで定義している内容も他の資料と細かい部分では差違があるのでご注意ください。(理由は後述します)
DevOpsが何かを述べる前に、DevOpsが必要となってきた時代背景について説明します。
現在は先行きが不透明で、将来の予測が困難なVUCA時代と言われています。
- Volatility(変動性:変動が大きい)
- Uncertainty(不確実性:不確実な事柄が多い)
- Complexity(複雑性:様々な要素が複雑に絡んでいる)
- Ambiguity(曖昧性:絶対的な方法がない曖昧な状態)
VUCA時代においてはビジネス/品質のアプローチ、開発サイクルが変化します。
ビジネスのアプローチにおいては、従来は市場を入念に調査し計画通りにリリースすることが重要でしたが、現在は自分たちの「仮説」を実際に市場に問うアジリティ(スピード/頻度)を極力上げてフィードバックを得ることが重要です。
また、品質へのアプローチも変化し、従来は完全な品質を保証してからリリースでしたが、現在はある程度の品質が保証できればリリースをするなど、品質だけではなくリリースの速度/頻度というものが優先されるようになってきています。
このようにVUCA時代では以下の開発サイクルを「迅速に」「小さく」「繰り返していく」ことが重要です。
![](/blog/entry/18922/main/00/teaserItems1/07/binaryNodeName/DevOpssaikuru-1.png)
その中で、DevOpsは特に「④テスト/⑤リリース/⑥運用」に重点を当てた迅速なリリースを繰り返し行うための取り組みです。
あらためてDevOpsとは何か?ですが、ソフトウェアやサービスの迅速なリリースを行うための「プラクティス」「プロセス」「組織としての取り組み(文化)」の総称です。
DevOpsの起源は、2009年開催「Velocity 2009」にて発表された「10 deploys per day : Dev and Ops cooperation at Flickr」と言われています。
DevOpsという言葉は出てこないのですが、こちらの発表で「自動化」や「開発部門と運用部門の協業」により1日10回以上のリリースを実現できていることが発表されました。
それまで「新しい機能のリリース」を役割とする「開発(Development) 」と「システムの安定稼動」を役割とする「運用(Operations) 」はミッションが相容れないため協力するのは難しいと考えられていましたが、新たな「プロセス」「文化」によりビジネスのアジリティ向上が実現できることが分かり、大きな反響を呼びました。
その後、このような取り組みに「DevOps」という名前が付けられ、全世界に広まっていきましたが、その際に明確な定義が無いまま広まっていきました。今時点においても明確な定義がないままです。
ただ「組織としての取り組み(文化)」については、「CALMS」と呼ばれるDevOpsのコンセプト・姿勢を表したものが比較的有名なため紹介します。「CALMS」は以下の5つのキーワードの頭文字を取ったものです。
- Culture(文化:様々なチームが共通の目標を共有し、計画を立てるなど、コラボレーションを促進していくことにより目標を達成)
- Automation(自動化:自動化をすることにより反復作業の期間・コストを最小化する)
- Lean(リーン:プロセスを見直し、無理・無駄を省きプロセスを最適化する)
- Measurement(計測:人・プロセス・パフォーマンスの全てを計測し、フィードバックのインプットとする)
- Sharing(共有:システム状況/プロジェクト状況(チケット管理)を共有し、コラボレーションの促進に活用する)
私自身もDevOpsの活動を進める際には「CALMS」の考え方を念頭に置きながら進めています。
なお、当初は「自動化」「開発と運用の協業」にフォーカスしていましたが、DevOpsが広まっていく中で現在ではより拡張された概念も増えてきています。
- BizDevOps(開発・運用が連携するDevOpsにビジネス部門も加える)
- DevSecOps(DevOpsにセキュリティの観点を組み込む)
- NoOps(より自動化・効率化を推し進め、より一層の運用の負荷軽減を目指す)
では、DevOpsの普及状況はどうでしょうか?
昨年IPAが発行した「DX白書2021」では「デザイン指向」「アジャイル開発」と並んで「DevOps」が取り上げられています。しかし同書 14ページ、図表14-2 「開発手法の活用状況」を見ると、他の開発手法と比べて活用率および理解が低い結果となっています。
「全社的に活用している・事業部で活用している」の合計比率が「デザイン指向」14.7%「アジャイル開発」19.3%に対して「DevOps」は10.9%となっています。
また「この手法・技術を知らない」の比率が「デザイン指向」33.3%「アジャイル開発」31.5%に対して「DevOps」は43.8%となっています。
実際はDevOpsの「プラクティス」であるリリースの自動化(CI/CD)などは実践されているお客様は多くいらっしゃるので、個人的にはこの結果は低すぎるように感じます。
これまで述べてきたようにDevOps自体が定義が曖昧なことがあり、何をもってしてDevOpsを実践しているのか判断が難しかったか、DevOpsの文化レベルまでに取り組みを進められている事例は確かに少ないので、それが原因なのかなと思います。
ただVUCA時代における重要なアプローチとして取り上げられていますので、これから普及していくことが見込まれます。
今回はDevOpsが必要な時代背景およびDevOpsの概要・普及状況について述べました。
DevOpsはソフトウェアやサービスの迅速なリリースを行うための「プラクティス」「プロセス」「組織としての取り組み(文化)」の総称です。
ただ、明確な定義がないことや、抽象的な考え方の部分がありますので、なかなかイメージ湧きにくい・理解しにくいです。
私自身は、DevOpsは頭だけで理解するのではなく実践を通して理解していくことが重要だと常に思っていますので、皆さんも実践して理解を深めていってみてください。
次回はDevOpsを実践していくための具体的な「プラクティス」やDevOpsの実行環境について紹介します。