エッジでコードをデプロイするのに役立つリソース <br />GitHub Actions for Compute のご紹介

Fastly のサーバーレスコンピューティング環境でのコードの構築、テスト、デプロイを目的とする Compute の基本理念は、開発者に可能な限りシームレスで人間工学的に優れたエクスペリエンスを提供することにあります。私は Developer Relations チームの一員として開発者のニーズに応えるため、Fastly プラットフォーム上に数多くのツールを構築していますが、Compute は開発者のエクスペリエンスを改善できるエリアを特定するのに最適です。Fastly に迅速にアプリケーションをデプロイするという実際のニーズに応え、GitHub Actions for Compute を今回ご紹介します。

この 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 ではプロセスが若干異なります。

Compute必要なビルドステップ

Compute では、Fastly にコードをプッシュする前にコードを Wasm バイナリにコンパイルする必要があります。Fastly CLI でこれを行うコマンドを提供できます。また、CLI を開発マシンや CI 環境で使用して Compute でアプリケーションを構築・デプロイすることが可能です。

デプロイを自動化するには CI プラットフォームに Fastly CLI をインストールし、コードをコンパイルし、Fastly のアカウントへのアクセスに必要な認証トークンを安全に保管するよう指示する必要があります。

GitHub Actions for Compute活用

GitHub Actions は使いやすく、GitHub ソースコードレポジトリとの統合も簡単なことから、最も人気の高い CI システムのひとつとなりつつあります。例えば、loveholidays の開発チームはすでに GitHub Actions で Compute を使用したデプロイワークフローを構築しています。

GitHub Actions の魅力は、コミュニティによって作成されたオープンソースワークフローの巨大なライブラリで、GitHub はこれをプロダクト化してマーケットプレイスとして提供することで、開発者が自分のプロジェクトに関連する Actions を見つけやすいようにしています。これにより、サードパーティツールを CI ワークフローにこれまで以上に簡単に実装できるようになりました。

そこで私たちは GitHub Actions for Compute を構築しました。従来の CI アプローチに比べ、Actions を使用することで手動によるアプリケーションのデプロイから完全に自動化されたデプロイワークフローへの移行がより簡単になります。Web アプリケーションのデプロイから、サーバーサイドのロジックをユーザーに近いエッジにプッシュするプロセスに至るまで、慣れたパターンを使用できるので非常に便利です。

実際に試してみましょう

GitHub Actions を使用して自動デプロイを Compute で構築しているアプリケーションに実装したい場合は、以下の手順で Rust プロジェクト向けに自動デプロイをセットアップできます。

  1. .github/workflows フォルダーに以下のコンテンツを使用してワークフロー設定を作成します。

name: Deploy Application
on:
  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 にデプロイします。

2. Fastly API のトークンを FASTLY_API_TOKEN という名前の変数としてレポジトリ設定の「Secrets」に追加します。新しいバージョンのサービスを作成して有効化する許可が必要です。

3. コミットしてレポジトリのメインのブランチにプッシュします。

4. レポジトリの「Actions」タブでログをモニタリングします。ビルドとデプロイに成功した場合、コンソールにその Fastly サービスのドメインが表示されます。注記 : 現在 Compute は限定提供版のみのご利用が可能で、Fastly CLI には特定のバージョンの Rust ルールチェーンが必要です。今後 CLI の新しいリリースに伴い、使用するツールチェーンのバージョンに変更があった場合、それに合わせて Actions のワークフローを更新する必要があります。

今後について

今回のリリースを基に、テストやプレビューブランチ、コミットステータスなど、利用可能な継続的統合ツールの拡大を目指します。問題に遭遇した場合や、新しい機能に関するお問い合わせについては、GitHub の問題トラッカーまたは Developer Hubフィードバックフォームを通じてご連絡ください。

Kailan Blanks
Developer Relations、Senior Software Engineer
投稿日

この記事は5分で読めます

興味がおありですか?
エキスパートへのお問い合わせ
この投稿を共有する
Kailan Blanks
Developer Relations、Senior Software Engineer

Kailan は Fastly の Developer Relations チームの Software Engineer として、顧客向けツールやコンテンツを担当しています。職務の一環として Fastly Developer Hub や、サーバーレスコンピューティング環境である Compute@Edge 関連のオープンソースプロジェクトも複数管理しています。プライベートでは、電動スケートボードでコーンウォール地方を回るのが趣味です。

Fastly試してみませんか ?

アカウントを作成してすぐにご利用いただけます。また、いつでもお気軽にお問い合わせください。