ログイン / 登録 アカウント

自動化

デプロイの自動化とは

デプロイの自動化とは、自動化されたプロセスを使用して、テスト環境と本番環境の間でソフトウェアを移行できるようになることです。このため、ソフトウェア配信サイクル全体で、繰り返し可能で信頼性の高いデプロイが可能になります。

デプロイの自動化により、アプリケーションのデプロイに人間が介入する必要がなくなるとともに、新しい機能やアプリケーションをより迅速かつ頻繁にリリースできます。

 

CI/CD とデプロイの自動化

デプロイの自動化は、DevOps 手法を適用し、CI/CD パイプラインを管理するために重要です。

継続的インテグレーションおよび継続的デリバリー (CI/CD) は、アプリケーションを頻繁に顧客に配信する手法であり、統合からテスト、デリバリー、デプロイまでのライフサイクル全体を通じて継続的な自動化とモニタリングを活用しています。 

継続的インテグレーションは一般に、開発者によるアプリケーションへの変更に対して、バグがないか自動的にテストし、リポジトリ (GitHubコンテナレジストリなど) にアップロードします。ここで、変更が運用チームによって (あるいはデプロイの自動化を使用して) 本番環境に導入されます。

開発者によるアプリケーションへの変更がマージされると、アプリケーションの自動構築とさまざまなレベルの自動テスト (通常は単体テストと統合テスト) によってその変更を検証し、アプリケーションが破損していないことを確認します。 

 

CI/CD パイプラインが、自動化された方法によるアプリケーション開発にどのように役立つかをご紹介します。

 

継続的デプロイメント (「CD」のもう 1 つの定義) は、デプロイの自動化を使用して開発者による変更をリポジトリから本番環境にリリースし、顧客が使用できるようにするというものです。 

本番環境に移す前のデプロイメント・パイプラインのステージでは手動でのデプロイメントのチェックはないので、継続的デプロイメントは主に、入念に設計されたテスト自動化を活用します。

自動化による継続的デプロイメントは、運用チームが担当する手動プロセスが多すぎて、アプリケーション提供が遅れるという問題に対処します。

継続的インテグレーションのメリットを活用し、デプロイメント・パイプラインの次のステージを自動化します。

 

自動化による DevOps のサポート

CI/CD は、DevOps アプローチまたはサイト信頼性エンジニアリング (SRE) アプローチのいずれかと、アジャイルな方法で連携している開発チームと運用チームによってサポートされる必要があります。

ソフトウェア開発にアジャイル手法を導入することで、リリースサイクルが短縮され、ダウンタイムが減少し、新しいリリースを待たずにミスを修正できます。

開発チームによるアプリケーションのデプロイや環境の構成と、運用チームによるデプロイと構成の方法が異なる場合、デプロイの自動化は機能しません。 

環境を自動化するためには、一貫性が必要です。本番環境を含むすべての環境で同じデプロイメントプロセスを使用する必要があります。 

チーム同士の足並みが揃わないと、運用チームがデプロイを手動で処理するリスクも発生し、エラー、不一致、リリースサイクルの延長につながります。 

このため、開発チームと運用チームが連携して DevOps 手法に従うことが非常に重要です。デプロイの自動化プロセスは、一貫性があり、プロセスを繰り返し実行できるように、開発チームと運用チームによって作成される必要があります。 

 

ソフトウェアのデプロイメントプロセスの自動化

デプロイメント・パイプラインは通常、ビルド、テスト、デプロイという 3 つの主要なステップ (もっと多い場合もある) に従います。これは、デプロイメントプロセスの自動化をサポートし、コードがコミットからデプロイに迅速に移行できるようにするパイプラインです。

  • ビルド:開発者がソフトウェアリポジトリにコードをコミットします。コードの変更は、本番環境と一致する環境に統合する必要があります。
  • テスト:JenkinsAnsible などのデプロイ自動化ツールが新しいコードを確認し、一連のテストをトリガーします。ビルドがすべてのテストをパスすると、本番環境にリリースできます。デプロイ自動化プロセスがなければ、このステップは手動で行います。
  • デプロイ:このステージでは、アプリケーションが本番環境にデプロイされ、ユーザーが使用できるようになります。

アジャイルおよび DevOps チームの場合、テストは開発と同時に行う必要があります。開発チームへのフィードバックは、継続的に行う必要があります。 

これらの頻繁な更新が互いに競合しないように、開発プロセスの一部に継続的インテグレーションを取り入れることが重要です。CI が正常に機能すると、アプリケーションへの新しいコード変更が定期的にビルド、テストされ、共通リポジトリに統合されます。

また、オンデマンドで環境にデプロイできることも必要です。環境の作成をリクエストする必要がある場合、プロセスは自動化されません。

 

デプロイの自動化のための Red Hat Ansible Automation Platform 

Red Hat® Ansible® Automation Platform には、Playbook、ビジュアル・ダッシュボード、分析機能など、企業全体での自動化の導入に必要なツールがすべて揃っています。

Red Hat Ansible Automation Platform を使用すると、1 つの共通フレームワークから、多層アプリケーションをすべて、確実に、一貫してデプロイできます。必要なサービスを構成できるだけでなく、共通のシステムからアプリケーション・アーティファクトをプッシュすることもできます。

YAML で作成された Ansible Playbook は、システムの望ましい状態を記述します。これらは通常、ソース管理で保持されます。Red Hat Ansible Automation Platform は、現在の状態に関係なく、システムを望ましい状態にする作業を行います。 

Ansible Playbook は、インストール、アップグレード、日常の管理を繰り返し可能で信頼性の高いものにします。

また、Red Hat Ansible Automation Platform は Forrester Research により 2020 年第 3 四半期の Forrester Wave™: Infrastructure Automation Platforms でリーダーに選出されています。

企業に求められているのは、自動化を簡単に作成できることだけでなく、プロジェクトやチームの壁を越えて、適切なガバナンスと制御を維持しつつ自動化を共有および再利用できるようにすることです。 

適切な自動化ソリューションを導入すれば、新しいアプリケーションやサービスの迅速な導入、IT インフラストラクチャの効率的な管理、アプリケーション開発の生産性向上が可能になります。

自動化に必要なツール

Red Hat Ansible Automation Platform

大規模な IT 自動化を構築するためのシンプルなエージェントレス・プラットフォーム。ビジュアル・ダッシュボードやロールベースのアクセス制御などにより IT インフラストラクチャを一元的に制御できます。

Red Hat Openshift

エンタープライズ対応の Kubernetes コンテナプラットフォーム。ハイブリッドクラウドやマルチクラウドのデプロイメントを管理するフルスタックの自動運用機能を備えています。開発者の生産性を向上させ、イノベーションを促進できるよう最適化されています。

自動化についてさらに詳しく知る