エッジでコードをデプロイするのに役立つリソース <br />GitHub Actions for Compute@Edge のご紹介
Fastly のサーバーレスコンピューティング環境でのコードの構築、テスト、デプロイを目的とする Compute@Edge の基本理念は、開発者に可能な限りシームレスで人間工学的に優れたエクスペリエンスを提供することにあります。私は Developer Relations チームの一員として開発者のニーズに応えるため、Fastly プラットフォーム上に数多くのツールを構築していますが、Compute@Edge は開発者のエクスペリエンスを改善できるエリアを特定するのに最適です。Fastly に迅速にアプリケーションをデプロイするという実際のニーズに応え、GitHub Actions for Compute@Edge を今回ご紹介します。
この GitHub Actions がもたらすメリットやこれまでの VCL デプロイワークフローとどう異なるのか、詳しく見てみましょう。
Infrastructure as Code = デプロイの自動化
Fastly のサービスを通じてエッジで実行されるロジックを VCL を使用して作成しているお客様の場合、ソース形式で VCL コードを Fastly に提供 (API 経由またはFastly コントロールパネルに入力) すると、Fastly は独自のコンパイラで VCL を高度に最適化されたセキュアな C 言語に変換し、ネイティブコードとして Fastly のエッジサーバーで実行します。
Web UI にコードを入力するのは便利かもしれませんが、複雑なサービスを構築しているお客様の多くは VCL を単なる「設定」ではなく、自社システム全体のアーキテクチャにおいて必要不可欠な要素と見なしています。Fastly で構築しているサービスが非常にシンプルであっても、コードを使用してあらゆるインフラストラクチャを構築するという最新の哲学に従えば、インフラストラクチャをソフトウェアとして考えているかどうかにかかわらず、インフラストラクチャの構築や管理をコードで行い、反復と自動化が可能な方法でデプロイすることで、さまざまなメリットが得られます。
「Infrastructure as Code」を実現する最先端のソリューションは主に、Travis や CircleCI、Jenkins、より最近では GitHub Actions などの継続的統合 (CI) システムがベースになっています。コードがレポジトリにプッシュされる度に CI サーバーでテストスクリプトやデプロイスクリプトが自動的に実行され、開発者は Fastly Command Line Interface (CLI) または API を使用してサービスをデプロイできるようになります。
VCL を使用している Fastly のお客様は、Terraform プロバイダーを使用することで、業界標準の方法でコードを使用してインフラストラクチャを管理できます。これまで、この方法で Fastly サービスへの変更がデプロイされてきましたが、Compute@Edge ではプロセスが若干異なります。
Compute@Edge で必要なビルドステップ
Compute@Edge では、Fastly にコードをプッシュする前にコードを Wasm バイナリにコンパイルする必要があります。Fastly CLI でこれを行うコマンドを提供できます。また、CLI を開発マシンや CI 環境で使用して Compute@Edge でアプリケーションを構築・デプロイすることが可能です。
デプロイを自動化するには CI プラットフォームに Fastly CLI をインストールし、コードをコンパイルし、Fastly のアカウントへのアクセスに必要な認証トークンを安全に保管するよう指示する必要があります。
GitHub Actions for Compute@Edge の活用
GitHub Actions は使いやすく、GitHub ソースコードレポジトリとの統合も簡単なことから、最も人気の高い CI システムのひとつとなりつつあります。例えば、loveholidays の開発チームはすでに GitHub Actions で Compute@Edge を使用したデプロイワークフローを構築しています。
GitHub Actions の魅力は、コミュニティによって作成されたオープンソースワークフローの巨大なライブラリで、GitHub はこれをプロダクト化してマーケットプレイスとして提供することで、開発者が自分のプロジェクトに関連する Actions を見つけやすいようにしています。これにより、サードパーティツールを CI ワークフローにこれまで以上に簡単に実装できるようになりました。
そこで私たちは GitHub Actions for Compute@Edge を構築しました。従来の CI アプローチに比べ、Actions を使用することで手動によるアプリケーションのデプロイから完全に自動化されたデプロイワークフローへの移行がより簡単になります。Web アプリケーションのデプロイから、サーバーサイドのロジックをユーザーに近いエッジにプッシュするプロセスに至るまで、慣れたパターンを使用できるので非常に便利です。
実際に試してみましょう
GitHub Actions を使用して自動デプロイを Compute@Edge で構築しているアプリケーションに実装したい場合は、以下の手順で Rust プロジェクト向けに自動デプロイをセットアップできます。
.github/workflows
フォルダーに以下のコンテンツを使用してワークフロー設定を作成します。
name: Deploy Applicationon: push: branches: [main] # change to your default branch name
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: 1.49.0 # current Rust toolchain for Compute@Edge target: wasm32-wasi # WebAssembly target
- name: Deploy to Compute@Edge uses: fastly/compute-actions@beta env: FASTLY_API_TOKEN: ${{ secrets.FASTLY_API_TOKEN }}
このワークフロー設定により、GitHub はレポジトリをフェッチし、Rust をインストールし、Rust アプリケーションをコンパイルして Compute@Edge にデプロイします。
2. Fastly API のトークンを FASTLY_API_TOKEN
という名前の変数としてレポジトリ設定の「Secrets」に追加します。新しいバージョンのサービスを作成して有効化する許可が必要です。
3. コミットしてレポジトリのメインのブランチにプッシュします。
4. レポジトリの「Actions」タブでログをモニタリングします。ビルドとデプロイに成功した場合、コンソールにその Fastly サービスのドメインが表示されます。注記 : 現在 Compute@Edge は限定提供版のみのご利用が可能で、Fastly CLI には特定のバージョンの Rust ルールチェーンが必要です。今後 CLI の新しいリリースに伴い、使用するツールチェーンのバージョンに変更があった場合、それに合わせて Actions のワークフローを更新する必要があります。
今後について
今回のリリースを基に、テストやプレビューブランチ、コミットステータスなど、利用可能な継続的統合ツールの拡大を目指します。問題に遭遇した場合や、新しい機能に関するお問い合わせについては、GitHub の問題トラッカーまたは Developer Hub のフィードバックフォームを通じてご連絡ください。