[レポート?] ふたつの CMP303 Nitro System セッションから読み解く 2019 年の AWS コンピュート基盤の変化 #reinvent

re:Invent 2019 では Nitro System を扱った技術セッション CMP303 があったのですが、実は CMP303 は 2018 年の re:Invent でも、同じタイトルで設定されていたのでした。2019 年のキーノートで熱く語られるほどの存在になった Nitro System。両者を比較して、ここ 1 年でどう変化したかを探ります。(注:この記事はポエム特集関連記事です)
2019.12.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

みなさん、Nitro 使ってますか!(挨拶

C5/M5/T3 世代の EC2 や、AWS Lambda / Fargate を使ってる方は、間違いなく使っていると思います。そんな AWS の基本たるコンピュート基盤、Nitro System。今年の re:Invent では実に 3 つのキーノートで触れられるなど、もはやマニアックな存在とは言えない AWS の立役者と言えるのではないでしょうか。

そんな Nitro System を扱ったセッション、CMP303 "Powering Next-Gen EC2 Instances: Deep Dive into the Nitro System"。こちらについては既に弊社の森田が詳細なレポートを挙げていますので、詳しくはご覧頂ければと思います。

ですが実は、 CMP303 というセッションは昨年の re:Invent 2018 でも、同じタイトルで講演されたのでした。

ここでは両方のセッションを比較しつつ、今年 2019 年で Nitro System が、つまりは AWS のコンピュート能力がどう変化したのか。今年の CMP303 では何を強く伝えようとしていたのか。読み解いていきたいと思います。
ぼくのつたない英語力故、誤解しているところもあるかと思いますので、話半分にご笑読していただきつつ、詳しくは両セッションとも同録があがってますのでそちらをご鑑賞いただければと思います。

ちなみに「Nitro ってなんぞ」っていう方がもしいましたら、re:Growth で話してきた内容の下記拙記事を見て頂けますと幸いです!

Agenda

  • Nitro の基本設計はそのまま。薄く軽く、セキュア
  • 水平方向の進化:対応アーキテクチャは Intel,AMD,ARM (Graviton) で変わらず
  • 垂直方向の進化:CPU、I/O、ネットワーク……パフォーマンスの向上
  • What's Next……は無し
  • 語られなかったもうひとつのもの:Firecracker は…?

1. Nitro の基本設計に大きな変化無し

2018 と 2019、両方の CMP303 で語られた Nitro システムの構成について、語られた内容はほとんど同じでした。スライドもほぼ使い回しで、2019 年の変化や Simple Icon の更新に伴う変更などにとどまっています。
「非常に軽く、薄い(Thin)ハイパーバイザ」「KVM をベースに徹底してハードウェアオフロードされている」ということも変わらず強調されていました。

一方で、注目すべき変化もありました。

"All new Instance launches use the Nitro System" という記述が強調される

「(今年)新しく公開された全てのインスタンスタイプに、Nitro システムが使われている」というメッセージです。

昨年はちいさく、箇条書きのひとつとして書かれていただけでしたが、今年はフォントが大きくなっています。ただのデザイン変更ともとれますが、メッセージとして独立させる価値があると判断された(思い直された)のでしょう。

UEFI セキュアブートの説明がなくなる

Nitro Security Chip の説明のところで、昨年は UEFI ブートシーケンスにおいて Root of Trust が何故重要か、という説明を、パワポ芸を駆使しつつ説明していました。パワポかどうかは知りませんが!
これが今年は、まるっと削除されています。ただしセキュアの重要性はずっと強調されていたので、恐らく時間配分の都合で削除されただけかなと思われます。Nitro のセキュアさは AWS Outposts がよって立つところですので、むしろ「語り尽くされた」という判断なのでしょう。

メンテナンス性の強調

UEFI の説明の代わりに追加されたのがメンテナンス性の話(「Managing the EC2 fleet」)でした。ここでは「各 Nitro パーツのソフトウェアアップデートは無停止で行うことができる」という話をしていました(特に明言してませんが、ハードウェアパーツも当然活線交換可能でしょう)。
AWS は相当メンテナンス性に気を遣っているようで、この章以前の段階でも「Nitro system allows us to maintain a common code base」という話もしていました。

一方でよく考えると、x86 プロセッサと Arm プロセッサの互換性はないはずで、それでもこれだけメンテナンス性能を誇っているのだから、きっと両プロセッサ・アーキテクチャの非互換性部分を CPU カード(所謂ゲタ)やコントローラで吸収するなどの工夫があるのだろうな、、、という想像をしています。
そこに関する情報はいまのところ聞こえてこないのですが、いずれ聞いてみたい話です。

2. 水平方向の進化・垂直方向の進化

2018 年の時点で、AMD インスタンスも Arm インスタンスもありましたので、アーキテクチャの幅が広がったわけではありません。ただし特に Arm プロセッサへの対応が進み、特別扱い(A ファミリ)をやめた(C/M/R ファミリの一員になった)というのは大きいと思います。 ARM についてはベアメタルも出ていますし、micro VM の Firecracker は既に Arm 対応を進めています。ECS / EKS は時間の問題でしょうし、そのうち AWS Lambda なども対応してきそうですね! こちらの話については弊社岩田の記事が大変興味深いので、こちらもあわせてご覧ください。

垂直方向としては、各アーキテクチャで順当に新インスタンスタイプが投入されています。ベアメタルインスタンスも選択肢が増えました。
興味深いところとしては、Intel アーキテクチャの C5 インスタンスに上位サイズ(12xlarge、24xlarge)は Cascade Lake 世代のコアが使われており(その前は Skylake コア)、HPC ・機械学習などの重いワークロードに特に向いているという話をしているところです。昨年は「AMD と Arm が向いているところはこれ」という説明があったのみで、「普通は Intel のインスタンスタイプ使うでしょ?」と暗黙的に言っているようでした。

今年になって AMD(汎用あるいはメモリ最適化向け)、ARM(水平分散向け)インスタンスの種類が増えたために、Intel プロセッサのインスタンスの位置づけをし直したとも取れますが、HPC 方向のワークロードはキーノートでも強調されていたところなので、今後 AWS はこの 3 分野に住み分けさせていくつもりなのだろうなと想像できます。

HPC ワークロードといえば I/O 性能の進化も見逃せませんね。EFA(Elastic Fabric Adapter)も今年になってからの対応ですし、I/O 特化の I3en インスタンスも今年登場しています。

3. 今年は「What's Next?」は無し

2018 年の CMP303 は、「What's Next?」として AWS Outposts が紹介されました。実は 2017 年の CMP332 においても「What's Next?」のスライドはあり、恐らくそれに準じたのだろうと勝手に想像しています。

ところが今回はナシです。これまでに上げた内容と勘案すると、Nitro は黎明期を過ぎて必要な要素が全てそろい、今後は順当な進化を遂げていくのだろうと想像しています。

順当な進化と言えばもうひとつ、今年の CMP303 では Firecracker についてまったく語られませんでした。
これは別に重要度が下がったという話ではなく、Firecracker を扱う独立したセッションが複数存在するからだと思われます。ざっと検索するだけでも以下の 3 つが見つかりました。うちふたつは当ブログでもレポート記事が上がっています。

ほかにも Fargate のセッションで Firecracker にふれられたりと、もう Nitro の文脈だけで語られる存在ではないということですね。

まとめ

re:Invent 2019 の技術セッション、CMP303 "Powering Next-Gen EC2 Instances: Deep Dive into the Nitro System" を少し斜めから見てみました。華々しくキーノートで取り上げられた一方で、今年一年の進化は革新と言うより堅調な進歩であると言えると思います。

ただし、今後も AWS のコンピュート基盤であり続けることにはかわりありません。少なくとも、新しい基盤がでてくるまでは。
特性の異なる 3 種類のプロセッサを適材適所で配置し、セキュアでないと成り立たない AWS Outposts や Enclaves のようなサービスの礎となる Nitro は、今後も進歩し続けていくと思われます。楽しみですね!