Fastly CTOに聞く、同社がWebAssembly実行環境の「Lucet」をエッジコンピューティング環境として開発している理由とは?
CDNプロバイダとして知られるFastlyは先月(4月1日)、WebAssemblyのコンパイラとランタイムで構成される「Lucet」をオープンソースで公開。同社のエッジコンピューティング環境として開発を進めていることを明らかにしました。
WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットです。
FastlyはこれをCDNのエッジにあるサーバ上で動作するように移植し、しかも50マイクロ秒(1マイクロ秒は100万分の1秒)以下でWebAssemblyモジュールが起動しメモリオーバーヘッドもわずか数キロバイトという非常に高速で軽量な実行環境とすることで、いわゆるパブリッククラウドのような大規模なコンピューティングリソースを持たないエッジ環境でも大規模に展開できるものとしています。
なぜ同社はWebAssemblyをエッジコンピューティング環境として選択し、開発を進めているのでしょうか。来日した同社CTOでLucetの開発を担当しているTyler McMullen氏にインタビューを行いました。
特定の言語用プラットフォームにしたくなかったから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の登場を楽しみにしています。
関連記事
あわせて読みたい
[速報]Google、本日から大阪GCPリージョン正式運用開始を発表。東京に続いて国内2カ所目。日本語による24時間365日のサポートも開始
≪前の記事
「VMware Cloud on Dell EMC」発表。オンプレミス向けにハードウェア込みのマネージドサービス。Dell Technologies World 2019