{{search ? '閉じる':'検索'}}

DevOps ~Mind the Gap~

ギャップを意識する

Related Videos


ソフトウェアの開発と運用の間の分断を解消したいなら、サービス仮想化という 新しいシミュレーション技術が役立つ。

By Leon Erlanger 

2012年8月、取引システムをアップグレードした際のソフトウェア・エラーによって、あるグローバルな金融サービス会社が大量の誤った株式取引を実行した。この不具合によって、この会社は数億ドルもの損失を計上し、会社の存続も危ぶまれる事態となった。これは極端な例だが、多くの組織はこれと類似した「ソフトウェアの問題」と格闘している。この金融サービス会社のように定常的な革新をあてにして、ソフトウェアを含む新しいテクノロジーをできるだけ早く市場投入しようとするが、これがかえってエラーを引き起こす可能性があるのだ。

多くの組織では、ソフトウェアの開発チームと運用チームが分断されている。この分断により、新しいソフトウェアのカットオーバーは常に問題含みとなり、最悪の場合はリスクを伴うものとなる。このような分断は、一部には両チームの間の本質的な違いに起因している。


たとえば、言語や使用する技術の違いだ。IT関連分野の調査・分析・コンサルティング会社であるエンタープライズ・マネジメント・アソシエイツ(EMA)のアプリケーション管理担当リサーチ・ディレクターのジュリー・クレイグ氏は「開発と運用のどちらの担当者も、何年もかけて独自の専門性と言語を確立しています。開発者はJavaやOracleを語る一方で、運用担当者はサーバ、ネットワーク、オペレーティング・システム、仮想化の話をします」と語る。

また、開発者と事業部門との間の分断を緩和しようという努力も、開発者と運用担当者を分断する原因の1つになっている。市場調査およびアドバイザリー会社であるフォレスター・リサーチのバイスプレジデント兼プリンシパル・アナリストのジャン・ピエール・ガーバニ氏は次のように説明する。「この数年間、開発者たちは事業部門との分断を解消する改善策を追求してきました。ただ、残念なことに、これにより多くの開発者がプラットフォームや運用の本質に疎くなるという副作用も生じています。その結果、多くの問題が開発やテスト工程で見落とされてしまい、それを本番稼働の段階で解決しなければなりません」。

開発者と運用担当者の分断を解消する、DevOpsという新しい概念がある。これは、2つの部門がソフトウェア・ライフサイクル全体を通して協力していく方法論をまとめたもので、その大きな目的はITとビジネス・サービスを、より早く、より高い品質で市場投入することにある。CA Technologiesの製品マーケティング/エンタープライズ管理担当シニア・ディレクターのメリッサ・サージェントは「DevOpsは人、プロセス、テクノロジーに関する概念です」とし、「今日の開発者には、より多くの業務サービスをより迅速かつ高品質で提供することが求められています。これを実現する為には、開発とインタラクティブ・コンポーネントのテストが同時に実施される必要があるのです」と語っている。



解決が迫られる“分断”

ソフトウェア開発者とIT運用担当者との間の分断自体は新しい問題ではないが、この問題の解決を迫られているという意味では新しい問題と言える。1980年代から90年代は、アプリケーションやアップデートは年に数回しかデプロイされず、メインフレームとクライアントサーバは今日のものよりはるかに単純で、分断があってもまだ許容できるものだった。しかし、分断は今や重要な問題である。

現在のWebアプリケーションの依存関係(連携処理)は、Web、アプリケーション、データベース・サーバ間の標準的なインタラクションをはるかに超えて拡大している。コンサルティング会社、アクセンチュアのパフォーマンス・エンジニアリング・プラクティス担当マネージング・ディレクターのスコット・ギリランド氏は次のように話す。「現在の一般的なオンライン・ユーザーの小売や金融取引処理では、複数の内部サービスやサードパーティのサービスと連携させる必要があります。それらは与信審査、送料計算、税率計算、不正対策、支払い処理などの機能を提供するサービスです」。

その結果、どのような新規ソフトウェアやアップデート・プログラムも、主要なサービスだけではなく、すべてのサービスにわたってテストされる必要があるとギリランド氏は説明する。「またデータについても、すべてのシステムにわたってフローさせレスポンスをテストする必要があります。しかしながら、すべてのシステムと正しくインタラクトし、適切なレスポンスを促すテストデータを用意することは大きな課題となります」。



