2022年5月2日月曜日

DevOpsは、AIOpsに置き換わる可能性がありそうです。

https://www.infoq.com/jp/articles/ai-devops-takeover/

シェアしました。

AIはDevOpsに取って代わるのか?

キーポイント

  • Most companies work with some form of hybrid or cloud infrastructure, but managing this has become almost impossible without some form of AI help
  • For teams that are running several different clouds, AI interfaces have become almost a necessity as they evolve and scale their DevOps program.
  • It’s very apparent that AI is already having a huge impact on speed and quality at which software is being shipped.
  • The AI revolution has had the side-effect of making DevOps teams busier than ever, and with development cycles much faster as well. 
  • Ultimately, development teams still need strategic leadership, and although AIs are now highly capable in many areas, they still lack the ability to respond to user demand in truly creative ways.

原文(投稿日:2021/10/08)へのリンク

開発者の多くにとって、DevOpsの次に何が来るかを予測することは、ある種の気晴らしになっています。この10年間、私たちは、私たちの業界が急速に変化するのを目の当たりにしてきました。その間には、プログラマの役割も根本から変わってきています。

事実として、特に(あえて言えば)特定の年代の開発者の間では、"従来的な"開発者の役割というものは、もはや存在しないように思えます。現在、私たちの多くは、従来のソフトウエア開発のライフサイクル — ソフトウエアを企画し、開発し、リリースする — を離れて、開発者と運用担当者が席を共にし、その境も徐々にと不明確になるという、多専門的(multi-disciplinary)なチームで仕事をしています。

このモデルはDevOpsとして広く知られていますが、それはごく最近のことです。そして、そのわずか数年(あるいは数か月?)後には、DevOps自体にも変化と適応が始まりました。今、私たちは、頭字語の海(比較的新しいDevSecOpsを含む)を漂っています。そのそれぞれが、働き方がわずかに違ったり、将来に対する見解がわずかに違ったりしているのです。

最新の頭字語のひとつがAIOpsです。このビジョンでは、AIツールが開発者の役割をゆっくりと — DevOpsがかって行ったように — 置き換えていき、最終的にはDevOpsに完全に取って代わります。

この予測の正しさを評価するのは難しいのですが、今回の記事では、あえてそれに挑戦してみたいと思います。この記事では、AIが開発プロセスにもたらすものは何かを確認し、それが人間である開発者の作業を本当に引き継ぐことができるのかを評価した上で、数十年後のDevOpsがどのようなものになっているのかを見ていきます。

オートメーションのもたらすもの

まず最初に、DevOpsチームにAIツールが急速に普及した理由を理解するためには、それが何を実現してくれるのかを理解することが重要です。これは基本的に、2つの部分に分解することができます。

  • ひとつは、業務で手一杯である開発者にとって、AIツールの使用は、ますます複雑化するシステムを管理するための"単なる"手段である、というものです。 
  • もうひとつは、AIツールが、コード開発およびデプロイメント手法の自動化を幅広く提供することにより、ソフトウェアの開発方法をもっと根本的な部分で変革する、というものです。

前者 — AIツールは私たちの生活を楽にしてくれる — に関しては、過去10年間のクラウドインフラストラクチャモデルの急増を見て、そこにAIが必要な理由を確認すれば十分でしょう。今日では、ほとんどの企業が何らかの形でハイブリッド/クラウドインフラストラクチャを使用しており、AIによる何らかの支援がなければ、これを管理することはほぼ不可能になってきています。事実として、ハイブリッドおよびマルチクラウドインフラストラクチャ、コンテナなどのマイクロサービスアーキテクチャ、ハイパースケールアプリケーションといったものが、かつてないほど複雑な企業IT環境を形成しているのです。 

そして、ツールの採用には第2の面 — GitHubのAI Coding AssistantやMicrosoftのDeepDevといったAIツールは、単に生活を楽にするだけではなく、コードの開発や配布に関する新たな可能性を開いてくれる、という事実があります。例えば、AIシステムがユーザ要件を評価可能な速度をもってすれば、個々のユーザに対する動作修正、デフォルトのブラウザ動作の指定 特定の種類のマルウェアに対する脆弱性の低減といった処理を、ソフトウェアの運用中に実施することが可能になります。 

