先ほど、継続的インテグレーション(CI)について説明しました。 継続的デリバリーを続行します。 これは、ソフトウェア開発方法のセットです。 コードを展開する準備ができていることを確認するのに役立ちます。
/ Pixia / bluebudgie / PL物語
継続的配信の組み合わせは、2001年の基本原則のリストの冒頭にある
アジャイルマニフェストで見ることができます。
2010年、Jez HumbleとDavid FarleyはContinuous Deliveryをリリースしました。 著者によると、CDは
継続的インテグレーションのアプローチを補完し、展開のためのコードの準備を容易にします。
この本が出版されてから、このアプローチは人気を博し始め、わずか数年でほぼ一般的に受け入れられるようになりました。 2014年の600人以上の開発者とITマネージャーの
調査によると、技術マネージャーの97%とプログラマーの84%が継続的デリバリーに精通していた。
現在、このアプローチは最も人気のある方法の1つです。 DevOpsとJenkins CommunityのITコミュニティに関する2018年の調査によると、1,000人を超える回答者の半数がそれを使用しています。
継続的配信の仕組み
CDの基本は、展開のためのコードの準備です。 このタスクを達成するために、リリース用のソフトウェアを準備するプロセスの自動化が使用されます。 さまざまな開発環境の標準にする必要があります。これにより、短所をすばやく見つけて最適化できます。 たとえば、テストを高速化します。
継続的配信プロセスの例は次のとおりです。
継続的インテグレーションのアプローチが最初の2つの段階の自動化を担当する場合、継続的デリバリーは次の2つの段階を担当します。 特に、
構成管理システムにより、プロセスの安定性が確保され
ます 。 インフラストラクチャ、データベース、および依存関係の変化を監視します。 展開自体は自動化することも、手動で実行することもできます。
このプロセスには次の要件があります。
- 実稼働環境への移行準備と即時リリースの準備に関する情報の入手可能性(CDツールはコードをテストし、リリースの変更の影響を評価できるようにします)。
- 最終製品の全体的な責任。 製品チーム-マネージャー、開発者、テスター-は、責任範囲だけでなく結果についても考えます(結果は、製品のユーザーが利用できる作業リリースです)。
通常、CDは
コードレビューを使用し、
ダークラウンチングの原理を使用して顧客の意見を収集します。 最初に、少数のユーザー向けに新機能がリリースされます。製品のユーザーエクスペリエンスは、内部テスト中に気付かなかった欠陥やバグを見つけるのに役立ちます。
利点は何ですか
継続的デリバリーは、コードの展開を簡素化し、生産性にプラスの効果をもたらし、従業員が燃え尽きる可能性を減らします。 最終的に、これにより全体的な開発コストが削減されます。 たとえば、CDは、HPチームの1人がこのようなコストを40%
削減するのに役立ちました。
さらに、2016年の調査(
ドキュメントの 28ページ)によると、CDを導入した企業は、このアプローチを使用しない企業よりも情報セキュリティに関する問題を50%早く解決しています。 ある程度まで、この違いはプロセス自動化ツールの作業によって説明できます。
もう1つのプラスは、リリースリリースの加速です。 フィンランドの開発スタジオでは、継続的な配信によりコードアセンブリの速度が25%向上しました。
潜在的な困難
最初の主な問題は、使い慣れたプロセスを再構築する必要があることです。 新しいアプローチの利点を示すには、最も労働集約的なアプリケーションではなく、徐々にCDに切り替える必要があります。
2番目の潜在的な問題は、多数のコード分岐です。 「分岐」の結果は、頻繁な衝突とその後の大量の損失です。 可能な解決策は、
ブランチなしアプローチです。
特に、一部の企業では、テストで主な問題が発生します-時間がかかりすぎます。 多くの場合、テスト結果は手動で分析する必要がありますが、CD実装の初期段階でのテストの並列化が解決策となる場合があります。
また、新しいツールを使用するように従業員をトレーニングする必要があります。予備教育プログラムにより、開発者の時間と労力が節約されます。
/ Flickr / h.ger1969 / CC BY-SAツール
継続的デリバリーのためのいくつかのオープンツールを以下に示します。
- GoCDは、JavaおよびJRuby on Railsで継続的に配信するためのサーバーです。 アプリケーション配信プロセス全体を制御できます:ビルド-テスト-リリース。 このツールは、Apache 2.0でライセンスされています。 公式Webサイトで、セットアップガイドを見つけることができます。
- Capistrano -Ruby、Java、またはPHPでのアプリケーションの展開を自動化するスクリプトを作成するためのフレームワーク。 Capistranoは、リモートマシン上でコマンドを実行し、SSH経由でそれに接続できます。 Integrity CIサーバーなど、他の継続的な統合および配信ツールと連携します。
- Gradleは、アプリケーション開発サイクル全体を自動化するマルチプラットフォームツールです。 Gradleは、Java、Python、C / C ++、Scalaなどで動作します。Eclipse、IntelliJ、およびJenkinsとの統合があります。
- ドローンはGo CDのプラットフォームです。 ドローンは、オンプレミスまたはクラウドに展開できます。 ツールはコンテナに基づいて構築され、YAMLファイルを使用してそれらを管理します。
- Spinnakerは、マルチクラウドシステムでコードを継続的に配信するためのプラットフォームです。 Netflixによって開発されたこのツールの開発では、Googleのエンジニアが大きな役割を果たしました。 インストール手順は、公式Webサイトで見つけることができます。
企業ブログで読むべきもの: