Amazon EC2の最新基盤として「VMware Cloud on AWS」や「EC2ベアメタル」の実現にもつながったAWSの「Nitro System」とは?
Amazon Web Services(AWS)は、2017年11月に開催されたイベント「AWS re:Invent 2017」で、同社クラウド独自の基盤技術である「Nitro System」(ナイトロシステムと発音するようです)の存在を明かしました。
Nitro Systemは仮想マシンを提供するAmazon EC2を実現するためのサブシステムです。もともとAmazon EC2を実現するためにホストサーバで稼働していたソフトウェアを、AWSが独自に開発したハードウェアにオフロードしたもの。
Amazon EC2はAWSの中核的なサービスですから、Nitro SystemはAWSにおける最新の基盤技術と言っていいでしょう。
そしてNitro SystemによってAmazon EC2を実現するための機能がホストサーバからオフロードされたからこそ、Amazon EC2でのベアメタルサーバが実現し、ベアメタルサーバが実現したからこそVMware Cloud on AWSが実現した、と説明されています。
と同時に、Amazon EC2のホストサーバから処理がオフロードされたことで、ホストサーバの能力のほとんどすべてがユーザーのインスタンスに振り分けられるようになり、Amazon EC2と関連するネットワークやストレージ性能の向上にも寄与しています。
では、そのクラウドに最適化されたサーバのサブシステムであるNitro Systemとはどういうものか、AWS re:Invent 2017の公開された資料動画などからまとめてみました。
Nitro Systemで、Amazon EC2のための機能をハードウェア化
Amazon EC2ではハイパーバイザの下位に、インスタンスごとに適切なストレージやネットワークとやりとりするための処理、セキュリティのための処理や監視のための処理などが行われています。
もともとAmazon EC2のためのネットワーク、ストレージ、セキュリティの3つの機能はすべて、Amazon EC2のホストサーバ上でソフトウェアで実装され、処理されていました。

しかし最新のC5インスタンスでは、このAmazon EC2のための処理が専用のハードウェアであるNitro Systemにオフロードされています。そしてハイパーバイザもNitro Systemに最適化されたKVMベースのNitro Hypervisorに置き換えられました。

公開されている動画「(1) AWS re:Invent 2017: C5 Instances and the Evolution of Amazon EC2 Virtualization (CMP332) - YouTube」によると、Nitro SystemはKVMベースの軽量なハイパーバイザであるNitro Hypervisorと、ネットワークやストレージの処理を行うNitro Card、そしてサーバのファームウェアやイメージの整合性チェックなどを含むNitroセキュリティチップなどから構成されています。
Nitro Systemによってホストサーバから独立したハードウェアでセキュリティを確保しているため、より高いセキュリティレベルが実現されているとも説明されています。

段階的にAmazon EC2の機能をハードウェアへオフロード
ホストサーバ上のソフトウェアからNitro Systemへのオフロードは段階的に行われました。
最初にNitro Systemが使われ始めたのは2013年に登場したC3インスタンスで、ネットワークの機能がホストサーバ上からNitro Systemへ移動しました。

結果としてネットワーク帯域幅が20%、レイテンシが50%向上し、ネットワーク負荷の変動も減ったとのことです。
2015年に登場したC4インスタンスで、ストレージ処理もNitro Sysemへ移行。ネットワークと同様にインスタンスに対するストレージの入出力は、Nitro System経由で検証され、適切なストレージに振り分けられるようになります。

ここまでのNitro Systemは、市販のASICを組み合わせて作られていました。
AWSはこのASICを作っていたAnnapurna labsを2015年初頭に買収します。数百万台規模のサーバを展開するAWSにとって、ASICを外部から調達するよりもベンダをまるごと買収してしまうほうが最終的には低コストで将来性もあると判断したためです。

そして2017年に登場したC5インスタンスでは、最後のセキュリティ関連の機能もNitro Systemへ移され、ソフトウェアで実装されていたAmazon EC2の基盤のNitro Systemへの移行が完了します。下記の図でも、右側のホストサーバ上で実装されているソフトウェアがほとんどなくなっていることが分かります。

これによりAmazon EC2でのベアメタルサーバの提供が実現したと同時に、VMware Cloud on AWSも実現したわけです。

クラウドはもともと安価な汎用サーバを用いて構築されるものでした。しかしそのサーバをクラウドに最適化していった結果、独自のASICを開発し搭載するクラウド専用サーバへと変化していったことになります。
関連動画
あわせて読みたい
Google、Dockerイメージに対するテスト自動化フレームワーク「Container Structure Tests」オープンソースで公開
≪前の記事
資金が尽き12月に廃刊するはずだったLinux Journal、一転して支援者により存続へ、「Linux Journal 2.0」を宣言