CI/CD framework based on Serverless architecture
最近、サーバーレス開発者プラットフォームである Serverless Devs は、サーバーレスアーキテクチャに基づく軽量 CI/CD フレームワーク「Serverless-cd」をリリースしました。Serverless-cd は、サーバーレスアーキテクチャ上で動作する強力で柔軟、安全かつ低コストな CI/CD オープンソースフレームワークです。このフレームワークは Serverless Devs 開発者ツールを基盤に構築されており、開発者は Serverless-cd を通じてエンタープライズ向けのアプリケーション管理 PaaS プラットフォームを迅速に構築できます。
開発者はビジネス価値の創造により集中したい
Serverless Devs は CNCF のサンドボックスインキュベーションプロジェクトであり、2020 年に Alibaba Cloud によってオープンソース化されました。オープンでオープンソースのサーバーレス開発者プラットフォームであり、開発者にワンストップのサーバーレスアプリケーション開発サービスを提供し、現在のツールチェーンの課題解決を支援します。マルチクラウド製品をワンクリックで体験でき、サーバーレスプロジェクトを迅速にデプロイできます。
Serverless Devs プロジェクトは、アプリケーション開発、デバッグ、デプロイ、運用保守、モニタリングのフルライフサイクルソリューションを提供します。実際の利用において、アプリケーションのデプロイとデリバリーは依然として開発者にとって難しい問題です。開発者はアプリケーション開発と価値創造、すなわちコーディングとアプリケーション構築に集中したいのであり、アプリケーションのデプロイとデリバリーに時間を割きたくはありません。
Serverless-cd プロジェクトのリリース前、Serverless Devs プロジェクトは以下のリポジトリを通じて主流の CI/CD ツールと統合していました:https://github.com/Serverless-Devs/cicd。Jenkins、GitHub、GitLab などが該当しますが、これらの従来の CI/CD ツールを使用する場合、一般的に以下の問題に直面します:
1. リソース使用率が低い:ビルドマシンを事前に準備する必要があり、ビルドタスクがない時間帯はマシンリソースが無駄になります。
2. タスクのキューイング:リソース準備が不十分な場合、ビルドのピーク時にタスクのキューイング時間が長くなります。
3. アイソレーションが不十分:あるタスクが実行中に大量のコンピューティング/ストレージリソースを消費すると、他のタスクが失敗します。
4. セキュリティの問題:
a. プラットフォームが提供する CI/CD サービスを使用する場合:コードとビルドマシンが同じネットワーク環境になく、パブリックネットワークアクセスを開放する必要があるため、セキュリティ上のリスクが生じます。
b. ECS 仮想マシンデプロイ:複数のアプリケーションが同じインスタンスで同時にビルドされるため、悪意のあるアプリケーションが他のアプリケーションのコードにアクセスできてしまいます。
CI/CD パイプラインの 2 つの特徴
CI/CD パイプラインには 2 つの注目すべき特徴があります:
1. イベント駆動型
Webhook の受信による自動トリガーであっても、Open API の呼び出しによる手動トリガーであっても、CI/CD システムにとっては受動的に消費指示を受け取ります。
2. 業務のピークと谷が明確
CI/CD ビルドをトリガーするピークは通常勤務時間中に発生し、退勤後や夜間はビルドタスクが少なくなります。同時に、一部の実行に時間がかかるタスクや、大量の CPU とメモリリソースを必要とするタスクがあるため、事前の有効なキャパシティ見積もりが困難です。
・マシンリソースの準備が少なすぎる:リソース不足によりタスク実行が失敗するか、複数のタスクがリソースを奪い合って実行できません。
・マシンリソースの準備が多すぎる:十分に活用できず、アイドルリソースの無駄が生じます。
サーバーレスアーキテクチャに基づく CI/CD のメリット
サーバーレスアーキテクチャでは、CI/CD に以下のメリットがあります:
1. 自動弾性
サーバーレスプラットフォームが各ビルドタスクに全新的なインスタンスを割り当て、各タスクが互いに影響し合わないようにします。リソース不足によるタスク失敗を心配する必要がなくなり、リソース不足によるタスクのキューイングも回避できます。
2. 従量課金制
ビジネスの谷間(夜間や退勤後)には、実行するタスクがほとんどなく、またはまったくないため、リソースがアイドル状態になり無駄が生じます。サーバーレスの考え方は、実際に発生した価値に対してコストを支払うことです。ビルドが実際に発生した時にのみコストが発生します。
3. 運用保守不要
サーバーレスの弾性は、リクエストに応じた水平スケーリングです。開発者は基盤のリソーススケジューリングや運用保守作業に注意を払う必要がなく、ビジネス開発と価値創造に専念できます。
Serverless-cd の技術アーキテクチャ
Serverless-cd はサーバーレスアーキテクチャのベストプラクティスに完全に準拠し、仕様とエコシステムのレベルで GitHub Action の実装を参照しています。以下は、Serverless-cd で Serverless Devs アプリケーションをデプロイする際の YAML の例です:
name: "Deploy Express application to FC"
steps:
- run: npm i @serverless-devs/s -g --registry=https://registry.npmmirror.com
- run: s -v
- run: echo ${{secrets.ALIYUN_ACCOUNTID}}
- run: echo ${{secrets.ALIYUN_AK}}
- run: echo ${{secrets.ALIYUN_SK}}
- run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNTID}} --AccessKeyID ${{secrets.SIMPLE_ALIYUN_AK}} --AccessKeySecret ${{secrets.SIMPLE_ALIYUN_SK}} -a default -f
- run: s deploy --use-local -y
Serverless-cd は古典的な Master Worker モデルとイベント駆動型アーキテクチャを採用しています。全体的なアーキテクチャは以下の通りです:
トリガー方法
トリガーはイベント駆動におけるプロデューサーの役割を担います。Serverless-cd は現在、3 種類のトリガー方法を提供しています:
1. Webhook による自動トリガー:
開発者は対応するトリガー条件を設定できます。たとえば、Master ブランチへの Push や Merge Request の作成などです。これは非常にアジャイルな開発とデリバリーの方法です。
2. Open API によるトリガー:
Serverless-cd プラットフォームのすべての機能は Open API を提供しています。開発者がエンタープライズ内で PaaS プラットフォームをより良く構築できるようにします。
3. CLI 経由のトリガー:
技術的な観点から、Serverless-Devs は本質的にコンポーネント化機能を提供する CLI ジョブです。コンポーネント化とは、ホットアップデートの仕組みを通じて開発者が自身の必要に応じて拡張できるようにすることです。Serverless-cd は開発者がカスタムコンポーネントを通じてコマンドラインから直接操作できるようにします。
もちろん、CloudEvents トリガーやタイミングトリガーなど、より多くのトリガータイプへの対応も計画しています。
Serverless(FaaS)プラットフォーム
FaaS プラットフォームは全体の核となる部分であり、イベント駆動におけるコンシューマーの役割を担い、古典的な Master Worker モデルを使用しています。
Function Compute(FC):https://www.aliyun.com/product/fc?
サーバーレスアーキテクチャにおける Master Worker モデルの利点
従来の Master Worker デプロイメントでは、マスターノードの高可用性を確保するために、ロードバランシングとヘルスチェックを備えた 3 つのノードをデプロイする必要がありました。サーバーレスアーキテクチャでは、リクエストに応じてインスタンスが自動的に弾性スケールするため、マスターノードが自然に高可用性を持ち、信頼性と柔軟性の面で大きな利点があります。
Master 関数の役割
Master 関数は本質的に HTTP タイプの関数です。全トラフィックのエントリーポイントとして、またシステム全体の頭脳として、非常に重要な責務を担っています。
1. セキュリティ
・パブリックネットワークのキー検証
Master が公開する URL アドレスはパブリックネットワークからアクセス可能です。悪意のあるリクエストを防ぐため、serverless-cd システムは URL 発行時に署名ルールも同時に配布します。悪意のあるリクエストは検証を通過できず、システムのセキュリティを確保します。
・VPC バインディング
VPC 環境へのバインディングもサポートしています。コードリポジトリと serverless-cd サービスを同じ VPC 環境にバインドし、Webhook 経由でトリガーします。パブリックネットワークのユーザーは直接アクセスできないため、ネットワークレベルでの完全なセキュリティを確保します。
2. リクエストのフィルター
Git リポジトリでは毎日さまざまなイベントが発生します。たとえば、新規 Issue の作成、コードの Push、Merge Request の作成などです。これらのアクションはすべて Webhook 経由でトリガーされ、開発者はルールを設定して関連イベントをフィルターできます。以下は例です:GitHub プラットフォームで Master ブランチにプッシュされたコードのみをトリガーします。
triggers:
github:
events:
- eventName: "push"
filter: 'body.ref in ["refs/heads/master"]'
3. ルート転送
Master 関数はリクエストを Worker 関数に配信する役割を担い、Worker 関数のすべての動作は Master 関数によって制御されます。
Worker 関数の役割
Worker 関数は本質的にイベント関数であり、Master 関数とのみ通信します。唯一の責務はパイプラインの処理であり、長時間実行が可能です。
カスタムパイプライン
serverless-cd はパイプラインのカスタマイズに 3 つの方法をサポートしています:
シェルスクリプト
シェルスクリプトは最も理解しやすく、最も広く使用されている方法です。
name: "shell example"
steps:
- run: echo Hello world
zx スクリプト
google/zx を使うと、JavaScript 構文でシェルスクリプトを記述できます。
name: "zx example"
steps:
- script: 'const listFile = await $`ls -la`; console.log(listFile)',
カスタムアプリケーション(npm パッケージ)による拡張
Serverless-cd は一般的な npm パッケージのカプセル化による拡張もサポートしています。DingTalk 通知、企業 WeChat 通知、OSS ファイルアップロードなどの汎用機能はすべてカスタムアプリケーションを通じて拡張できます。カスタムアプリケーションの本質は npm リポジトリに公開されたパッケージです。
name: "zx example"
steps:
- run: @serverless-cd/dingding
クイック体験
事前準備
serverless-cd のデプロイは完全にクラウドベースであり、依存するクラウドプロダクトもすべてサーバーレスです。
・Function Compute(FC):システム全体のコンピューティング能力は FC 上で実行されます。
・Simple Log Service(SLS):分散ログストレージサービスで、問題の特定と発見を支援します。
・Object Storage Service(OSS):ログ情報の保存に使用します。
・Tablestore:アプリケーションとタスクのクラウドデータ情報ストレージです。
ローカルデプロイ
1. Serverless Devs のダウンロードとインストール:npm install @serverless-devs -g(バージョンは 2.1.7 以上である必要があります)。詳細な手順については、Serverless Devs のインストールドキュメントを参照してください。
2. キー情報の設定:s config add。詳細な操作ガイダンスについては、「Alibaba Cloud キーの設定」を参照してください。
3. プロジェクトの初期化:s init serverless-cd
4. プロジェクトに入り、デプロイ:cd serverless-cd && s deploy
Serverless-cd ロードマップ
オープンソース共創
Serverless-cd は、サーバーレスアーキテクチャに基づく CI/CD の業界初の試みです。オープンソースリポジトリ(https://github.com/Serverless-Devs/serverless-cd)をご覧いただき、ぜひご参加ください。Serverless-cd はオープンソース化されたばかりで、まだ多くの改善点や作業が残っています。より多くの開発者の皆様とともに Serverless エコシステムを構築し、開発者がビジネス開発と価値創造に専念できる環境を実現していくことを楽しみにしています。
開発者はビジネス価値の創造により集中したい
Serverless Devs は CNCF のサンドボックスインキュベーションプロジェクトであり、2020 年に Alibaba Cloud によってオープンソース化されました。オープンでオープンソースのサーバーレス開発者プラットフォームであり、開発者にワンストップのサーバーレスアプリケーション開発サービスを提供し、現在のツールチェーンの課題解決を支援します。マルチクラウド製品をワンクリックで体験でき、サーバーレスプロジェクトを迅速にデプロイできます。
Serverless Devs プロジェクトは、アプリケーション開発、デバッグ、デプロイ、運用保守、モニタリングのフルライフサイクルソリューションを提供します。実際の利用において、アプリケーションのデプロイとデリバリーは依然として開発者にとって難しい問題です。開発者はアプリケーション開発と価値創造、すなわちコーディングとアプリケーション構築に集中したいのであり、アプリケーションのデプロイとデリバリーに時間を割きたくはありません。
Serverless-cd プロジェクトのリリース前、Serverless Devs プロジェクトは以下のリポジトリを通じて主流の CI/CD ツールと統合していました:https://github.com/Serverless-Devs/cicd。Jenkins、GitHub、GitLab などが該当しますが、これらの従来の CI/CD ツールを使用する場合、一般的に以下の問題に直面します:
1. リソース使用率が低い:ビルドマシンを事前に準備する必要があり、ビルドタスクがない時間帯はマシンリソースが無駄になります。
2. タスクのキューイング:リソース準備が不十分な場合、ビルドのピーク時にタスクのキューイング時間が長くなります。
3. アイソレーションが不十分:あるタスクが実行中に大量のコンピューティング/ストレージリソースを消費すると、他のタスクが失敗します。
4. セキュリティの問題:
a. プラットフォームが提供する CI/CD サービスを使用する場合:コードとビルドマシンが同じネットワーク環境になく、パブリックネットワークアクセスを開放する必要があるため、セキュリティ上のリスクが生じます。
b. ECS 仮想マシンデプロイ:複数のアプリケーションが同じインスタンスで同時にビルドされるため、悪意のあるアプリケーションが他のアプリケーションのコードにアクセスできてしまいます。
CI/CD パイプラインの 2 つの特徴
CI/CD パイプラインには 2 つの注目すべき特徴があります:
1. イベント駆動型
Webhook の受信による自動トリガーであっても、Open API の呼び出しによる手動トリガーであっても、CI/CD システムにとっては受動的に消費指示を受け取ります。
2. 業務のピークと谷が明確
CI/CD ビルドをトリガーするピークは通常勤務時間中に発生し、退勤後や夜間はビルドタスクが少なくなります。同時に、一部の実行に時間がかかるタスクや、大量の CPU とメモリリソースを必要とするタスクがあるため、事前の有効なキャパシティ見積もりが困難です。
・マシンリソースの準備が少なすぎる:リソース不足によりタスク実行が失敗するか、複数のタスクがリソースを奪い合って実行できません。
・マシンリソースの準備が多すぎる:十分に活用できず、アイドルリソースの無駄が生じます。
サーバーレスアーキテクチャに基づく CI/CD のメリット
サーバーレスアーキテクチャでは、CI/CD に以下のメリットがあります:
1. 自動弾性
サーバーレスプラットフォームが各ビルドタスクに全新的なインスタンスを割り当て、各タスクが互いに影響し合わないようにします。リソース不足によるタスク失敗を心配する必要がなくなり、リソース不足によるタスクのキューイングも回避できます。
2. 従量課金制
ビジネスの谷間(夜間や退勤後)には、実行するタスクがほとんどなく、またはまったくないため、リソースがアイドル状態になり無駄が生じます。サーバーレスの考え方は、実際に発生した価値に対してコストを支払うことです。ビルドが実際に発生した時にのみコストが発生します。
3. 運用保守不要
サーバーレスの弾性は、リクエストに応じた水平スケーリングです。開発者は基盤のリソーススケジューリングや運用保守作業に注意を払う必要がなく、ビジネス開発と価値創造に専念できます。
Serverless-cd の技術アーキテクチャ
Serverless-cd はサーバーレスアーキテクチャのベストプラクティスに完全に準拠し、仕様とエコシステムのレベルで GitHub Action の実装を参照しています。以下は、Serverless-cd で Serverless Devs アプリケーションをデプロイする際の YAML の例です:
name: "Deploy Express application to FC"
steps:
- run: npm i @serverless-devs/s -g --registry=https://registry.npmmirror.com
- run: s -v
- run: echo ${{secrets.ALIYUN_ACCOUNTID}}
- run: echo ${{secrets.ALIYUN_AK}}
- run: echo ${{secrets.ALIYUN_SK}}
- run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNTID}} --AccessKeyID ${{secrets.SIMPLE_ALIYUN_AK}} --AccessKeySecret ${{secrets.SIMPLE_ALIYUN_SK}} -a default -f
- run: s deploy --use-local -y
Serverless-cd は古典的な Master Worker モデルとイベント駆動型アーキテクチャを採用しています。全体的なアーキテクチャは以下の通りです:
トリガー方法
トリガーはイベント駆動におけるプロデューサーの役割を担います。Serverless-cd は現在、3 種類のトリガー方法を提供しています:
1. Webhook による自動トリガー:
開発者は対応するトリガー条件を設定できます。たとえば、Master ブランチへの Push や Merge Request の作成などです。これは非常にアジャイルな開発とデリバリーの方法です。
2. Open API によるトリガー:
Serverless-cd プラットフォームのすべての機能は Open API を提供しています。開発者がエンタープライズ内で PaaS プラットフォームをより良く構築できるようにします。
3. CLI 経由のトリガー:
技術的な観点から、Serverless-Devs は本質的にコンポーネント化機能を提供する CLI ジョブです。コンポーネント化とは、ホットアップデートの仕組みを通じて開発者が自身の必要に応じて拡張できるようにすることです。Serverless-cd は開発者がカスタムコンポーネントを通じてコマンドラインから直接操作できるようにします。
もちろん、CloudEvents トリガーやタイミングトリガーなど、より多くのトリガータイプへの対応も計画しています。
Serverless(FaaS)プラットフォーム
FaaS プラットフォームは全体の核となる部分であり、イベント駆動におけるコンシューマーの役割を担い、古典的な Master Worker モデルを使用しています。
Function Compute(FC):https://www.aliyun.com/product/fc?
サーバーレスアーキテクチャにおける Master Worker モデルの利点
従来の Master Worker デプロイメントでは、マスターノードの高可用性を確保するために、ロードバランシングとヘルスチェックを備えた 3 つのノードをデプロイする必要がありました。サーバーレスアーキテクチャでは、リクエストに応じてインスタンスが自動的に弾性スケールするため、マスターノードが自然に高可用性を持ち、信頼性と柔軟性の面で大きな利点があります。
Master 関数の役割
Master 関数は本質的に HTTP タイプの関数です。全トラフィックのエントリーポイントとして、またシステム全体の頭脳として、非常に重要な責務を担っています。
1. セキュリティ
・パブリックネットワークのキー検証
Master が公開する URL アドレスはパブリックネットワークからアクセス可能です。悪意のあるリクエストを防ぐため、serverless-cd システムは URL 発行時に署名ルールも同時に配布します。悪意のあるリクエストは検証を通過できず、システムのセキュリティを確保します。
・VPC バインディング
VPC 環境へのバインディングもサポートしています。コードリポジトリと serverless-cd サービスを同じ VPC 環境にバインドし、Webhook 経由でトリガーします。パブリックネットワークのユーザーは直接アクセスできないため、ネットワークレベルでの完全なセキュリティを確保します。
2. リクエストのフィルター
Git リポジトリでは毎日さまざまなイベントが発生します。たとえば、新規 Issue の作成、コードの Push、Merge Request の作成などです。これらのアクションはすべて Webhook 経由でトリガーされ、開発者はルールを設定して関連イベントをフィルターできます。以下は例です:GitHub プラットフォームで Master ブランチにプッシュされたコードのみをトリガーします。
triggers:
github:
events:
- eventName: "push"
filter: 'body.ref in ["refs/heads/master"]'
3. ルート転送
Master 関数はリクエストを Worker 関数に配信する役割を担い、Worker 関数のすべての動作は Master 関数によって制御されます。
Worker 関数の役割
Worker 関数は本質的にイベント関数であり、Master 関数とのみ通信します。唯一の責務はパイプラインの処理であり、長時間実行が可能です。
カスタムパイプライン
serverless-cd はパイプラインのカスタマイズに 3 つの方法をサポートしています:
シェルスクリプト
シェルスクリプトは最も理解しやすく、最も広く使用されている方法です。
name: "shell example"
steps:
- run: echo Hello world
zx スクリプト
google/zx を使うと、JavaScript 構文でシェルスクリプトを記述できます。
name: "zx example"
steps:
- script: 'const listFile = await $`ls -la`; console.log(listFile)',
カスタムアプリケーション(npm パッケージ)による拡張
Serverless-cd は一般的な npm パッケージのカプセル化による拡張もサポートしています。DingTalk 通知、企業 WeChat 通知、OSS ファイルアップロードなどの汎用機能はすべてカスタムアプリケーションを通じて拡張できます。カスタムアプリケーションの本質は npm リポジトリに公開されたパッケージです。
name: "zx example"
steps:
- run: @serverless-cd/dingding
クイック体験
事前準備
serverless-cd のデプロイは完全にクラウドベースであり、依存するクラウドプロダクトもすべてサーバーレスです。
・Function Compute(FC):システム全体のコンピューティング能力は FC 上で実行されます。
・Simple Log Service(SLS):分散ログストレージサービスで、問題の特定と発見を支援します。
・Object Storage Service(OSS):ログ情報の保存に使用します。
・Tablestore:アプリケーションとタスクのクラウドデータ情報ストレージです。
ローカルデプロイ
1. Serverless Devs のダウンロードとインストール:npm install @serverless-devs -g(バージョンは 2.1.7 以上である必要があります)。詳細な手順については、Serverless Devs のインストールドキュメントを参照してください。
2. キー情報の設定:s config add。詳細な操作ガイダンスについては、「Alibaba Cloud キーの設定」を参照してください。
3. プロジェクトの初期化:s init serverless-cd
4. プロジェクトに入り、デプロイ:cd serverless-cd && s deploy
Serverless-cd ロードマップ
オープンソース共創
Serverless-cd は、サーバーレスアーキテクチャに基づく CI/CD の業界初の試みです。オープンソースリポジトリ(https://github.com/Serverless-Devs/serverless-cd)をご覧いただき、ぜひご参加ください。Serverless-cd はオープンソース化されたばかりで、まだ多くの改善点や作業が残っています。より多くの開発者の皆様とともに Serverless エコシステムを構築し、開発者がビジネス開発と価値創造に専念できる環境を実現していくことを楽しみにしています。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
