この記事は Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー 2 日目の記事です。
本稿では Fastly Compute (旧 Compute@Edge) がリリースされてから今日に至るまでの出来事について、Fastly の公式ブログを眺めながら理解を進めていきます。今年 6 月に入社した身として Compute の歴史について知らないことも多いので、記事を執筆することで自身の学びを深めることも一つの目的です。
TL;DR
- 2018年 11月 Terrarium が利用可能に (対応言語は Rust)
- 2019年 11月 Compute@Edge がプライベート β 版で登場 (Rust のみのサポート)
- 2020年 10月 Compute@Edge 正式ローンチ (AssemblyScript が β 版でサポート追加)
- 2021年 7月 JavaScript が β 版としてサポート追加
- 2022年 4月 JavaScript が正式ローンチ / KVStore が β 版として提供開始
- 2022年 8月 Go のサポートが追加 (※TinyGo)
- 2023年 2月 ConfigStore が GA で提供開始
- 2023年 4月 KVStore が GA で提供開始
- 2023年 9月 Standard Go のサポートが追加
注1: 公式ブログの情報をおおまかにまとめると上記の通りですが、ここには記載されていない話も多い(例:Cache API が利用可能になっている)ので、それらは別途後日の記事で触れていきたいと思います。
注2: 2022 年に JavaScript が正式ローンチを迎えたことを受けて、AssemblyScript は今年 5 月に deprecated となり 7 月でサポートが終了しています
2018年
過去のブログを遡ると、2018年の年末から Terrarium や Rust での WebAssembly に言及した記事が登場し始めます。
- 2018.11.20 How edge innovation sparked Fastly Labs
- 2018.12.10 How Terrarium reframes the compiler and sandbox relationship
- 2018.12.12 Edge programming with Rust and WebAssembly
この時点では Compute@Edge というプロダクト名は登場せず、あくまで Terrarium を使って Rust で WebAssembly を実行する環境が使える話が中心に紹介されています。
2019年
2019年前半には、WebAssembly が実際にどのようなプロセスでネイティブコードに変換されて実行されるかの解説や、当時の Wasm ランタイムである Lucet についての紹介記事などが投稿されています。
- 2019.2.7 Guide for C and Rust programmers
- 2019.3.28 Lucet Takes WebAssembly Beyond the Browser | Fastly
- 2019.5.15 The lifecycle and performance of a Lucet instance
その後 2019 年 11 月に Compute@Edge が private beta として登場します。記事の中で既に Wasmtime や Cranelift といった現在も使われているソフトウェアが登場しており、内容的に古さを感じずに読むことができます。1
- 2019.11.6 Beta" A New Serverless Compute Environment
- 2019.11.12 Fastly and Partners Form Bytecode Alliance
- 2019.12.17 Compute@Edge Demo: New Serverless Compute Environment | Fastly
2020年
2020 年前半、ブログ記事の量が少し増えてきます。Rust 以外の言語対応の話が多めに記事になっている印象です。ローンチ後のフィードバックを受けた反応でしょうか。その他 Wasmtime や WASI, .witx フォーマットについての話なども解説されており勉強になります。
- 2020.3.3 How Lucet and Wasmtime make a stronger compiler, together
- 2020.4.28 Evaluating new languages for Compute@Edge ***
- 2020.5.21 From our community: top serverless trends and challenges
- 2020.5.29 How Fastly and the developer community are investing in the WebAssembly ecosystem ***
- 2020.6.29 Why Compute@Edge does not yet support JavaScript
- 2020.6.30 Leveling up observability with Compute@Edge
下期は 10/28 のブログで Compute@Edge が beta から正式ローンチに変わる点が一番大きなニュースです。正式ローンチに合わせて AssemblyScript 2 も beta としてローンチされています。Terraform 対応の強化などもこの時期から謳われてた模様。
- 2020.7.13 State at the edge ***
- 2020.7.27 Fastly's Cloud Edge Platform: Apps You Shouldn't Build
- 2020.9.1 Deploying network error logging with Compute@Edge
- 2020.10.26 How Compute@Edge is tackling the most frustrating aspects of serverless
- 2020.10.28 Compute@Edge: New CLI, Terraform API and Language Support | Fastly
- 2020.10.29 Meet AssemblyScript: your next computing language
- 2020.11.11 The power of serverless, 72 times over
- 2020.12.21 Porting JavaScript (or TypeScript) to AssemblyScript
- 2020.12.23Edge Native Applications: How to Improve Your Design
2021年
2021 年上期も色々な記事が投稿されますが、個人的にダントツで面白いのが "How we vetted Cranelift for secure sandboxing in Compute@Edge" です。特に、以下で解説されている Compute@Edge がどのように Cranelift を使ってセキュリティを担保しつつ高速にネイティブコードを動作させているかを解説している一節は、V8 Isolates で動く場合のエッジでのサーバレスのプロダクトとは仕組みが異なってくる部分なので、読んでみると面白いかもしれません。
This approach allows Compute@Edge to execute services efficiently with very fast startup times. This is possible because instead of relying on operating system processes (like modern browsers or some shared hosting platforms), containers (like many serverless cloud offerings), or entire virtual machines (like traditional unmanaged cloud hosting) to separate the different services and requests, we use lightweight inline sandboxing checks in native code. By doing so, native code from several services can safely coexist in a single OS process.
- 2021.1.27 Demos and starter kits: new ways for you to learn and build
- 2021.2.8 Introducing Compute@Edge Log Tailing for better observability and easier debugging
- 2021.4.6 Simplifying authentication with OAuth at the edge
- 2021.4.14 Compute@Edge: Company Insights on Serverless Environment | Fastly
- 2021.4.19 Compute@Edge: porting the iconic video game DOOM
- 2021.5.7 New ways to compose content at the edge with Compute@Edge
- 2021.5.10 Introducing GitHub Actions for Compute@Edge
- 2021.5.12 Build an Efficient & Portable Programming Language with Zig
- 2021.5.21 Stop a Wasm Compiler Bug Before it Becomes a Problem | Fastly
- 2021.5.25 Building on top of OAuth at the edge
- 2021.6.7 How we vetted Cranelift for secure sandboxing in Compute@Edge
- 2021.6.21 How to test site speed optimizations with Compute@Edge
下期は 7 月に JavaScript 対応が Beta 版として発表されるニュースが注目に値します。一時期話題になった Cloudflare Workers と比較した速度に関してのブログはこの時期に書かれていますね。
- 2021.7.16 New: Compute@Edge local testing
- 2021.7.29 Compute@Edge: The JavaScript Support you Demanded | Fastly
- 2021.8.2 Breaking it down: how — and why — to use Compute@Edge local testing
- 2021.10.27 Independent research firm names Compute@Edge a leader in new edge development platforms report
- 2021.11.1 Compute@Edge is now available to all with a free trial
- 2021.11.2 How to get started with Fastly real-time logging and Compute@Edge
- 2021.11.8 You can now test Compute@Edge code in Fastly Fiddle
- 2021.12.6 Lies, damned lies, and (Cloudflare) statistics: debunking Cloudflare’s recent performance tests
2022年
4月に JavaScript が Production 利用が可能になったと発表され、KVStore(Beta) も同時期にリリースされています。Compute に関するブログの量も過去最大に増えてます。この時期に Fanout や Glitch などのチームが Fastly にジョインしたことも大きなニュースです。他に、Compute の技術記事としては個人的には The Guardian: Our day hacking with Compute@Edge が Rust で Compute やってみた系の記事になっていて読みやすく、かつ興味深く読みました。
- 2022.1.5 Introducing Cloud Deploy: kickstarting a Compute@Edge project just got easier
- 2022.1.10 Bootstrap a Compute@Edge project with Fastly Fiddle
- 2022.2.2 Fastly + Glitch: now it’s easier than ever to build at the edge
- 2022.3.2 Better together: introducing our growing Compute@Edge partner ecosystem
- 2022.3.16 How we migrated developer.fastly.com from VCL to Compute@Edge
- 2022.3.30 Fastly + Fanout: why real-time messaging and edge computing are an amazing combination
- 2022.4.6 Meet the next iteration of JavaScript on Compute@Edge
- 2022.4.12 How Fastly and Fauna are helping Climatiq enable data-driven climate decisions using distributed and serverless technologies
- 2022.4.13 Three questions that make edge state easier to design
- 2022.4.14 Introducing the Compute@Edge KV Store — global, persistent storage for compute functions
- 2022.5.11 Taming third parties with a single-origin website
- 2022.5.19 Fastly announces acquisition of Glitch: A future of “yes code” at the edge
- 2022.6.1 The Guardian: Our day hacking with Compute@Edge
- 2022.6.1 How Edgemesh achieved 5x improvement in time-to-first-byte with Compute@Edge
- 2022.6.9 Unlocking Real-Time at the Edge
- 2022.6.16 ESI and the story of libraries built for the edge
- 2022.6.23 OpenTelemetry Part 1: Making the Edge less distant
- 2022.6.28 Write less, do more at the edge: Introducing expressly
下期は 8 月の Go のサポート開始が Compute の大きなニュースです。また、JavaScript 周りの記事が非常に多くなっていますね。
- 2022.7.14 Introducing serverless Swift: Building on Compute@Edge with Andrew Barba
- 2022.7.21 OpenTelemetry Part 3: Using OpenTelemetry in Compute@Edge
- 2022.8.4 Compute@Edge: Go support has arrived!
- 2022.9.16 No-origin, static websites at the edge!
- 2022.9.20 Node.js-style HTTP interfaces for Compute@Edge
- 2022.9.21 Run your Next.js app on Fastly
- 2022.10.18 Gatsby on the Edge in under 2 minutes with Fastly
- 2022.10.24 Astro on the Edge in under 2 minutes with Fastly
- 2022.11.10 Introducing WebSocket Support for all Fastly customers!
- 2022.11.29 Effortless Debugging with the Compute@Edge Log Tailing UI, now in Beta!
2023年
今年に入って Config Store や KVStore が GA でリリースされます。他に今年の大きなアナウンスとしては、昨年発表された Go が TinyGo での提供だったのに対して、今年 9 月からは Standard Go のサポートが開始されたことも大きなニュースでした。
- 2023.1.31 Compute + Edge Messaging? Introducing Fanout
- 2023.2.14 Introducing Config Store: storing and updating configuration data at the edge just got better
- 2023.3.2 Host your Remix app on Fastly Compute@Edge
- 2023.3.23 Filter PNGs for Acropalypse using Compute@Edge
- 2023.4.5 Your most-requested update for Fastly developer accounts
- 2023.4.13 Introducing KV Store: Enabling powerful applications at the edge
- 2023.4.20 Dynamic Backends help you easily scale across multiple origin backends
- 2023.7.6 Announcing Unified Origin Observability Across Fastly’s Delivery, Compute and Security Services
- 2023.7.24 How to write Rust unit tests for your Compute@Edge application
- 2023.8.7 Fastly Stores power fast decisions and edge data access
- 2023.9.13 Announcing standard Go support for Fastly Compute
- 2023.9.19 Fastly Fanout makes stateful real-time communications easy
- 2023.11.27 Don’t just take our word for it — Forrester says that Fastly Compute is a “Leader”
なお、昨年よりもブログの記事数が減少していますが、これは恐らく公式ブログ以外にもブログや YouTube での情報配信を開始または活動強化しているためと思われます。公式ブログ外の内容について、もしご興味あればこちらもご覧ください。
まとめ
どの言語や機能がいつ利用可能になったのか、大体は把握していましたが月レベルの正確さでは把握できていませんでしたし、興味深い技術記事も豊富だったので、個人的には得るものが多い執筆でした。一方で 2018 年から現在までの過去ブログの記事のタイトルだけで 400 件ほどあったので読み込むのに時間がかかり、予定執筆時間は大幅にオーバーしてしまいました。二日目からこの調子なので、記事投稿を継続できるか心配です。
明日は Fastly Compute (旧 Compute@Edge) に関する国内外の関連記事・情報についてのまとめ記事を執筆予定です。
-
特に、"Guide for C and Rust programmers" は Wasm がどのようにネイティブコードとしてコンパイルされ実行されるかについて分かりやすく解説されています。 ↩
-
2022 年に JavaScript が正式ローンチを迎えたことを受けて、AssemblyScript は今年 5 月に deprecated となり 7 月でサポートが終了しています ↩