MEGAZONEブログ
Learnings from developers adopting AWS Graviton at scale
AWS Gravitonを大規模に採用した開発者からの学び
Pulisher : Cloud Technology Center イ・ヨンジン
Description:Graviton プロセッサーの使用、開発およびテスト環境での使用について参加者と話す Chalk Talk セッション
はじめに
AWSが発表したARM architecture CPUであるGravitonについて、実際のAWSの社内の開発者を通じて、実際のアプリケーションにおいてどのようにアプローチすべきか、どのようにGravitonを活用すべきかを確認したいと思い参加しました。
セッションの概要紹介
Chalk Talkセッションでは、Gravitonプロセッサの使用、特に開発およびテスト環境での使用について聴衆と話し合いました。 その多くは、Gravitonが提供するコスト削減とパフォーマンスの向上、そしてそれを実際にどのように測定できるかを議論しました。
また、Gravitonプロセッサへの移行過程で発生する可能性のある問題、例えば、特定のソフトウェアや言語の互換性の問題、パフォーマンスの測定方法などについても話しました。 参加者は、Gravitonを使用することで実際にどのような利点が得られるのか、そしてその過程で発生する可能性のある課題について深く議論することで、多くの洞察を得ることができました。
Gravitonは64bit ARM architectureを持つCPUです。チップの設計において、顧客のフィードバックと開発者の協力を通じて継続的に発展しているそうです。
Gravitonを利用する理由はいろいろありますが、これを要約すると、以下のスライドのようになります。 仮想化ではなく、実際のcoreであり、汎用的な活用においては最も優れた性能を保証してくれます。 また、AWSの自社生産CPUであるため、Intel/AMDのように高価に購入する必要がなく、ARMの特徴である低消費電力設計により、他のCPUと比較して最大60%以上のエネルギー対効率を誇ります。
ただ、Intel/AMD系列のx86 CPU基準で作られたdockerなどは、デプロイ時にmulti-CPU architectureの形でパイプラインを構成する必要があります。 これもあまり心配する必要がないのが、EKSではCodePipeline parameterを利用して区別してデプロイできるようにオプションが用意されています。
性能的な比較を見ると、C6iとC7gの比較グラフを示しました。Intel/AMD系列では、CPU仮想化により完全な並列処理ができず、メモリバスの共有により遅延が発生する可能性があります。Gravitonは物理コアのままであり、メモリバスの分離により、元のCPUが持っている性能をそのまま出せるという利点があります。
ソフトウェア的に見ると、やはりGravitonが公開された年と比較して差がありすぎるCentOS 7やJava 8ではうまく動作しない可能性があります。アプリケーションの安定した運用のためには、できるだけ最新のOSとJavaのバージョンを使用することをお勧めします。最新のOSおよびJavaでは、ARM CPU、特にGravitonの検証は終わっており、非常に安定して動作しています。ちなみに、今年2023年にはGraviton4がKeynoteで紹介されました。 このような最新のGravitonの効果を見るためには、既存のアプリケーションとOSは移行が必要です。
すでに多くのお客様のプログラムやアプリケーションがGravitonを活用できるようにアップデートされています。
Gravitonの適用をアプリケーション別に見てみると、まず、native AWSサービスであるRDS、Aurora、OpenSearchなどはすでにGravitonの準備ができているので、instance typeでGravitonを選択するだけです。Lambdaは比較的問題なく動きますが、JNIやモジュールやlibraryの確認が必要です。Linux陣営ではArm64 AMIを選択することで比較的簡単に活用できます。やはり一番難しいのは.NETに代表されるWindows環境と言えますね。 今後対応できるように開発が行われているとはいえ、効率と安定性を確保するためにはやはりLinuxへの移行がおすすめです。
まとめると、Gravitonをうまく活用するためには、native AWSサービスをそのまま使うか、最新のLinux OSを活用することになります。
セッションを終えて
このセッションのキーポイントをまとめると、次のようになります。
・Gravitonプロセッサの使用
・Gravitonプロセッサを開発及びテスト環境でどのように使っているかについて話しました。
・結局、最新のOS及びDriverにアップデートすることが非常に重要である。
・コスト削減及び性能向上
・Gravitonが提供できるコスト削減及び性能向上の効果について説明します。
・性能測定
・Gravitonに転換する際、パフォーマンスをどのように測定し、評価するのかについての議論
・互換性の問題
・特定のソフトウェアやプログラミング言語とGravitonの互換性の問題について議論します。
・移行過程の課題について
・Gravitonに移行する過程で予想される課題について議論します。
実際の使用事例と経験の共有
・参加者はGravitonを使用した実際の事例と経験を共有しました。
一行要約 : 出来れば最新のOS/Libraryのアップグレードを通じて、コスト対性能の良いGravitonをうまく活用しよう。