Fastly CTOに聞く、同社がWebAssembly実行環境の「Lucet」をエッジコンピューティング環境として開発している理由とは?

2019年5月14日

CDNプロバイダとして知られるFastlyは先月(4月1日)、WebAssemblyのコンパイラとランタイムで構成される「Lucet」をオープンソースで公開。同社のエッジコンピューティング環境として開発を進めていることを明らかにしました

WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットです。

FastlyはこれをCDNのエッジにあるサーバ上で動作するように移植し、しかも50マイクロ秒(1マイクロ秒は100万分の1秒)以下でWebAssemblyモジュールが起動しメモリオーバーヘッドもわずか数キロバイトという非常に高速で軽量な実行環境とすることで、いわゆるパブリッククラウドのような大規模なコンピューティングリソースを持たないエッジ環境でも大規模に展開できるものとしています。

なぜ同社はWebAssemblyをエッジコンピューティング環境として選択し、開発を進めているのでしょうか。来日した同社CTOでLucetの開発を担当しているTyler McMullen氏にインタビューを行いました。

fig

特定の言語用プラットフォームにしたくなかったからWebAssemblyを選択

──── Lucetとはどういうものなのか、あらためて説明していただけますか?

McMullen氏 Lucetとは、WebAssemblyの事前コンパイラと、それに関連するツール群です。

Lucetという名前は、バイキングがロープや組ひもなどを作るために使った道具から由来しています。つまりコードを組み合わせて面白いものを作り出すようなもの、ということですね。

Lucetは非常に大規模な並列性と短い時間で終了するワークロードに特化しています。そのため50マイクロ秒以下で起動し、数千から数万以上同時に実行されることが想定されています。

──── Fastlyのエッジコンピューティング環境として、なぜWebAssemblyを選択したのでしょうか?

McMullen氏  プラットフォームを特定の言語のために構築する、ということをしたくなかったためです。よりジェネリックなプラットフォームとしてはJavaVMもありましたが、WebAssemblyのほうがよりジェネリックです。というのも、近い将来にはおそらくさらに多くの低レベルな型付け言語がWebAssemblyへコンパイルできるようになると思われるからです。

ただ、ガベージコレクション性能や高級言語を実装するのに必要な参照型など、現時点ではWebAssemblyに欠けているものもあります。しかし将来性という点で、業界はこの方向に進んでいると考えています。

私たちは数年前からこのプロジェクトに取り組んできていて、WebAssemblyのコンパイラや中間表現を用いたうえで、ほとんどオーバーヘッドのない(仮想マシンのような)分離技術を構築することができました。

実はNative Clientを検討していたが……

──── 数年前というとWebAssemblyの登場以前からLucetに取り組んでいたのですか?

McMullen氏 そうです。WebAssemblyより前、どのテクノロジが私たちの目的に適しているかを調べていました。その1つがNative Clientです。Native Clientはご存じですか?

──── はい。GoogleがWebブラウザ上で実装しようとしていたものですね(Native Clientは、GoogleがWebブラウザ上でx86バイナリを安全かつ高速に実行できる仕組みとして開発していた)。

McMullen氏 ええ。そこで私たちもそれを試してみることにして、Native ClientをWebブラウザから取り出してサーバへ組み込んだのです。そして動くようになった頃に、GoogleのNative ClientチームはもはやNative Clientには取り組んでおらず、WebAssemblyへ取り組むようになっていたことを知りました(笑)

──── そうなんですか! それは知りませんでした。

McMullen氏 そうなんですよ。まあ、じゃあ、それなら私たちもWebAssemblyをやってみようか、となったわけです(笑)

Mozillaと協力してWASIの開発にも取り組み

──── Lucetの開発ではMozillaと協業しているとのことですが。

McMullen氏 はい、これまで約2年ほど協力しあっています。Lucetの事前コンパイラにはMozillaの次世代コンパイラであるCraneliftを用いていますし、両社で開発にあたっています。

それに加えて私たちはいま新たな「WASI」(WebAssembly System Interface)仕様の開発にも取り組んでいます。これは非常にエキサイティングです。これは(UNIXなどの標準API仕様である)POSIX仕様に似ているもので、その第一歩を踏み出したところです。

参考:WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。Mozillaが呼びかけNode.jsらが賛同

Lucetの正式版はいつ登場?

──── Lucetはいつ正式版になる見通しですか?

McMullen氏 今年後半、もしくは来年早々といったところだと思います。コンパイラなどはすでに一定の水準に達していますが、問題はそれらをFastlyの巨大で複雑なシステムにどうやって統合するのか、というところにあるからです。

──── ありがとうございます。Lucetの登場を楽しみにしています。

関連記事

あわせて読みたい

WebAssembly Web技術 Web標準 Fastly




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本