ロケット・ソフトウェア社のプニート・コーリ氏がDevOps文化とクラウド戦略の進化について語ります。
デーヴァ・スチュワート
DevOps は、もはやソフトウェア開発に限定された単なるプラクティスではありません。そうではなく、それは文化であるとロケット・ソフトウェア社のエンジニアリング担当副社長プニート・コーリ氏は言います。ソフトウェアがシュリンクラップされたCDで提供されていた「シュリンクラップ」時代と比較すると、DevOps はクラウドコンピューティングの進化から生じた、運用に関係するもっと広範囲に亘る一連の慣習です。
開発の種類や業界に関係なく、「複数の組織がロジスティクスとデータを共有し、互いに話し合うようにしているので、あなたはB2CまたはB2Bのどちらかの観点から自社の環境を運用できるようにしています」とコーリ氏は言います。
クラウドの進化
クラウドの進化によってDevOpsの作用の仕方が劇的に変わるのは、モダナイゼーションの文脈で考えると完全に理に適っています。モダナイゼーションは、インフラストラクチャ、管理、顧客データ、およびその他のITの構成要素すべてを含む運用可能性に関する要素に影響します。
ある意味で、クラウドへの移行は、内燃機関から電気自動車 (EV) への移行に譬えることができます。どちらのタイプの車も同様の機能を果たしますが、ボンネットの下では機械的な側面が大きく異なります。その結果、従来の車のメンテナンスに必要なツールと、EV のメンテナンスに必要なツールとは大きく異なります。
レガシーアプリケーションはDevOpsとモダナイゼーションがどのように絡み合っているかを示す好例です。 20~30年前に構築されたレガシーアプリケーションは、最新のアプリケーションとはまったく異なる使用体験をユーザーに提供します。レガシーアプリケーションはグリーンスクリーンを基に構築されていて、おそらく実行速度が遅く、単純にリフト&シフトといった手法でもっと現代的なインターフェースをもつクラウドに移行することはできません。しかし今日の顧客は、迅速なデータ読み込みや処理の必要性などを含む自分たちのニーズをアプリケーションが満たすことを期待しています。
単純なアップグレードではない
CIOがレガシーアプリケーションのモダナイゼーションを求めるのは珍しいことではないとコーリ氏は言います。これらのプロジェクトは大規模であり、IT 担当者は「どうすればこの飛躍を成し遂げられるだろうか?」と疑問に思うことになります。その結果、アプリケーションを古いプログラミング言語からJavaやGoなどの新しいプログラミング言語に移行する、リファクタリングなどのもっと小さなことから始めます。「彼らはその中核部分に本当に集中するようになりますが、データのテストやユーザーの使用体験のテストなどの重要な要素を見逃してしまうことが課題です」とコーリ氏は言います。
多くの場合、そのシナリオはユーザーが失望し、CIO が何百万ドルも無駄にしたと感じ、結局やり直しとなってしまうために開発チームは設計し直すことになります。
「DevOpsの要素が既に採用されている場合は、そのすべてを回避できます」とコーリ氏は言います。「テストモデルがあり、受け入れテストを行うユーザーがいて、エンドユーザーがフィードバックを提言できる継続的インテグレーション(CI)または継続的デリバリー(CD)モデルがあります」と彼は言い、加えて「開発者は現実世界の匿名化されたデータを使用して、モダナイズされたアプリケーションがどのように動作するかを確認することさえできます」と言います。
適切なDevOpsツールを選ぶ
DevOps は、新しいアプリケーションを構築するための明確な選択肢ですが、レガシーアプリケーションをモダナイズする際には、必ずしもそれが明々白々な答えであるとは限りません。一見、ばらばらなアプローチを使用してモダナイズする方が簡単で迅速に思えるかもしれませんが、何かが機能しない可能性があることを考えると、DevOpsアプローチはもっと安全かつ効率的な方針です。
コーリ氏は、それをアジャイルなプラクティスの採用と比較しています。早くから、人々は 18か月のサイクルを維持したいと考え、漸進的な変更は時間がかかりすぎると考えていました。「業界は、時間とお金を節約するだけでなく、漸進的なアプローチを使用してより高品質のソフトウェアを提供できることを既に示しています。しかし、そうする代わりに DevOpsを活用すれば、より素早く方向転換できるので、実際に物事を加速するのに役立ちます。」
例えば、EV を運転していてメンテナンスが必要な場合、工具やメンテナンス技術者に驚くことがあるかも知れません。ガレージに行き、レンチやグリースを目にすることを期待するかもしれませんが、ラップトップとUSBを持っている人を目にする可能性がはるかに高くなります。レガシーアプリケーションのモダナイゼーションを担当している場合は、最新のツールを使用してモバイルアプリを一から構築する場合でさえも、アプリケーションの構築に使用されたツールですぐに作業が開始できます。
「クラウド環境で動作するように設計されていないこれらのシステムに取り組んでいるときは、追加の知識と経験を取り入れなければなりません」とコーリ氏は言います。「誰かにソフトウェアのレガシーな部分を修正する様に依頼した場合、彼らはもっと新しいソフトウェア用に作られたツールを使用するのではなく、そのソフトウェアで動作するように見えるツールを使用するでしょう。」問題は、これらのツールが即応性のある製品を生み出さないことです。
自動化が鍵
すべての部門と業界でDevOpsが広く採用され、財務からデータに至るまで、あらゆるレベルのビジネスを運用可能にしようとする動きの中で、企業はどうすれば競争を勝ち抜くことができるのでしょうか?
コーリ氏は、魔法の構成要素は自動化だと言います。
「環境に継続的にデプロイしている場合、実際にビルドスクリプトを自動化してそのプロセスをさらに高速にできますか?」
古い車では、イグニッションに挿入し、それを回してモーターを始動する鍵がおそらく必要になるでしょう。最新のEVではボタンを押します。ほとんど同じことが起こりますが、それらは自動化されています。ドライバーがすることは遥かに少なくなります。「彼らは一連の手順をすべて実行し、それを1つのボタンに集約しました」とコーリ氏は言います。開発者は同じロジックをアプリケーションに適用できると彼は言います。「これらの要素をアプリケーションのボタンの後ろに置くことができれば、毎朝それを押すだけでビルドが実行されます。それが展開され、テスト結果が表示されます。これで、これらすべての手順が1つのボタンを押すことに集約されました。」
実データが重要
「多くの場合、アプリケーションを開発するとき、ABCや123などのランダムなデータを生成してそこに入れるか、Jack、Henry、John を名前として思いつきます。これにより、最初のテスト、つまり私が言う『アプリケーションの楽観的テスト』を通過できます」とコーリ氏は言います。問題は、そのでっち上げのデータを使用しても、アプリケーションが世に出たときに、実際の顧客データを活用してそれがどのように動作するかを正確に把握できないことです。
「私たちは、アプリケーションが単に地域的であるだけでなく、世界的なものでもあるこの世界に住んでいます。名前の綴りは世界のさまざまな地域で異なり、名前はほんの一例にすぎません。現実世界の匿名化されたデータを持ち込むと、開発者にとってはテスト環境が複雑になります」とコーリ氏は言います。データは「難しい」と彼は指摘します。また、難しいが故に、求められる程には集中できないことがよくあります。「しかし、それは苦労無くして成功無しという状況です。困難な部分に取り組むと、市場でとてつもない優位性を得ることができます」とコーリ氏は言います。