継続的インテグレーション/継続的デリバリー (CI/CD)

継続的インテグレーション/継続的デプロイメント(CI/CD)をIT部門に取り入れる企業が増えています。また、CI/CDパイプラインは、DevOpsチームにとってのベストプラクティスと言えるでしょう。CI/CDにより開発者は、コード変更にエラーを出すことなく頻繁かつ確実に行うことができます。CI/CDパイプラインの構築は、設計から管理、デプロイまでの最新のソフトウェア開発のAPIライフサイクルにおいて重要なアプローチとなります。

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

継続的インテグレーション(CI)は、開発チームがアプリケーションを構築・テスト・パッケージ化する方法を自動化し、一貫性を確保することを目標としています。例えばコードに変更があると、ビルドからテストまで自動化されるため、アプリケーションリリースの準備や実装、品質管理が容易になります。今日のアプリケーションの多くは、さまざまなツールやプラットフォームで開発されたコードに基づいて構築されています。そのため開発チームは、変更を統合し検証する方法を必要としています。これこそまさにCIが注目されている理由です。CIは、エラーが発生しやすいデプロイメント作業の軽減やバグの早期発見など、幅広いメリットをもたらします。


継続的デリバリー(Continuous Delivery)とは

CI/CDパイプラインのもう一方のコンセプトが、継続的デリバリー(CD)です。CDは、アプリケーションやコード変更の配信を自動化します。多くの場合、配信先はテスト環境や開発環境など、複数のインフラ環境となります。そしてCDの自動化は、データベース、Webサーバおよびアプリケーションがデプロイされると、更新/再起動の必要がある追加サービスへの呼び出し(call)を実行します。これにより開発チームは、継続的なデプロイメントスケジュール(毎日/毎時/都度など)の実装が可能になります。


CI/CDの実装

ITチームが、ソフトウェア開発ライフサイクル(SDLC)に基づいて多面的で自動化されたテストやレポートを含むアプリケーション開発モデルをデプロイし、徹底したCI/CDを取り入れれば、組織は新しい機能やアプリケーションのローンチを迅速化できます。これに成功している組織は、「SDLCの測定基準」と「プロジェクトへの投資」を密接に結びつけることで、ビジネスへの影響度を測定し、その効果の大きさに基づいてプロジェクトの優先順位をつけています。

たとえば、Muleの開発者はCI/CDの手法を使用して、GitHubとJenkinsパイプラインでMuleのデプロイメントを自動化しています。ほとんどの開発者はビルドの段階には慣れています。Anypoint Studioで行われた作業は、複数の代表的な技術を活用して、CIパイプラインに簡単に接続することができます。具体的には、「バージョン管理はGitHub」「依存関係管理とビルド自動化はMaven」「テスト自動化はJUnitとMUnit」そして「課題とサービス管理はJIRAやServiceNow」など。また、マイクロソフトのアプリケーションでMuleアプリを構築している組織の多くは、Team FoundationやVisual Studioを活用しています。

MuleSoftのお客様は、コードの準備が完了した後、「Jenkins」「Puppet」「Chef」または「HP ALM」を活用して、開発・テスト・ステージ・プロダクションといった異なる環境におけるデプロイメントの自動化とリリースプロセスのオーケストレーションの両方を行います。「Puppet」と「Chef」は、『Muleランタイム』のインストールと設定の自動化に使用することもできます。DockerはCDの複雑さを軽減できるため、急速に人気が高まっており、『Muleランタイム』をDockerコンテナで出荷することも可能です。また、『Anypoint Platform CLI』といった管理エージェントを使うことで、プロセスをさらに自動化できます。その際、『Anypoint Platformユーザーインタフェース』の代わりに「Puppet」や「Chef」「Ansible」「Salt」などの自動化と管理ツールを使用できます。