もう待たない!ガシャポンのように手軽なMicroVM「Firecracker」入門
firecracker-microvm/firecracker
まるでガシャポンのカプセルを回すように、手軽に高速な環境を手に入れたい!そんな時に役立つのが「Firecracker」です。
ガシャポンを回す前に、中身が何なのか知っておくことが重要ですよね。Firecrackerは、一言でいうと「超軽量・超高速の仮想マシン(MicroVM)を動かすための技術」です。
通常、仮想マシンというと、OS全体をまるごとエミュレートするため、起動に時間がかかったり、リソースを多く消費したりします。これはまるで、巨大なカプセルを回すようなもの。
しかし、Firecrackerは、必要最低限の機能だけを備えた「MicroVM」を作り出します。OSの起動に必要な部分だけを起動するので、起動時間がミリ秒単位と非常に高速です。さらに、セキュリティも高く、まるでガシャポンに仕込まれた不正防止機能のように、他のカプセル(MicroVM)に影響を与えないようになっています。
さて、どうしてこの「超高速・高セキュリティ」なMicroVMが、ソフトウェアエンジニアにとって便利なのでしょうか?
サーバーレス関数の超高速起動
サーバーレス(Lambdaなど)は、必要な時にだけコードを実行してくれる便利な仕組みです。しかし、初回起動時に少し時間がかかることがあります。
Firecrackerを使えば、この起動時間を極限まで短縮できます。まるで、狙ったカプセルを瞬時に取り出すように、ユーザーのリクエストに対して即座にレスポンスを返せます。
コンテナのセキュリティ強化
Dockerなどのコンテナは手軽で便利ですが、同じカーネルを共有しているため、セキュリティ面で課題がありました。
Firecrackerは、コンテナごとに独立した軽量な仮想マシンを提供することで、コンテナを隔離します。これにより、セキュリティリスクを大幅に下げることができます。例えるなら、カプセル一つ一つが頑丈な鍵付きのケースに入っているようなものです。
ガシャポン台を見つけたら、あとは回すだけ!Firecrackerも同じように、まずは環境を整えましょう。
Linux環境が必須
FirecrackerはLinux上で動作します。
仮想化技術の有効化KVM(Kernel-based Virtual Machine)という仮想化技術が有効になっている必要があります。
egrep -c '(vmx|svm)' /proc/cpuinfoを実行して、結果が1以上であることを確認してください。
いよいよ、実際にFirecrackerを動かしてみましょう!
Firecrackerを動かすには、PythonのSDKを使うのが簡単です。
from firecracker.microvm import MicroVM
# 仮想マシンを作成する
vm = MicroVM()
# 仮想マシンの設定
vm.add_cpu(1) # CPUコアを1つ設定
vm.add_memory(128, 'MB') # メモリを128MB設定
vm.add_kernel(path='vmlinux') # Linuxカーネルのパスを設定
vm.add_drive(path='rootfs.ext4') # ルートファイルシステム(ディスクイメージ)のパスを設定
# 仮想マシンを起動!
vm.start()
# 仮想マシンにコマンドを送信
vm.exec_sync('ls -l /')
# 仮想マシンを停止
vm.stop()
このコードは、まさにガシャポンを回して、カプセル(MicroVM)を起動し、中身(コマンド)を確認して、また片付ける、という一連の流れを表しています。
ガシャポンを極めるには、いくつかコツがありますよね。Firecrackerも同じです。
自作OSの実行
FirecrackerはLinuxカーネルだけでなく、自分で作ったカーネルも動かすことができます。
コンテナランタイムとの連携
containerd や crun といったコンテナランタイムと組み合わせて使うことで、DockerコンテナをMicroVM上で動かすことができます。これが、先ほど説明したセキュリティ強化の具体的な方法です。
Firecrackerは、サーバーレスやコンテナ技術の未来を切り開く、非常に面白い技術です。ぜひ、あなたもガシャポンを回すように、色々な設定を試して、その超高速な世界を体験してみてください!