ソフトウェアの生産を迅速化する DevOps

DevOps と RAD を組み合わせて両方の長所を生かす

さまざまなテクノロジーを扱う企業にとって、事業を運営する上での要求を満たせるだけの短期間で IT ソフトウェア・ソリューションを生産するのは、次第に難しさを増しています。IT ソフトウェア・ソリューションを生産するプロセスは、たくさんの人手を要します。このプロセスでは手順を何度も繰り返す必要があり、しかもコードの統合、コンパイル、テストに、24 時間いっときも注意を怠ることはできません。これに対する対応としては、問題のあるところにリソースを追加で投入することが、一見、論理的な解決策のように思えますが、それよりも有効な解決策があります。それは、大量生産の自動化にも持ちこたえられるレジリエンシー (回復力) を備えたフレームワークを使用して、ソフトウェア・アプリケーションの開発を迅速化することです。そのようなフレームワークとなる DevOps を、RAD (Rapid Application Development) と組み合わせることで、企業は高い品質標準を維持しながらも、ペースの速いプロトタイピング、テスト、デリバリーを実施できるようになります。

Timothy Landers, Consultant, Universalinet.com, LLC

Timothy LandersUniversalinet.com, LLC の学長を務める Timothy Landers は、独立コンサルティングの実施指導者です。技術経営の MBA を取得し、Project Management Institute 認定の Project Management Professional の資格を持つ彼は、15 年以上、次々と責任が大きくなっていく任務をこなしながら IT 分野で活躍しています。企業向けトレーニング、職業トレーニング、高等教育向けトレーニングを目的に彼が作成した技術コースは、40 を超えています。また、製品マニュアル、プロ認定試験、商用セールス・カタログ (SkillSoft など) も作成しています。



2014年 8月 07日

DevOps と RAD (Rapid Application Development) モデルは、組み合わせることで強力なソリューションを革新することになる、2 つのソフトウェア開発手法の概念です。ソフトウェア開発の進化において実証されているように、同じ手法でソフトウェア開発の各段階を監視すると、パフォーマンスや統合に関するソフトウェア生産後の問題をより効果的に排除することができます。IBM などのソフトウェア・ベンダーでは、企業の既存のコンピューティング・システムを強化、改善するツールを提供することによって、すでに DevOps の価値を活かしており、新たなレベルの RAD を実現しています。

企業でソフトウェアの新しいフィーチャー、機能、プロセスを開発する必要がある場合、スタッフたちは、並行して成果物を提供できるように、作業を調整しなければなりません。テスターにはテストと再テストという作業、ソフトウェア開発者にはコードの開発と変更という作業、構成管理者にはバージョンおよびリビジョンの追跡と更新という作業があります。このすべてを考えると、中堅企業 (SMB) だけでなく、大企業にとってもかなり大掛かりな事業です。その上、組織では、プロセスを繰り返すという骨の折れる作業にさまざまな手法で取り組んでいたり、同じ問題に対して異なる対処方法が取られていたりすることから、時間のかかる複雑な手順へのフラストレーションはさらに高まります。このすべてに、既存のインフラストラクチャー、トポロジー、帯域幅、そしてソフトウェアの選択肢に起因する技術的な制約を結び付けて考えると、DevOps は、この窮地から救ってくれるために颯爽と現れるヒーローになります。

DevOps の需要と供給

迅速なソフトウェア生産には、DevOps プロセスを有効にするソフトウェア・ツールからのメリットがもたらされます。DevOps と迅速なソフトウェア生産が実施されている場合、企業は、顧客の需要を満たすソフトウェアをより短時間で提供することができます。DevOps に伴うクラウド・ベースのコンピューティングで、マルチプラットフォームの仮想環境、大規模なソフトウェア開発と実装、そして大量のファイルとビッグ・データのストレージおよび取得に対応できるためです。

最近、IBM と JumpCloud の後援で開催された DevOps カンファレンスでは、昨今の技術革新に及ぼしているソフトウェア自動化の影響について、出席者の意見調査が行われました。この調査で出席者が同意した意見は、迅速なソフトウェア生産 ― RAD プロトタイピング、ソフトウェア自動化、システム・オーケストレーションなど ― のための DevOps には高い需要があること、そしてこれらの技術革新は、技術を中心とする企業において事業収益を牽引する、競争力の高い最重要要素となることです。出席した 100 社への調査では、以下のような結果が得られました。

  • 回答者の 75% が、自社を DevOps 対応企業として分類している。
  • 回答者の 15% が、DevOps 対応企業への移行を進めている。
  • 回答者の 80% 以上が DevOps/RAD プロトタイピングにクラウド・ソリューションを使用している。

