継続的なデプロイとは何か
継続的デプロイ (CD) は、ソフトウェア チームとお客様にとってメリットがあります。その定義、メリット、ベスト プラクティスなどについてご説明します。
Sten Pittet
寄稿ライター
CD (継続的デプロイ) はソフトウェア リリース プロセスです。このプロセスでは自動テストを使用して、コードベースへの変更が本番環境に対する即時自律デプロイに対して正しく安定しているかどうかを検証します。
ソフトウェア リリース サイクルは、時間の経過とともに進化しています。あるマシンから別のマシンにコードを移動して、それが期待どおりに動作するかをチェックするレガシー プロセスは、エラーになりやすくリソースが大量に必要なプロセスでした。今ではツールはこのデプロイ プロセス全体を自動化できるため、エンジニアリング組織はインフラストラクチャ オーバーヘッドではなく中核的なビジネス ニーズに集中できるようになりました。
継続的なデプロイと継続的なデリバリー
継続的なデプロイと継続的なデリバリーは言葉が似ているため、混乱を招く可能性があります。略語はどちらも CD で、非常に類似した責任が伴います。デリバリーは、デプロイの先駆けです。デリバリーでは、生産リリース前の最終的な手動承認ステップがあります。
以下に示すのは、両者の区別を覚えるのに役立つ記憶を助ける練習です。お気に入りのオンライン ストアからのパッケージを受け取ることについて考えてみてください。パッケージの到着を待っているときは、デリバリー サービスを利用します。これがデリバリー フェーズです。パッケージが正常に到着したら、パッケージを開いてその内容を確認して、想定どおりのものであることを確認します。そうでない場合は、拒否されて返却されることがあります。パッケージが正しい場合は、新しく購入したものを「デプロイ」して使用する準備が整いました!
デリバリー フェーズでは、開発者はアーティファクトにパッケージ化されるコードの変更を確認してマージします。このパッケージは、デプロイに開かれた承認を待っている本番環境に移動されます。デプロイ フェーズでは、パッケージが開かれて自動チェックのシステムでレビューされます。チェックに失敗すると、パッケージは拒否されます。
チェックに合格すると、パッケージは自動で本番環境にデプロイされます。継続的デプロイは、完全なエンドツーエンドのソフトウェア デプロイ自動化パイプラインです。
ソリューションを見る
Open DevOps によるソフトウェアの構築と運用
関連資料
自動テストの詳細
継続的デプロイのメリットとは何か
継続的デプロイによって、ソフトウェア開発チームに驚異的な生産性向上がもたらされます。DevOps と継続的デプロイを組み合わせることで、チームはリリースを大幅に加速できます。デプロイ パイプラインは変更ごとに自動でトリガーされるため、チームはより迅速に開発できます。チームに新しい製品や機能のアイデアがある場合は、コードがプッシュされ次第、顧客に提供できます。継続的デプロイにより、チームは小規模な変更のバッチをデプロイでき、リリースのリスクを低減して問題発生時の修正が容易になります。
ビジネスの視点から、継続的なデリバリーによって企業は新しいアイデアや機能を迅速にデプロイして検証することで、変化する市場の需要に対応できます。
継続的なデプロイ ツール
自動テストを採用したら、テスト カバレッジ ツールと組み合わせることをお勧めします。これによって、コードベースがどれぐらいあなたのテスト スイートによってカバーされているかを把握できます。
80% 以上のカバレッジを目指すのはよいことですが、カバレッジの割合が高いこととテストスイートが優れていることを混同しないように注意してください。コードカバレッジツールはテストされていないコードを見つけるのに役立ちますが、最終的に違いを生むのはテストの品質です。
始めたばかりであれば、慌ててコードベースの 100% カバレッジを達成する必要はありませんが、テスト カバレッジ ツールを使用して、まだテストが設定されていないアプリケーションの重要な部分を見つけてそこから開始してください。
自動テスト
継続的デプロイで最も重要な依存関係は、自動テストです。実際、継続的なインテグレーション、デリバリー、デプロイのチェーン全体は、自動テストに依存します。自動テストは、新しいコードが導入されたときにリグレッションを防ぐために使用されて、新しいコード変更の手動テストに置き換われます。
ローリング デプロイ
継続的なデプロイとデリバリーの際立った機能は、ライブ環境内で新しいコードをアクティブ化する自動ステップです。継続的デプロイ パイプラインは、バグや壊れた変更がデプロイされた場合にデプロイを元に戻せる必要があります。グリーンブルー デプロイなどの自動化されたローリング デプロイ ツールは、適切な継続的デプロイの要件です。
監視とアラート
堅固な継続的デプロイ パイプラインには、リアルタイム監視とアラートが用意されています。これらのツールは、システム全体の正常性と新しいコード デプロイの前後の状態へ、可視性を提供します。さらに、アラートを使用して、ローリング デプロイの「元に戻す」をトリガーして失敗したデプロイを元に戻せます。
継続的なデプロイのベスト プラクティス
継続的デプロイ パイプラインが確立されると、その成功を保証するために、エンジニアリング チームによる継続的な保守と関与が必要です。次のベスト プラクティスと動作によって、エンジニアリング チームは継続的デプロイ パイプラインから最大限の価値を引き出せます。
テスト駆動開発
テスト駆動開発は、開発が始まる前に、新しいソフトウェア機能の動作仕様を定義するプラクティスです。仕様が定義されると、開発者はその後、仕様に一致する自動テストを書きます。最後に、実際の成果物コードは、テスト ケースを満たして仕様と一致するように書かれます。このプロセスによって、すべての新しいコードが前もって自動テストでカバーされます。これに代わる方法は、最初にコードをデリバリーしてその後にテスト カバレッジを生成することです。この場合は、想定される仕様の動作と生成されたコードの間でギャップが生じる可能性が残ります。
単一のデプロイ方法
継続的デプロイ パイプラインを配置したら、それが唯一のデプロイ方法であることが重要です。開発者は、本番環境またはライブ編集にコードを手動でコピーしてはいけません。CD パイプライン外で手動で変更すると、デプロイ履歴が非同期化されて CD フローが壊れます。
コンテナ化
ソフトウェア アプリケーションをコンテナ化することで、デプロイ先のすべてのマシンで同じ動作が保証されます。これによって、ソフトウェアが 1 つのマシンで動作するが別のマシンでは動作が異なるクラス全体の課題が排除されます。自動テストや本番環境デプロイ時と同様に、開発者のマシン上でコードが同じ動作をするように、コンテナを CD パイプラインの一部として統合できます。
要約すると…
継続的なデプロイは、現代のエンジニアリング組織にとって強力なツールとなります。デプロイは、統合、配信、デプロイからなる「継続的なパイプライン」全体の最終ステップです。継続的なデプロイの真のエクスペリエンスは、コードを本番環境にデプロイし、正確性をテストし、誤ったときに自動で元に戻す、または正しい場合は受け入れられるレベルへの自動化です。
継続的なデリバリーの実践を検討している場合、DevOps CI/CD チュートリアルをぜひご確認ください。Jira を利用した、アトラシアンの Open DevOps やサードパーティ統合に関して詳述しています。
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。