はじめに
PipeCDとは、KubernetesやGoogle Cloud Run、Amazon ECS、 AWS Lambdaといったさまざまなプラットフォームに対応する継続的デリバリーシステムです。アプリケーションのデリバリーはもちろん、Terraformにも対応しているのでインフラストラクチャーの構築・運用にも活用できます。
著者が所属するサイバーエージェントでは、ソフトウェアデリバリー領域において各プロダクトが良いプラクティスをそれぞれで別々に模索するという点で非効率性の課題がありました。そこで良いプラクティスをソフトウェアとして実装し、組織的にデリバリーパフォーマンスを改善するためにPipeCDという継続的デリバリーシステムの開発が始まりました。2020年の6月よりOSSとして公開され、少しずつ開発者やスター数が伸び、Kubernetes Podcastでも紹介されるなど、徐々に注目を集めています。
PipeCDの特徴とメリット
PipeCDには以下のような特徴やメリットがあります。
-
Kubernetes以外のさまざまな対象に対しても、GitOpsスタイルの統一したインターフェースでデプロイが可能
- 2021年9月時点では、AWS LambdaやGoogle Cloud Runを始めとしたサーバーレスアーキテクチャ、Terraformなどの構成管理ツールに対応
- 汎用性の高いパイプライン機構により、さまざまなデプロイ戦略を実行することが可能
- 自動ロールバックはじめ、デプロイフローを自動化するさまざまなサポート機能
- 複数プロジェクトを持つ大規模組織での利用を想定し、マルチテナンシーでの運用も容易
インフラの管理からアプリケーションのデプロイまでさまざまな対象に対応していて、複数のプロジェクトやチームが存在する企業でも統一的な運用ができます。まだ若いプロダクトなのでv1のリリースはまだですが、精力的に開発されています。機能のステータスはコチラを参照してください。2021年9月時点で、サイバーエージェント社内では700以上のアプリケーションで運用をしています[注1]。
[注1] ここでのアプリケーションとはPipeCDにおけるApplicationです。
PipeCDのアーキテクチャ
PipeCDのアーキテクチャを簡単に説明します。
![アーキテクチャ](http://cz-cdn.shoeisha.jp/static/images/article/14811/14811_001.png)
PipeCDはコントロールプレーンとPipedエージェント(piped)という2つのコンポーネントから構成されています。コントロールプレーンはAPIアプリケーションで、エージェントはシングルバイナリです。エージェントはGitHubのリポジトリを監視していて、変更を検知するとコントロールプレーンに通知しデプロイを始めます。コントロールプレーンではWeb UIを提供していて、デプロイの状態を確認できます。