組織内での自動化を進めていると答えた DevOps 対応企業の間では、必要とする技術が以下のように分かれていました。

  • 75% が、現在、自動化された構成ツール (Puppet や Chef など) を必要としている。
  • 33% が、現在、自動化されたパッチ、フィックス、および更新ツールを必要としている。
  • 50% 以上が、現在、インストールを自動化して統一するために、事前構成されたシステム・イメージを必要としている。

さらに、これらの企業では、手作業で行われる DevOps プロセスは、その大部分がデプロイメント・タスクで占められていると答えていました。具体的には、パッチ、フィックス、更新などのアクティビティー、ユーザー、グループ、およびシステム・アカウントの管理、ログ・ファイル・データのフォレンジック分析などです。実のところ、この調査は、迅速なソフトウェア生産を管理するには DevOps フレームワークと自動化ツールが不可欠であることを明らかにしている数多くの調査の 1 つに過ぎません。


DevOps の正確さ

DevOps は、人間による操作とソフトウェアの自動化を統合し、この両方の世界の長所を提供します。結局のところ、DevOps で目標としているのは、既存の本番環境にシームレスに統合される、しっかりと作られたソフトウェアをデプロイすることです。一見すると、オーケストレーションされたソフトウェア開発ソリューションであれば、この目標を単独で達成するように思えますが、ソフトウェア運用チーム、品質保証 (QA) チーム、開発チームの間でのコミュニケーションには、共通の目標が必要です。さらに、作業を同期させ、効果的なチームワークと製品開発の障壁となる問題を確実に解決する必要もあります (図 1 を参照)。

図 1. DevOps による、統合されたソフトウェア開発
DevOps による、統合されたソフトウェア開発を示す画像

一般に、運用開発チームは、継続的なシステム保守およびアップグレードを経済的に行うコスト・エフェクティブなソリューションとして、昔ながらの技術を使用します。その一方で、ソフトウェア開発チームは、構成および成果物にエラーがないことを確実にする作業において、常に「さらに優れたソフトウェア」へと進化させるために、最新の技術を使用するのが通常です。ユーザー要件とシステム要件をマージして、両方の要件を満たすソフトウェア成果物にできるということは、ソフトウェア開発プロセスが、常に品質を保証したものでなければならず、製品の反復開発や変更を絶えず行えて、効果的なソフトウェア開発手法に継続的に従っている必要があることを意味します。DevOps は、事業運営にこうしたレベルの保証を与えるだけでなく、ソフトウェア開発による製品のデリバリーを迅速化します。企業は、ソフトウェア開発プロセスにおける待ち時間を切り出すことで、ソフトウェアをデリバリーするまでの期間を長引かせることなく、重複するプロセスを自動化するために、最速のプロセッサー、ディスプレイ、コンピューティング処理速度を提供しなければならないという証拠を得ることになります。考えられるシステム・エラーの修正 (例えば、システム自動化コードがループし続けて、人の介入が必要な場合) を組織化すること、そして DevOps 手順を使用するための最善の方法と技術的アプローチを決定することは、選択した DevOps ソリューションの成功を大きく左右する、人間が介在して行われる作業要素です。

したがって、DevOps ソリューションとは、既存資産の価値を最大限に高めるために本番環境と内部制御についても重視したソフトウェア開発に対する技術的アプローチのモデルということになります。ソフトウェア開発モデルには、以下のものがあります。

  • 反復型開発: プロトタイプが完成するまで、プロトタイプの改良を繰り返します。
  • インクリメンタル式開発: プロトタイプが完成するまで、段階的な追加を繰り返します。
  • ウォーターフォール開発、および修正されたウォーターフォール開発: プロトタイプが完成するまで、一度に 1 ステップずつプロトタイプの開発を着実に進めていくプロセスです。
  • IBM Rational Unified Process: 開発チームと運用チーム両方のニーズに合わせてプロセスを調整します。
  • RAD プロトタイピング: 最小限の計画で行える、迅速なプロトタイピングです。

Rational Unified Process と RAD プロトタイピングの組み合わせは、中堅企業や大企業において迅速なソフトウェア生産をするための DevOps に対する高い需要を推し進めてきました。