DevOps、AIOps、そしてNoOps

その有用性の結果として、AIツールは、特別に頑固なチームを除くすべてのDevOpsチームによって、広範かつ急速に採用されています。実際に、いくつかの異なるクラウドを運用中の(つまり、ほとんどすべての)チームにとって、AIインターフェースは、自分たちのDevOpsプログラムが進化し拡張する上で、ほぼ必須のものになっています。

この移行による最も明確かつ具体的な成果は、開発者が自身の時間を費やして検討している、データやシステムにあります。例えば、かつて運用チームの役割の大きな部分を占めていたのは、ソフトウエア上のあらゆる有益なデータを含み、スタッフメンバ全員が利用するダッシュボードを構築し、メンテナンスする作業でしたが、 

今日では、この中心的なタスクはほぼ過去のものになっています。ソフトウェアが大規模で複雑なものになったことにより、ソフトウェアの特定部分に関連する全情報をひとつのダッシュボードに表示するという考え方が、非現実的なものになり始めたのです。代わりに現在では、大半のDevOpsチームが運用中のソフトウエアを"自動的に"監視するAIツールを運用しており、データが表示されるのは問題の所在が明確になった場合のみになっています。

これは開発者や運用担当者の業務方法の大きな変革ですから、新たな頭字語 — AIOps — が与えられても不自然ではありません。実際に、AIツールに対するこのような依存性は、今や私たちがNoOpsの時代に入りつつあることを意味しているという、さらに進んだ主張も一部にはあります。ただし、どちらの役割がなくなるのか、すなわちNoOpsのNoとは"開発者不要"なのか、あるいは"運用担当者不要"の意味なのか、という点で、意見が分かれているのもまた事実です。

AI革命

ソフトウエア開発の思想的背景に関するこれらの考察は、どれも少し抽象的に思われるかも知れません。しかしながら、数字を見れば、AIがすでにソフトウェアをリリースする速度(品質ではないとしても)に大きな影響を与えていることがはっきり分かります。

4,000人以上の開発者を対象にしたGitLabの最新調査でも、この事実を裏付ける数字が示されています。この調査によると、一部の企業では、新たなコードのリリースが以前に比べて最大10倍速くなっています。さらに、リリース前のコードのテストとレビューにおいては、75パーセントがAIとMLを使用しており、わずか1年前の40パーセント強から大幅に増加しています。

イメージ引用元

これは開発者、少なくとも大量のコードを短期間に作成したい開発者には朗報です。残念ながらこれは、優れたコードを作成することと必ずしも同義ではありません。テストの不十分なコードが多くの企業にとって、すぐさま脆弱性の大きな要因になるということは、ランサムウェア攻撃の傾向からも明らかなのですが、AIが主体となったテストシステムの登場は、この削減にはほとんど役に立たないのです。

そうではあっても、進む方向は誰の目にも明らかです。おそらく数年以内には、DevOpsチームのほとんどがAIツールに依存するようになり、ソフトウェアはそれまでの数倍の速さでリリースされるようになるでしょう。そしてそれは私たちを、最初に持った疑問へと立ち戻らせるのです — AIツールがDevOps作業の多くをするようになった今、まだ人間のDevOpsスタッフは必要なのでしょうか?

答はイエスでもあり、ノーでもあります。理由を説明しましょう。

課題

最も表面的なレベルであれば、極めて簡単なテスト結果を使ってこの疑問に答えることができます。AIツールが開発セクタ全般に適用されたことによって開発者は、自身の作業負荷を軽減することができたでしょうか?この質問を一般的な開発者に問えば、相手は一笑に付すことでしょう。答はノーです。

