MicrosoftがKubernetesソフトウェア「Krustlet」をRustで開発している理由:柔軟性、安全性、セキュリティの恩恵
Microsoft Azure部門のDeisLabsは、2020年4月に公開したオープンソースのKubernetesソフトウェア「Krustlet」を、「Rust」で開発している理由を解説した。
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を使うかどうか、考慮すべきポイント
だが、Rustはいいことずくめではない。DeisLabsは、新しいクラウドソフトウェアプロジェクトでRustを使うかどうかを判断するに当たって重要な考慮点として、以下を指摘している。
- 非同期ランタイムがまだ少し不明確:現在、2つの選択肢があるが、いずれも一長一短がある。実装の細部の多くが特定のランタイムと結び付いており、いずれかのランタイムへの依存はロックインにつながる恐れがある。
- 学習曲線:適切なコーディング方法を身に付け、円滑に作業ができるようになるには、数週間にわたって勤勉に努力して学習する必要がある。前述したように、こうした学習によって得るものは大きいが、当初は苦労する。
DeisLabsは、これらの問題に対処する用意があるなら、次のプロジェクトでRustを使うことを、少なくとも検討しない手はないとしている。「どの言語にも長所と短所があるが、Rustを使うメリットは、こうした苦労を上回ると感じる」(DeisLabs)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
実装言語を「Go」から「Rust」に変更、ゲーマー向けチャットアプリ「Discord」の課題とは
ゲーマー向けチャットアプリケーション「Discord」では、基盤サービスの一つである「Read States」が十分に高速化できない問題が明らかになった。開発チームは既存のコードをさらに改善することで対応しようとした。だが、Rust言語で再実装したところ、最適化を施す以前からパフォーマンスが向上した。なぜだろうか。開発チームがその理由を語る。最も愛される言語は「Rust」――Stack Overflowが開発者調査結果を公開
開発者向けQ&Aサイト「Stack Overflow」が、2020年の年次開発者調査の結果を発表した。「Rust」はなぜ人気があるのか、Stack Overflowがユーザーのコメントを紹介
開発者向けQ&Aサイト「Stack Overflow」は、先ごろ発表した年次開発者調査の結果を受け、プログラミング言語「Rust」が人気を集めているさまざまな理由について、ユーザーの生のコメントを紹介した。速度を犠牲にせずにメモリ安全性を確保できる点が魅力的だが、それだけではない。