はじめに

こんにちは。先日弊社でImmersion Daysを行ないました。

簡単に説明すると、弊社のようなAWSのパートナーがお客様にたいして、特定の技術についてのセミナーを行なうイベントとなります。
今回は、Auroraデータベースについて説明しました。数人程度の受講者にたいして中身の濃い話ができて、説明する我々も満足度の高いイベントでした。

その中で、お客様より面白い質問がありました。

「RDSインスタンスのGraviton CPUへの移行はおこなうべきか?」

AWSの資料は確認しているが、実際どうなんだろう? といったコメントも頂きました。

そのときの回答をベースにこの記事を書きました。

Graviton CPUへの移行はおこなうべき

個人としての回答は「強くYES」です。
インスタンスタイプによってはx64モデルしかない場合もあるのですが、まずはGravitonの利用を検討すべきです。
AWSの主張とおなじですね。

理由としてはシンプルで以下になります。
– 価格性能比が高い
– CPUの計算性能だけでなくI/O性能も高い(データベースではとても重要)
– ミドルウェアの検証をAWSが既にやってくれているのでCPU切替の敷居がとても低い

RDSであれば移行はとても簡単です。
弊社で扱っている案件でGraviton起因の深刻な問題にあったという話もあまり聞いたこともないです。
もちろんアプリケーションふくめた検証はおこなうべきだとおもいますが、実績も豊富になっているGravitonプロセッサはおすすめできます。
(はやくGraviton 4東京にきてほしいですね)。

なぜその回答に至ったかの無駄にながい話

結論と理由はシンプルなのですが、ここに来るまでには長い歴史があるので、その話も軽く書いておきます。
ちなみに自分はソフトウェア開発者とインフラエンジニアをあわせて30年近くIT業界で仕事してますが、半導体、CPU、コンパイラ関連の仕事をしたことがない半可通です。正確さに欠けるヨタ話にもなってるかとおもいます。きづいてないのでまちがってたらコメントやslack、twitterなどで教えてもらえるとうれしいです。

30年程前、CISC vs RISC という議論がありました。

「CISC(x86)のCPU命令セットは複雑なため性能があがらない。このため、命令セットをシンプルにしたRISCがこれから主流になる。」

ということでMIPS、SPARC、PA-RISC、Alpha、PowerPC、Itanium など様々なRISC CPUが開発されて提供されました。
ただ、これらはほとんど市場からの評価を得られませんでした。いまでも生き残ってるのはPowerPCだけです(それもIBMでのみ利用)。

うまくいかなかった理由としては、以下がありました。
– 当時Intelの半導体プロセス技術が世界一だったので微細化技術で他を圧倒した
– x86(x64)の命令セットをマイクロコード化して、RISC並の性能をだした
– Wintelという造語ができるくらい、WindowsはIntel x86(x64)に最適化されていた
– 当時無料のコンパイラはあまりなくあっても性能がひくかった

そういえば、Macはここらへん結構うまくやっていて
– MC680X0
– PowerPC
– Intel x86
– Apple Sillicon (ARM) <- いまのMac

とCPUアーキテクチャを変えてますが、移行期のCPUで動かすために、二重にバイナリを持つユニバーサルバイナリを提供することでCPUの差をうまくかくしていました。互換性問題あった気はしますが、そもそも昔のMacOS自体信頼性ひくかったのでCPUの問題が大きく炎上した記憶ないです(爆弾マークなつかしい)。

Macはおいといて、通常CPUをかえた場合はOS、アプリケーションもそれ用に買い直すか、ソースからコンパイルしなおす必要があります。
Sun Sparcとか、自分のいた界隈では一時期めちゃくちゃはやってたのですが、市場がひろがらず、今はなくなってしまいました。

この状況がかわるのは

  • 組み込み機器(携帯電話)の性能向上
  • LinuxなどのOSSの発展

が大きかったです。

現在Azure/AWS/Google CloudともにARMベースのCPUを提供していますが(AWSはGravitonがこれですね)、もともとARMは組み込み用途のCPUでした。ARMアーキテクチャのCPUは沢山あります。Nintendo SwitchのCPUもですね。ARM CPUは携帯電話/スマートフォンで圧倒的にシェアをもっています。

ARMはCPUのアーキテクチャを提供しますが、CPUの生産自体は、半導体装置の量産をおこなう会社がおこないます。
ESMと呼ばれるTSMC(台湾積体電路製造),FoxCon(鴻海精密工業)が有名です。台湾や韓国、そして中国でEMSの微細化技術は急速に発展していきIntelを越えるまでになりました。
ARM CPUアーキテクチャの優秀さと、ESMのプロセス技術の向上から、AWS Gravition CPU が登場するわけです。

もうひとつ、異なるCPUアーキテクチャが過去失敗した大きな理由、ソフトウェアの互換性問題は、OSSの発展という形で解消されています。特にサーバ用途でつかう場合、gccやLLVMといったCコンパイラ、Linux のような OS 、Apache、/MySQL といったミドルウェアがArm CPUに対応しています。

ただし、 AWS Graviton Technical Guide をみてもらえるとわかりますが、自分で1からARM環境に移行するのは考慮点が沢山あります。
そこで助かるのがAmazon RDSを始めとするおマネージドサービスになります。AWSにてテクニカルガイドにかかれているような検証が既に行なわれたサービスが簡単に利用できます。

そういえば、Thougworks社のraderでも ARMへの移行が Trial として推奨してました。
https://www.thoughtworks.com/radar/platforms/summary/arm-in-the-cloud

与太話がながくなりました。電力消費の話や、ブラウザの進化なども大事な話かとおもいますが、長いので止めておきます。

まとめ

いいたいこととしては
RDSのGraviton移行はとてもおすすめ。そこに行き着くまでには長い歴史があった。
です。

ではまた。