DevOps と迅速なソフトウェア生産

IBM は、Rational Unified Process と RAD プロトタイピングを利用するために必要なソフトウェアを提供しています。一部の企業では、このソフトウェアを使用することによって、投資利益率 (ROI) を 2 倍から 3 倍に増やしています。このような ROI の推進力となっているのが、IBM の革新的な製品のラインアップです。これには、クラウド・コンピューティング対応 DevOps ソリューション、そして IBM Rational Application Developer for WebSphere Software を介したポートレット・プロジェクト用 Apache Maven 統合による、クラウド・コンピューティングへの貢献も含まれます。表 1 を参照してください。

それぞれの機能による、迅速なソフトウェア開発および DevOps へのメリット
機能迅速なソフトウェア生産へのメリットDevOps へのメリット
ビッグ・データの要件に対応するスケーラブルな仮想化ソリューション、弾力性のあるネットワーク、高帯域幅対応設備という形での、迅速なソフトウェア生産のサポートフルスケールのテスト環境と開発環境独立したハイブリッド環境またはパブリック環境で、企業の既存のコンピューティング環境を補完
DevOps でのアジャイルなアプリケーション・ライフサイクル管理を実現するためのツールIBM Rational DOORS Next Generation、IBM Rational Team Concert、IBM Rational Quality Manager により、ユーザー要件およびシステム要件と、関連する作業項目の間でのトレーサビリティーの定義、そして QA および品質管理メトリックのレポート作成を容易化人間による操作に基づきながらも自動化されたプロセスで、開発中のソフトウェア製品の正確さ、ユーザビリティー、信頼性を確保

安定した速度のパフォーマンスを利用する

既存の技術とプロセスを使い続けながら、新しいソフトウェア・ソリューションを作成するとなると、通常は、ソフトウェア開発プロセスに制約が課せられ、任意の時点で達成できる開発の種類も量も制限されます。企業にまさに必要なのは、ソフトウェア開発の生産をスピードアップして、時機を逃すことなく、新しい構想を形にできるようにすることです。技術革新への資本投下が、時間を争う決断であることは珍しくありません。ソフトウェア開発を完了するまでに何ヶ月もかかるとしたら、技術革新はもはや有用なものでなくなっている可能性があります。

一方、DevOps は、短い時間枠の中で、次々と新しいソフトウェア製品を開発し、デリバリーし続ける手段を組織に与えます (図 2 を参照)。DevOps の実施に必要なのは、迅速なソフトウェア生産のためのツールを利用できるように環境を整えて動作させることで、企業のソフトウェア開発の目標を達成することだけです。

図 2. 迅速なアプリケーション開発プロセスのフロー
RAD プロセス・フローの画像

ステップ 1

事業運営を念頭にソフトウェア開発をスピードアップする最初のステップは、チームワークの必要性を理解することです。高品質のソフトウェア製品を生産するために、チーム間でソフトウェア開発の責任を分担しなければならないのはもちろんですが、さらに、チーム同士がコミュニケーションを取り、ソフトウェア開発ライフサイクル (SDLC) に従って、事前定義された DevOps プロセスとそれらの手法をタイミングよく完了できるように調整する必要もあります。例えば、ソフトウェア開発中には、開発者がコード変更一式を前のバージョンまたは開発の前の段階に戻せるようにして、ロールバックによってコードの完全性を維持できるようにします。ロールバックが行われる場合は、ソフトウェア・コードの完成時と状態を一致させるために、チームが SDLC プロセスをロールバックする必要があります。また、ソフトウェアの開発手順とテスト手順もロールバックして、前回の有効なバージョンまたはリビジョンの後に行われたコードの変更をすべて消去する必要もあります。

ステップ 2

