1. ホーム
  2. Web プログラミング
  3. その他全般

DevOps、CI、CD、自動化を一挙に解説

2022-01-18 01:33:51

まえがき

  企業向けアプリケーションの反復と拡大が進むにつれ、アプリケーションのリリースには、PC、モバイル、アプレットなど、複数のチームが関与する場合があります。また、アプリケーションのリリースは、アプリケーション開発の反復のコミュニケーションと同様に、ハイリスク、ハイストレスのオーバープロセスとなり、テストコストは著しく管理しきれなくなっています。そこで、デプロイ作業の再現性を確保し、デプロイエラーの可能性を減らすために、DevOpsの管理概念、CI、CD、強力なデプロイ自動化ツールが活躍するのです。以下、この4つの基本的な考え方について簡単に説明します。

デブオプス

DevOpsとは?

  DevOps(DevelopmentとOperationsの組み合わせ)とは、開発、技術運用、品質保証(QA)部門間のコミュニケーション、コラボレーション、統合を促進する一連のプロセス、手法、システムの総称である。

DevOpsは、開発、技術運用、品質保証(QA)が交差したものと考えることができます。

DevOpsのメリット?  DevOpsは、これまでサイロ化されていた役割(開発、IT運用、品質工学、セキュリティ)が連携・協力し、より優れた、より信頼性の高い製品を生み出すことを可能にします。DevOpsの文化、プラクティス、ツールを採用することで、チームは顧客のニーズへの対応力を高め、構築したアプリケーションに対する信頼性を高め、ビジネス目標を迅速に達成することができるようになります。

CI

CI/CDとは?

{CI/CDとは、アプリケーションの開発段階で自動化を導入し、顧客に頻繁にアプリケーションを提供するアプローチである。   CI/CDは、アプリケーションの開発段階で自動化を導入し、アプリケーションを頻繁に顧客に提供するアプローチである。CI/CDの中核となる概念は、継続的インテグレーション、継続的デリバリー、継続的デプロイメントである。開発チームと運用チームのためのソリューションとして、CI/CDは新しいコードを統合する際に発生する問題に焦点を当てます。具体的には、CI/CDは、アプリケーションライフサイクル(統合およびテストフェーズから、配信およびデプロイメントまで)を通して、継続的な自動化と継続的な監視を可能にします。これらの連携したトランザクションは、しばしば「CI/CDパイプライン」と総称され、開発チームと運用チームがアジャイル方式で協働してサポートします。

画像

CI Continuous Integration (継続的インテグレーション)

  最近のアプリケーション開発のゴールは、複数の開発者が同じアプリケーションの異なる機能を同時に開発することです。しかし、もし組織がソースコードのすべてのブランチを1日でマージするように手配した場合、結局は面倒で時間がかかり、手作業で行う必要が出てくることがあります。これは、独立して作業しているある開発者がアプリケーションに変更を加えた場合、他の開発者が同時に行った変更と衝突するリスクがあるためです。また、チーム内でクラウドベースのIDEに合意するのではなく、各開発者が自分のローカル統合開発環境(IDE)をカスタマイズしている場合、この問題はさらに悪化します。  継続的インテグレーション(CI)は、開発者がコードの変更をより頻繁に、時には毎日、共有ブランチまたは「トランク」にマージするのに役立ちます。開発者がアプリケーションに加えた変更がマージされると、システムは自動的にアプリケーションを構築し、異なるレベルの自動テスト(通常はユニットテストと統合テスト)を実行して変更を検証し、変更がアプリケーションを破壊していないことを確認する。つまり、テストはクラスや関数から、アプリケーション全体を構成するさまざまなモジュールまで、すべてをカバーするのです。自動テストで新しいコードと既存のコードとの間にコンフリクトが見つかった場合、CIによってこれらのエラーを迅速に修正することが容易になる。CD Continuous Delivery CIで構築とユニットテストおよび統合テストのプロセスを自動化した後、Continuous Deliveryは検証済みのコードをリポジトリに自動的に公開する。効率的な継続的デリバリープロセスを実現するためには、CIを開発パイプラインに確実に組み込むことが重要である。継続的デリバリーの目標は、本番環境にデプロイ可能なコードリポジトリを用意することです。コードの変更のマージから本番環境に対応したビルドの配布まで、継続的デリバリーの各ステージでは、テストの自動化とコードリリースの自動化が行われます。プロセスの最後には、運用チームはアプリケーションを本番環境に迅速かつ容易にデプロイすることができます。

CD 継続的デプロイメント

  成熟したCI/CDパイプラインの最終段階は、継続的デプロイメントです。継続的デリバリー(生産準備の整ったビルドをコードリポジトリに自動的にリリースすること)の延長として、継続的デプロイは自動的にアプリケーションを本番環境にリリースします。本番前のパイプラインの段階では手動でのゲーティングがないため、継続的デプロイはよく設計されたテスト自動化に大きく依存しなければならない。実際には、継続的デプロイは、開発者によるアプリケーションへの変更が、(自動テストに合格すると仮定して)書き込まれてから数分以内に反映されることを意味します。これにより、継続的にユーザーからのフィードバックを受け、それを統合することが容易になります。要約すると、これらのCI/CD相関ステップのすべては、アプリケーションのデプロイのリスクを減らすのに役立ち、したがって、アプリケーションへの変更を(一度にではなく)小分けにしてリリースするのが容易になるのである。しかし、CI/CDパイプラインの様々なテストとリリースフェーズに対応するために自動テストを書く必要があるため、先行投資はまだ大きくなる可能性があります。

自動化

ITオートメーションとは何か?

  ITオートメーションは、インフラストラクチャ・オートメーションとも呼ばれ、ソフトウェアを使用して、ITシステムとの人間のやり取りを代替または削減する反復可能な命令やプロセスを作成することです。自動化ソフトウェアは、これらの命令、ツール、フレームワークの制約の中で動作し、人間がほとんど介在することなくタスクを実行します。

なぜITオートメーションが必要なのか?

  ITの最適化とデジタルトランスフォーメーションの鍵を握るのは、自動化です。変化し続ける今日のIT環境は、かつてないスピードで拡張することが求められており、その実現にはITの自動化が不可欠です。

参考記事

https://azure.microsoft.com/zh-cn/overview/what-is-devops https://baike.baidu.com/item/devops {未定義 https://www.redhat.com/zh/topics/devops/what-is-ci-cd https://www.redhat.com/zh/topics/automation/whats-it-automation

この記事では、DevOps, CI, CD, Automationについて簡単に紹介します。