ヘルプ: 継続的デリバリーとは何ですか

これまでは、 言った 継続的インテグレーション (CI) について。 継続的デリバリーを続けましょう。 これはソフトウェア開発手法のセットです。 これは、コードをデプロイする準備が整っていることを確認するのに役立ちます。

ヘルプ: 継続的デリバリーとは何ですか
/ピクサベイ/ ブルーセキセイインコ / PL

ストーリー

継続的デリバリーという言葉は、昔から使われていました。 アジャイルマニフェスト 2001 年からは、基本原則リストの冒頭に「最新のソフトウェアを継続的に提供することで顧客の問題を解決することが最優先である」と明記されています。

2010年、ジェズ・ハンブルとデヴィッド・ファーリーは ブック 継続的デリバリーによる。 著者らによると、CD はこのアプローチを補完します。 継続的インテグレーション これにより、デプロイメント用のコードの準備が簡素化されます。

この本の出版後、このアプローチは人気を博し始め、わずか数年でほぼ広く受け入れられるようになりました。 によると 調査600 年に 2014 人を超える開発者と IT マネージャーを対象に実施された調査では、技術マネージャーの 97%、プログラマーの 84% が継続的デリバリーに精通していました。

現在でも、このアプローチは最も人気のあるアプローチの 2018 つです。 IT コミュニティ DevOps と Jenkins コミュニティが参加した XNUMX 年の調査によると、 使用する 調査対象となった千人以上の回答者のうち半数。

継続的デリバリーはどのように機能しますか?

CD の基礎は、コードを展開できる状態にあることです。 このタスクを達成するには、ソフトウェアのリリース準備プロセスの自動化が使用されます。 これはさまざまな開発環境で標準となるべきであり、弱点を迅速に見つけて最適化するのに役立ちます。 たとえば、テストを高速化します。

継続的デリバリー プロセスの例は次のようになります。

ヘルプ: 継続的デリバリーとは何ですか

継続的インテグレーションのアプローチが最初の XNUMX つの段階の自動化を担当する場合、継続的デリバリーは次の XNUMX つの段階を担当します。 プロセスの安定性は、とりわけシステムによって確保されます。 構成管理。 インフラストラクチャ、データベース、依存関係の変更を監視します。 導入自体は自動化することも、手動で行うこともできます。

このプロセスには次の要件が課されます。

  • 運用環境への移行の準備状況および即時リリースの準備状況に関する情報の入手可能性 (CD ツールによりコードがテストされ、リリースでの変更の影響を評価できるようになります)。
  • 最終製品に対する全体的な責任。 製品チーム (マネージャー、開発者、テスター) は、自分の責任分野だけでなく、結果についても考えます (結果は、製品のユーザーが利用できる実用的なリリースになります)。

CDでは通常使用されます コードレビュー、およびお客様の意見を収集するため - 原則 暗い打ち上げ。 新機能は最初に一部のユーザーにリリースされます。ユーザーが製品を操作する経験は、内部テストでは気づかなかった欠点やバグを見つけるのに役立ちます。

メリットは何ですか

継続的デリバリーはコードのデプロイメントを簡素化するのに役立ち、生産性にプラスの影響を与え、従業員の燃え尽き症候群の可能性を減らします。 最終的に、これにより全体的な開発コストが削減されます。 たとえば、CD は HP チームの XNUMX つを支援しました。 減らす かかるコストは 40% 削減されます。

さらに、2016 年の調査によると (28 ページ) ドキュメント) - CD を導入している企業は、このアプローチを導入していない企業よりも 50% 早く情報セキュリティ問題を解決します。 この違いは、プロセス自動化ツールのパフォーマンスによってある程度説明できます。

もう XNUMX つの利点は、リリースの加速です。 フィンランドの開発スタジオでの継続的デリバリー 助けた コードのアセンブリ速度が 25% 向上します。

潜在的な困難

最初の主な問題は、使い慣れたプロセスを再構築する必要があることです。 新しいアプローチの利点を示すには、最も労働集約的なアプリケーションから始めて、徐々に CD に切り替える価値があります。

XNUMX 番目の潜在的な問題は、多数のコード分岐があることです。 「分岐」の結果、頻繁に競合が発生し、さらに大量の時間が失われます。 考えられる解決策 - アプローチ 支店がありません.

特に、一部の企業では、テストに時間がかかりすぎるという主な問題が発生します。 多くの場合、テスト結果は手動で分析する必要がありますが、考えられる解決策は、CD 実装の初期段階でテストを並列化することです。

また、新しいツールを使用できるように従業員を訓練する必要があります。事前の教育プログラムにより、開発者の労力と時間を節約できます。

ヘルプ: 継続的デリバリーとは何ですか
/フリッカー/ h.ger1969 / のCC BY-SA

ツール

継続的デリバリー用のオープンツールをいくつか紹介します。

  • GoCD — Java および JRuby on Rails の継続的デリバリー用サーバー。 アプリケーション配信プロセス全体 (ビルド、テスト、リリース) を制御できます。 このツールは、Apache 2.0 ライセンスに基づいて配布されます。 公式ウェブサイトで見つけることができます セットアップガイド.
  • カピストラーノ — Ruby、Java、または PHP でアプリケーションのデプロイメントを自動化するスクリプトを作成するためのフレームワーク。 Capistrano は、SSH 経由でリモート マシンに接続することで、リモート マシン上でコマンドを実行できます。 Integrity CI サーバーなどの他の継続的統合および配信ツールと連携します。
  • 受け台 は、アプリケーション開発サイクル全体を自動化するマルチプラットフォーム ツールです。 Gradle は Java、Python、C/C++、Scala などで動作します。Eclipse、IntelliJ、Jenkins との統合があります。
  • ドローン - Go 言語の CD プラットフォーム。 ドローンはオンプレミスまたはクラウドに導入できます。 このツールはコンテナー上に構築されており、YAML ファイルを使用してコンテナーを管理します。
  • スピネーカー — マルチクラウド システムでの継続的なコード配信のためのプラットフォーム。 Netflix によって開発されたこのツールの開発には、Google のエンジニアが大きな役割を果たしました。 インストール手順 公式ウェブサイトで見つけてください.

当社の企業ブログの内容:

出所: habr.com

コメントを追加します