また、今日のセルフサービス方式の顧客対応Webアプリケーションも、過去のシステムよりもはるかに大規模に展開されている。収益源となる基幹アプリケーションを保有する大企業の中には、数十万ドルから数百万ドルものコストを費やして基幹の本番システムを再構築し、統合テストや機能テスト、性能テストを実施している企業もある。それにもかかわらず、たいていの開発者やQA(品質保証)チームは、複雑で大規模な自社の複合アプリケーションが想定どおりに動作することを検証するのに必要なラボのリソースを得ることはできない。CA Technologies のサービス仮想化担当 製品マーケティング・マネージャのジム・ダガーは、「大規模な本番システムは、テストに必要な規模で複製するには複雑すぎたり、コストが高すぎます。また、テスト・ラボでは利用できない外部サービスが必要な場合もあります。これが、ソフトウェア・デリバリへの制約が非常に多くなる理由です」と語っている。

多くの企業は、実際の運用環境のものとは大きく異なる性能特性を使用して、非常に小さなテスト環境でソフトウェアを評価している。仮想化技術を使用している場合、問題がさらに複雑になる可能性がある。フォレスター・リサーチのガーバニ氏は「1台の物理サーバに構築された複数の仮想マシン上で実行されるアプリケーションは、物理的に独立した複数のマシンがネットワーク接続された環境で実行すると、その動
作が大きく異なることがあります。そのため、運用段階では必要なサービス品質が提供できない場合があります」と語る。

DevOpsを推進するもう1つの大きな要因として、アジャイル開発がある。アジャイル開発は、ソフトウェアのメジャー・アップデートを時折リリースするのではなく、アップデートを迅速かつ反復的に開発し頻繁にリリースする。EMAのクレイグ氏は「アジャイル開発では、新しいアプリケーションの更新を毎週あるいは毎日リリースすることもあります。最近、1日に50回もの変更を実施しているという会社から話を聞きました」という。

しかし、CA Technologiesのダガーは「そうなると、2つ以上のチームが1つのアプリケーションの個別のパートを個別のスケジュールで作業し、同じタイミングでテストに至ることができない場合があります。ソフトウェアが本稼働に入るときに品質が保証されていなければ、アジャイル開発によって得られるべき開発時間短縮の利点を失ってしまうことになります」と語る。そして開発時間短縮の利点だけでなく、ソフトウェア稼働へのコストも著しく増大する。

EMAのクレイグ氏は次のように説明する。「調査を重ねた結果、アプリケーション関連の問題は早期に見つけ出すほど、解決するまでのコストが低いことがわかりました。要件定義の段階で問題を発見するのと、運用段階で発見するのとでは、そのコストの差が最大で1000倍にも開くこともあります。本番稼働時の問題は、開発と運用チームだけでなく、従業員や顧客にも影響を及ぼします」。これに対処するため、多くの企業ではソフトウェアの開発と運用の両分野から専門家を集めてチームを結成している。このチームは、サービス提供ライフサイクルのあらゆる側面と段階で専門性を提供する。一般的にメンバーは、ソフトウェア開発、ネットワーク管理、システム運用、システム統合をはじめとし、開発と運用の分野で幅広い知識を備え、経験豊かでスキルが高く、またコストも高い。「こうしたメンバーは、膨大な経験を蓄積し、アプリケーションがアップグレード前よりも遅くなった理由や各問題の根本原因を解明します」 (クレイグ氏)



このようなチームを編成するには高額な費用が必要になる。CA Technologiesのダガーによると、そのメンバーは「メインフレームから分散システム、外部サービス、その他の平均的なエンタープライズ環境のインフラを構成する複雑な要素に至るまで、30年の専門知識を持つ万能型の人物」であることが求められる。

最近まで、テストの問題の多くは「スタブ」と呼ばれるソフトウェア・モジュールを作成し、開発者とQAチームによって共同で解決されてきた。スタブは、一般的なアプリケーションがやり取りするサービスの挙動を模倣するプログラムだ。アクセンチュアのギリランド氏はこう話す。「多くの顧客は、手動による回避策として数多くのスタブを作成しています。しかし、この数年でスタブの数が急増し、コストもかかり、維持も難しいことが明らかになりました」。

