MicrosoftがKubernetesソフトウェア「Krustlet」をRustで開発している理由柔軟性、安全性、セキュリティの恩恵

Microsoft Azure部門のDeisLabsは、2020年4月に公開したオープンソースのKubernetesソフトウェア「Krustlet」を、「Rust」で開発している理由を解説した。

» 2020年06月18日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Microsoft Azure部門のDeisLabsは2020年4月29日(米国時間)、同月に公開したオープンソースソフトウェア「Krustlet」を、オープンソースのシステムプログラミング言語「Rust」で開発している理由を解説した。

 現在はv0.2.0が公開されているKrustletは、オープンソースの広く普及したコンテナ管理ツール「Kubernetes」でWebAssemblyモジュールを実行するためのツールだ。Kubernetesは、主にオープンソースのプログラミング言語「Go」で開発されており、多くのベンダーや企業でクラウドソフトウェアの実行に広く使われている。DeisLabsは、クラウドソフトウェアやKubernetesソフトウェアの作成にRustを使った事例はまだあまり紹介されていないことから、Krustletの事例を報告しようと考えたとしている。

WebAssembly(WASM)とは?

 WebAssembly(「WASM」と略される)は、任意のブラウザにダウンロードして実行できるコンパイル済みバイナリだ。高パフォーマンスのアプリケーションをブラウザ内で実行することを可能にし、現在、多くの主要Webアプリケーションで使われている。

 最近の開発の進展により、コンパイル済みWASMバイナリ(「モジュール」と呼ばれる)は、任意のシステムで実行できるようになった。Rustは、これらのバイナリのネイティブビルドをサポートする少数の言語の一つだ。このことから、WASMモジュールを実行するプロジェクトの多くが、Rustで作成されている。そのためにDeisLabsは、これらのプロジェクトのコードをKrustletプロジェクトに組み込める。DeisLabsはRustを選んだ主な理由の一つとして、このことを挙げている。

安全性とセキュリティ

 さらにDeisLabsは、Rustを選んだ別の理由として、Rustが強力な安全性とセキュリティを保証することも挙げている。

 Rustによるコーディング方法に習熟するとともに、コンパイラがいかに多くのバグや問題を防いでいるか分かるようになったと、DeisLabsは述べている。例えば、Rustコンパイラのおかげで、並行性に関連するさまざまなバグを回避できたという。

 またDeisLabsは、「Rustにガベージコレクタがあれば」と思うことも何度かあるが、クローニング、ボローイング、オーナーシップなどについて気にする必要がなく、Rustコンパイラの厳密なルールにより、数え切れないほどの苦労を避けられたとしている。

 「Rustの柔軟性、安全性、セキュリティは、ライフタイムやボローイングなどに関する厳密なコンパイラルールに従う必要があることや、ガベージコレクタがないことによる不便さを補って余りある。こうした機能は、クラウドソフトウェアプロジェクトに非常に必要な要素であり、これらのプロジェクトでよく見られる多くのバグの回避に役立つ」(DeisLabs)

Rustを使うかどうか、考慮すべきポイント

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。