分散モノリスとWebAssemblyランタイムを用いた新しいアプリプラットフォーム「Wasmer Edge」登場。オーケストレーションもサービスメッシュも不要
今回は「分散モノリスとWebAssemblyランタイムを用いた新しいアプリプラットフォーム「Wasmer Edge」登場。オーケストレーションもサービスメッシュも不要」についてご紹介します。
関連ワード (従来、準拠、記述等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
WebAssemblyランタイム「Wasmer」の開発元であるWasmer社は、エッジロケーション上のデータセンターにWebAssemblyランタイムを展開し、分散モノリスなアーキテクチャを用いたサーバレス型の新しいアプリケーションプラットフォーム「Wasmer Edge」を発表しました。
The Cloud is dead, long live the Cloud!
Announcing Wasmer Edgehttps://t.co/VjGsbMwopy pic.twitter.com/5mTtKBBjsZ— Wasmer (@wasmerio) June 15, 2023
上記のツイートに示されているように、Wasmer Edgeは「The Cloud is dead,」(クラウドは死んだ)と従来のクラウドを否定した上で、高いスケーラビリティを備えつつ、Herokuのように簡単にデプロイできて、安価に利用できることが特長だと説明されています。
どのような仕組みなのか、見ていきましょう。
分散モノリスによるシンプルなデプロイとスケーラビリティ
Wasmer Edgeの発表を行ったブログ「The Cloud is dead, long live the Cloud! Announcing Wasmer Edge」では、今のクラウドはアプリケーションのデプロイに、KuberenetesのようなオーケストレーションやIstioのようなサービスメッシュ、プロキシ、サービスディスカバリなどを考慮する必要があり、あまりに複雑で、しかもこうした仕組みを持つ大手クラウドにロックインされてしまっており、それが高額な費用に転嫁されていると指摘します。
この複雑さを解決するためにWasmer Edgeが採用したのが分散モノリスなシステムです。
現状のクラウドネイティブなアプリケーションでは、それぞれ異なる機能を備えた複数のサービスが連携して1つのアプリケーションを構成するという分散システムの考え方が主流です。
しかし分散モノリスでは、1つのノードが単独のアプリケーションとなり、そこに必要な機能がすべて含まれています。その上でノード数が負荷によって増減することでスケーラビリティを実現するわけです。
これにより基本的に負荷に対するノードの増減だけを気にすれば良くなるため、オーケストレーションやサービスメッシュなどを不要にしたシンプルなデプロイを実現しています。
さらにWasmer Edgeはその名前の通り分散したエッジロケーション上の複数のデータセンターで構成されていますが、全体はWasmer Runtimeのレイヤで実装されたオーバーレイのメッシュネットワークで構成されており、それを支えるのが分散ネットワークのDNETだと説明されています。
これにより分散したエッジロケーション全体が、論理的には1つの分散モノリス基盤になっています。
POSIX対応のWebAssemblyランタイムによるアプリケーション基盤
分散モノリスを支えているもう1つの基盤が、Wasmerが提唱した、WebAssemblyでファイルやネットワーク、メモリなどのシステムリソースを抽象化する業界標準のAPI仕様である「WASI」(WebAssembly System Interface)を拡張してPOSIX対応にした「WASIX」です。
WASIXでは、POSIXで定義されているスレッドやソケット、フォークなどの多くの機能をWebAssemblyアプリケーションから利用できるため、Rust言語などWebAssemblyに対応した言語で、Linuxアプリケーションを開発するのと同じようにフル機能のアプリケーションを記述し、WebAssemblyにコンパイル可能です。
参考:WebAssemblyをPOSIX対応に拡張した「WASIX」登場、bashやcurl、WebサーバなどLinuxアプリが実装可能に。Wasmerが発表
POSIX準拠のおかげで、Linuxなどの既存の知識を用いて、WebAssemblyでモノリスなアプリケーションを容易に開発できます。これをWASIX対応のWebAssemblyランタイム、現時点ではWasmer Runtimeにデプロイすれば、そのまま実行可能なシンプルなアプリケーションランタイムが実現します。
Wasmer Edge上のWasmer Runtimeにデプロイすれば、前述のようにそのままスケーラブルな分散モノリスが実現することになります。
しかもWebAssemblyは最初から堅牢なサンドボックスの仕組みを備えた軽量な仮想マシンの仕組みを備えているため、従来使われていたハイパーバイザやコンテナなどのレイヤが不要となります。すると、これらのレイヤで発生していたオーバーヘッドもすべてなくなります。
Persistent volumesやPrivate Networkなども
今後の機能としてデータを保存するPersistent volumes、セキュアなプライベートネットワークを実現するPrivate Network、負荷がないときでもノードを0にせずに設定されたインスタンス数を維持するPersistent workloads、定期実行などを実現するScheduled tasks/cronjobsなどの機能提供が予定されています。
現時点でWasmer Edgeはアルファ版としてまだ開発途上であり、利用にはウェイトリストへの登録が必要です。