その理由は、DevOpsチームがソフトウェアの日々の管理に費やす時間が少なくなれば、その作業に使っていた時間が、より価値の高いことが確実なタスク — 戦略的計画、メタ分析 — に使用されて、開発目標と経営目標とのさらなる一致を目指すことになるからです。事実として、多くの人々がDevOpsを無用にするのではないかと考えているAI"革命"は、チームをより大規模に、より多忙にしているように見えます。これは、開発サイクルが以前より速くなったことの副作用に他なりません。 

業界の経営陣は、これを十分に理解しています。先日のZDNetのインタビューの中で、iTech AGのエグゼクティブバイスプレジデントであるMatthew Tiani氏は、今日のDevOpsについて、"他のものがそうであるように、ソースコード管理やCI/CD、オーケストレーションといった強力な技術的ツールセットによって強化されている"ことを指摘した上で、 

DevOps実践の成功例において、"アジャイルやスクラムのような相性の良い開発方法論、開発者と運用スタッフとのコラボレーションを促進し奨励する組織的コミットメント"が活用されている、という点にも言及しています。

共生を学ぶ

現実問題として、これらの要因や傾向は、DevOpsが技術的な課題よりも、ビジネス上の目標をより重視するようになっていることを意味しています。これは確かに変化ですが、開発するソフトウェアの品質という面から考えれば、必ずしもネガティブなものではありません。間違いないのは、事実として、AIツールがチームに対して、その人的リソースを最も望ましい場所 — クリエイティブで、総体的で、戦略的なタスク — に集中させることを可能にする能力を提供している、ということです。

この証拠は探すまでもありません。Vue JSを例に取ってみましょう。Vue JSは現在、世界中で最も急速に成長している開発フレームワークであり、このシステムで構築された240,000以上のWebサイトが稼働しています。AIツールが登場する前には、新しい複雑な開発フレームワークをこれほどの速さで、世界中にロールアウトするなどというアイデアは、笑い話に過ぎませんでした。現在のAIツールに支えられたDevOpsチームは、より多くの自由を持つことによって自分たちの意思決定に勇気を持ち、自らの使用しているツールが技術的課題に対処するのに十分な進歩を遂げていることを確信しています。

このことから、AIツールがDevOpsを置き換えるということが、少なくとも近い将来に実現する可能性はほとんどありません。これまでのDevOpsの採用トレンドで見てきたように、技術面でのツールがいかに進歩しようとも、開発チームに戦略的なリーダシップが必要であることに変わりはないのです。そして、現在のAIは多くの領域で高い能力を持っていますが、ユーザの要求に対して真にクリエイティブな方法で応える能力を持つには至っていないのです。

結論

簡単に言ってしまえば、人間の開発者はまだかなり長い間必要であろう、ということです。開発者の役割は10年前とは大きく違っているかも知れませんが、それはこのダイナミックな業界に職を得たことの対価(であり、楽しみ)なのです。 

著者について

Sam Bocetta氏は元セキュリティアナリストで、海軍のネットワークエンジニアとして長く勤務していました。現在はセミリタイアして、セキュリティやプライバシ技術に関する教育に広く携わっています。氏の仕事の多くは弾道システムの侵入テストに関するもので、ネットワークを分析してエントリポイントを探し、その結果に基づいてセキュリティ上の脆弱性評価を作成していました。さらに氏は、高度な"倫理的"ハッキング演習の計画、管理、実施を通じて、海軍(陸上と海上の両方)で使用されているエンタープライズシステムにおける、脆弱性の特定やリスク状況の軽減を支援していました。アプリケーションやネットワークに対する脅威の特定と阻止、攻撃ベクトル領域の低減、脆弱性の除去、一般的な報告作業が業務の中心でした。氏はネットワークの弱点を特定し、さまざまなサイバー脅威に対してネットワークを強化するための新たな戦略を立案することができます。アーキテクトや開発者と緊密なパートナシップを築くことによって、アプリケーションにおいて特定された脆弱性を緩和するコントロール方法を特定し、さまざまな脅威の戦術、技法、手順の模倣によりセキュリティ評価を実施してきました。

 

0 コメント:

コメントを投稿