次のステップは、開発サイクルを短縮することです。迅速なソフトウェア生産は、RAD プロトタイピングの基礎となります。計画はほとんど必要ありません。なぜなら、この技術的アプローチでは、オブジェクト指向プログラミング (OOP) を使用するからです。DevOps で構造を提供し、OOP でプログラミングの正確さを確保することによって、ソフトウェア製品の変更および完成にかかる時間を短縮します。例えば、検索エンジンのプロトタイプは、入力された検索条件を受け入れる、Web ページ上の 1 つのフィールドで構成することもできます。ユーザーがフィールドに検索条件を入力して「Go (実行)」ボタンをクリックすると、検索エンジンが検索を開始して、結果セットを返します。単純な例ではあるものの、これは、Web ページ、データ・ソース、実行可能な検索コードのそれぞれをオブジェクトとして作成する、基本的なソフトウェア・コード開発の例です。それぞれのオブジェクトを個別に完成させれば、チームはソフトウェアの開発に必要な時間を短縮することができます。しかし、チームがコミュニケーションを取らなかったり、メンバーが SDLC での自分の役割に同意しなかったりした場合、チームの運用責任が原因で、ソフトウェア開発に遅れが生じる可能性があります。DevOps と迅速なソフトウェア生産が連動して、コードの再利用、(システム・イメージをインストールするのに必要となる時間を節約するための) 仮想化、自動デプロイメントなどの手段によって、この混乱を軽減することで、SDLC プロセスは大幅にスピードアップします。つまり、人間が介在する作業のそれぞれを、DevOps の自動プロセスに関連付けられるということです。したがって、迅速なソフトウェア生産を実現可能にする鍵は、動的な環境におけるコミュニケーションを強化すること、要件の開発と定義の原則に従うこと、そして RAD プロトタイピングを実施することにあります。このすべてを実践するメリットには、開発ライフサイクルの短縮化、ユーザビリティー、スケーラビリティー、相互運用性、品質プロセスによるレジリエンシー、移植性、品質の改善などがあります。


DevOps と迅速なソフトウェア生産による企業の成功

ソフトウェアの開発とデリバリーをさらに迅速化する、新しい DevOps の革新が進んでいます。企業は、顧客をほぼ瞬時に満足させるという、未だに大きくなり続けている課題に直面しています。このような状況の中、顧客からの最新の要求に応える製品を市場に送り出したソフトウェア・ベンダーが、市場で最大のシェアを勝ち取ることになります。したがって、ソフトウェア・デリバリーの制約となるのは、品質の高い製品を開発するのに必要な時間だけです。これは、迅速なソフトウェア生産を推進する重要な要素となります。企業は、製品を一番乗りで市場に送り出したときに、収益を生み出します。市場の需要を満たすには、DevOps と迅速なソフトウェア生産の両方が必要です。この両方により、企業は大きな競争上の優位性を獲得するだけでなく、事業運営の予見可能性と一貫性を強化し、コストを削減して収益性を高めることができます。


迅速なソフトウェア生産のツール

DevOps プロセスを自動化するツールのセットは、迅速なソフトウェア生産をする上での中核的な要素です。迅速なソフトウェア生産を実施するには、SDLC とその具体的なステップ (図 3 を参照) に対処する高品質の自動化ツールが必要となります。RAD ツールとは、プロトタイプの開発を容易にするために、開発プロセスを自動化する機能を提供するソフトウェア・アプリケーションのことです。具体的には、クロスプラットフォーム RAD プロトタイプ開発をサポートするミドルウェアを提供したり、データベース間のコネクターの役割を果たしたり、ソフトウェア製品内部にコントロールを組み込んだりします。また、アラート機能や通知機能の追加、ソフトウェア製品コンポーネントの編成、デスクトップからのプログラミングおよび開発サポート、クラウド・ベースの RAD プロトタイピングの支援にも対処します。

図 3. SDLC
SDLC を示す図

まとめ

迅速なソフトウェア製品の開発とデリバリーで成功し続けるためのフレームワークを用意しようとしている企業にとって、DevOps はその答えになります。このソフトウェア開発のための、開始、開発、デプロイメントという構造を使用すると、SDLC の各フェーズがサポートされ、大量生産に対する安全な技術的アプローチになります。その結果、企業はいっときも中断することのないソフトウェア開発業務により、技術革新に対する市場の需要を迅速に満たすことができます。企業には今や、ソフトウェア製品を市場に短時間で送り出すことによって収益を生み出す、ほぼ限りない可能性があります。DevOps は、迅速なソフトウェア生産を、最も収益性の高いソフトウェア開発手法として利用可能にしています。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • 専門家のネットワークであるとともに、互いにつながりを持ち、共有、協力するためのコミュニティー・ツールが集められている developerWorks コミュニティーに参加してください。
  • developerWorks DevOps コミュニティーは、DevOps 実践者が経験談、プラクティス、ヒントを共有するためのコミュニティー・スペースです。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, Rational
ArticleID=979843
ArticleTitle=ソフトウェアの生産を迅速化する DevOps
publish-date=08072014