最近の新しいDevOps向けの画期的なソリューションとして、サービス仮想化がある。そこでは、仮想テスト環境全体を構築するための単一のプラットフォームが提供される。この環境では、ソフトウェアのテストに必要な実際の本番稼働環境のすべての依存関係やその他の側面をシミュレートできる。さらにサービス仮想化は、ソフトウェアの開発と展開に要する時間を短縮しながら、開発と運用との間の分断を解消できるように支援する。

CA Technologiesでは、開発工程におけるソフトウェアのテストにおいてインフラ環境全体をシミュレートする「CA Service Virtualization」というサービス仮想化プラットフォームを提供している。また、ソリューション・プロバイダーとしてさらに一歩進み、CA Service Virtualizationとアプリケーション性能管理ソリューション「CA Application Performance Management (APM)」を緊密に統合している。これにより、CA APMで収集した既存の本番システムの性能特性は仮想サービス環境に追加され、開発者は変更を伴う状況においても実際のインフラをシミュレートできるようになる。CA Technologiesのダガーは「サービス仮想化は、ソフトウェア・コンポーネントと連携して機能するサービスの挙動をシミュレートします。また、バックエンドの開発者が必要とするようなメインフレームのトランザクションをシミュレートすることもできます。その他、サービス・バスやサードパーティのサービス、Webサービス、メッセージング、その他様々なプロトコルや機能をシミュレートすることもできます。これらは現実のシステムのように動作しますが、すべてサーバやデスクトップ上でのシミュレーションなのです」と説明する。

CA TechnologiesのAPMソリューションをCA Service Virtualizationと統合すると、運用時の性能データを仮想サービスに提供できる。これにより、シミュレーションでも本番稼働システムのように実行させることができる。

CA Technologiesのソリューションをサービスの一環として提供するシステム・インテグレータ、テック・マヒンドラのCAクライアントパートナーであるラジュ・デサイ氏は、「CA APMは、シミュレートするアプリケーション・インタフェースごとに要求の種類や数、入出力など、数多くのデータ・ポイントを提供するため、ユーザーの挙動を正確にエミュレートできます」と評価している。

CA Technologiesの企業戦略担当上級副社長であるロン・ジャフィは、CA APMによって提供される運用時の性能情報によって、「シミュレーションの動作は、ソフトウェアが実行される実際のシステムでの運用にますます近づきます」と話す。「各開発チームは、アプリケーション全体の中で自身のチームが担当する部分を、他の開発チームが担当する部分の正確なシミュレーションを活用しながら作業を進めることができます。この環境では、システムの残りの部分と、他の開発チームが作業している部分の両方の動作がシミュレートされます。これにより、アプリケーションを構成する各部分を、多くの手直しをすることなく確実に連携して動作させることができ、開発とテストのサイクルを劇的に短縮します」。

サービス仮想化とAPMを組み合わせた場合、市場投入までの時間を短縮できるメリットは大きい。テック・マヒンドラのデサイ氏は「運用段階まで持ち越されるコードの欠陥は20%以下になり、顧客はライフサイクル全体を通して平均25%も迅速に新しいソフトウェアを提供できることがわかりました。CA Service Virtualization とCA APMは、全体の開発と展開プロセスの品質を向上させて時間を短縮し、市場投入時間の短縮と欠陥修正コストの低減を実現します」と語っている。

CA Technologies のジャフィは、さらに大きなコスト削減も可能だという。「作業効率がさらに向上すれば、企業はバックエンドのテスト・システムやテスト用データセンターを廃止できる可能性があります。また、開発とテストの工程でパートナーのシステムをシミュレートすれば、取引処理のテストを実行するためにパートナーのシステムを使用する必要がなくなり、その使用料も不要になります」。さらに、「CA Capacity Management」などのキャパシティ管理ツールを追加することで、より大きなメリットを得ることができる。「本番稼働に移る前にCA Capacity Managementを使用すれば、IT統合やコスト軽減の機会を見いだし、様々な『what-if』シナリオでアプリケーション性能への影響を分析できます」(ジャフィ)。

レオン・アーランガー(Leon Erlanger):ビジネスおよびテクノロジーに関するフリーランスライター。

CA Technologies編集・発行の「SMART ENTERPRISE 日本語版 Vol.7」から抜粋したものです。 2016年4月現在

DevOps ~Mind the Gap~

ギャップを意識する


TEL
0120-702-600
お問い合せ