「継続的開発」は、反復アプローチによりソフトウェアアプリケーションを開発し、小規模のバッチで継続的に更新をリリースする手法です。
つい最近まで、ほぼすべてのソフトウェア開発プロセスは同じ基本的アプローチで行われていました。ソフトウェアは実装、テスト、リビジョンなどのさまざまな開発フェーズを経て、最終的に顧客環境に展開する準備ができます。当然、継続的メンテナンスやリリース後のパッチも必要ですが、基本的に製品全般の開発は、エンドユーザーが使用する前に完了する形がとられていました。
残念なことに、この方法では開発サイクルが非常に長期化し、カスタマーエクスペリエンスの低下につながることが多くなります。リリースされた製品が顧客の期待に応えられない場合、リビジョンやテストフェーズに戻すのは困難で時間もかかり、顧客の要求に応えられません。
継続的開発はこれらの問題を解決するやり方です。アジャイル方法論の一部として、多くの DevOps プロセスが組み込まれ、小さなステップが段階的に進められます。ソフトウェアチームは製品を迅速にリリースし、展開後も継続的に改善できます。
継続的ソフトウェア開発は、CI/CD などのアジャイル原則を含む広義の言葉で、ウォーターフォール開発に代わる手法です。このため、アジャイル開発の利点もいくつか得られます。主なメリットには、次のようなものがあります。
「机上の戦略では戦いに生き残れない」とは軍事関係の格言ですが、ソフトウェアデリバリにも同じことが言えます。テストやリビジョンをどれだけ繰り返しても、本当に改善点が見つかるのはエンドユーザーのテストであることが多いものです。継続的な展開は、顧客に引き渡されたアプリケーションの更新や改善、方向転換が容易です。これにより、最良の状態になるまでソフトウェア品質を継続的に向上させることができます。
バグのないソフトウェアアプリケーションはどの開発チームにとっても夢ですが、継続的開発により、その夢が現実に近づきます。更新を展開前のサイクルや時々の大規模バッチ更新に限定しない継続的開発では、テストを実行してフィードバックを反映させ、エラーを見つけて修復することが容易です。更新はいつでも提供でき、大規模リリースを実施する必要がありません。
DevOps やアジャイル方式の重要な側面に「自動化」があります。継続的開発でも自動化が重要な役割を果たします。あらゆる継続的な変更や改善のバグを自動でテストしてアップロードでき、これらを手作業で行う必要がありません。熟練チームは時間のかかる反復作業から解放され、より戦略的な課題に労力を集中できます。厳しく規制を受ける環境でもガバナンスプロセスを自動化し、継続的デリバリにおける監査と規制に確実に対応できます。
大規模バッチのソフトウェア更新のリリースにはリスクが伴います。不具合があっても他の変更から切り分けるのは極めて困難で、アプリケーション全体を再びメンテナンスするには多くの時間を要します。段階的な開発では変更の検証を一つずつ、ずっと容易に行うことができ、プロジェクトの他の開発タスクへの影響を最小に抑えられます。
継続的開発には品質向上、リスク軽減、生産性向上などの利点がありますが、それがもたらす大きなメリットとして、コスト削減があります。開発者の効率性が向上し、組織にとっても開発サイクルの短縮やメンテナンスのしやすさなどのメリットがあります。ユーザーニーズを満たすプロジェクトデリバリのコスト全般を抑えることで、ソフトウェア開発の ROI が向上します。
最も重要なことは、継続的開発によるソフトウェア開発の迅速化です。開発チームは少ない期間で多くの成果が得られます。また顧客はアプリケーションを迅速に導入でき、また継続的な更新による頻繁な機能向上が可能です。継続的開発の重要性は、具体的に次の点に関連しています。
開発者がプロジェクトから離れると、数日、数週間、数か月後に以前の作業に戻るのは難しくなります。継続的開発は基本的に「継続的フィードバック」でもあります。フィードバックを収集し、ほぼリアルタイムに対応して必要な微修正を加えながら、詳細が記憶に新しい状態でプロジェクトの作業を進められます。
自動テストの導入は開発者の負担を軽減するだけでなく、バグ、脆弱性、不具合やエラーを迅速、正確に特定することにもつながります。発生とともに問題に対処することで、コードの問題を見つけて、より深刻なダメージが出る前に解決できます。
DevOps の「品質ゲート」はコード整合性のチェックをします。コードがあらかじめ決められた品質基準を満たさなければ、ビルドは停止され、失敗とされる場合もあります。ゲートの設定により、すべてのプロジェクトにおけるコードの品質条件だけでなく、セキュリティやその他の要素についても条件を満たすことを確認できます。継続的開発と合わせて適切な自動化ソリューションを導入することで、品質ゲートを設定して、すべての自動変更の点検検証を自動で実行できます。品質ゲートはより包括的な戦略の一部として、コンプライアンスを維持するために他のシステムと統合できます。
従来のウォーターフォールアプローチは、一般にアセンブリライン式の形態がとられ、チームメンバーがそれぞれの役割を担う中で作業が次の担当へと順に進められました。継続的開発はこれとは異なり、開発者が生産サイクル全体に関わることで、最終プロジェクトのオーナーシップが高まります。これは、DevOps の重要原則に基づく「作成者が所有者」の文化を意味します。
CI/CD ツールの導入は継続的開発に向けた重要なステップとなりますが、これらは厳密には同義ではありません。それぞれ「継続的インテグレーション/継続的デリバリ」を意味する CI/CD の 2 つの異なる手法を連携させることで、継続的開発を支援できます。CI/CD のパイプラインにより、コーディング、テストとデリバリを通じてソフトウェアデリバリの自動化が可能になります。さらに、継続的開発には継続的デプロイや継続的テストなどの他の手法も含まれます。それぞれに次のような違いがあります。
異なる開発者による変更を適用し、できるだけ迅速にメインブランチへと集約させます。変更は自動テストにより検証され、統合に伴う問題を回避します。
継続的デリバリは継続的インテグレーションに続くプロセスで、すべての検証済みコードが自動で実装され、ビルドステージからテストと本番環境へと送られます。継続的デリバリは自動テストの範囲を超え、自動リリースプロセスの手法がとられます。
継続的デプロイは、デリバリプロセスのステップを効果的に排除します。継続的デリバリではコード変更がリリース前の他の環境にプッシュされますが、継続的デプロイはそれをすべてスキップし、テスト/検証済みの更新がすべてエンドユーザーにライブ配信されます。
継続的テストは継続的開発において他のすべての手法と相互に関連する手法です。自動化された継続テストにより、十分な品質を確保しながら効果的に先のステップへ変更を送ります。継続的テストが行われないと、継続的インテグレーション/デリバリ/デプロイにおいてエラーや低品質なコード変更が実装/プッシュされるのを防ぐことが難しくなります。
継続的開発によりソフトウェア開発の俊敏性は向上しますが、適切なツールや自動化ソリューションがなければ、継続的開発の実現は非常に困難です。Strategic Portfolio Management、DevOps Change Velocity (ITSM Pro) と ServiceNow Platform の組み合わせは、継続的なソフトウェア開発に自動化とインサイトをもたらし、バリューストリーム管理を可能にします。継続的開発と ServiceNow の連携は企業の変革を加速させながら、不具合の発生を防止します。開発者は自在にツールを使える時間が増え、新しい実践的なインサイトを得て、監査や効果的な戦略計画に活かせるようになります。
継続的開発による最適なソフトウェア開発環境を構築するために、今すぐ ServiceNow をお試しください。
Now Platform には、ワークフローを迅速、効率的にデジタル化して大規模に実行できるコア機能が含まれています。