Rust + ARMプロセッサーのエキサイティングな世界
Published: 2024-02-20 13:04:30

AWSは、より高速で高性能なGraviton 3 ARMベースのインスタンスを提供すると発表した。ARMシステム上でアプリケーションを実行することで、より良いパフォーマンスを低価格で提供することができ、効率が向上します。私たちは、アプリケーションをRustに移行することで、システム効率の最適化をさらに一歩進めました。Rustは、その効率性と安全性から人気が高まっているプログラミング言語です。ビジネスの観点からは、これは運用コストの削減とメンテナンスコストの削減につながります。

スクリーンショットは、X86-64からARM64に移行するRustアプリケーションのCPU使用率を示しています。新しいARMプロセッサでコンテナがCPU使用率を報告し始めた瞬間をグラフで見ることができる。これは注目に値する変化です。ワークロードは、何百万人ものユーザーにサービスを提供する、高同時実行のRust API Webアプリケーションです。

![Graph showing CPU usage by container decreasing over time](https://www.pubnub.com/cdn/3prze68gbwl1/3GPHqHEE8BrS2itTVZH0UO/90c45e13498b206afbf892e39cc72a8d/Screenshot_2023-05-03_at_15.21.59.png)

ARMプロセッサーとは何か？
--------------

通常、私たちはAMDやIntelのようなプロセッサを思い浮かべる。ARMプロセッサは、スマートフォン、タブレット、Raspberry Pi、マイクロコントローラ、開発ボード、さらには一部のラップトップなど、さまざまなデバイスで使用されている汎用CPUです。ARMプロセッサは、エネルギー効率と低消費電力で知られており、エネルギーコストを節約したい組み込みシステムを構築する企業にとって魅力的な選択肢となっている。AWSは、これらの新しい効率的なプロセッサを使用するインセンティブを与えるために、コストフォロワーオファーとして、より低い時間単価を提供しており、IoTと高性能エコシステムに貢献している 。

![Chart showing ARM CPU usage at 0.00223 compared with X86-64 at 0.00706](https://www.pubnub.com/cdn/3prze68gbwl1/2kC7xyDDUfXoCYYzGpb2oT/20abce8acdb4e57c10eb157c70ed67e8/Screenshot_2023-05-03_at_15.22.07.png)

ARM64とX86-64の効率を比較すると、顕著な違いがわかります。これでも十分でなければ、さらに進化させることができる。ターゲットCPUオプティマイザを追加することで、より新しいARMアーキテクチャのCPU命令を利用するバイナリに追加命令をビルドすることができ、ツールチェーンと互換性を強化することができます 。これについては、後日の記事に譲る。一方、ここで示す結果は、一般的なARM64ターゲットの代表的なものである。

さて、Rustについて話そう。
---------------

Rustはオープンソースのプログラミング言語であり、GitHubのコミュニティは活発で、Rustの効率性と安全性を維持するために尽力しています。つまり、Rustのコードは素早く実行され、他の言語ほどバグやセキュリティ脆弱性がない。Rustはシステム・プログラミングに適しており、オペレーティング・システムやデバイス・ドライバ、その他の低レベルのソフトウェアを構築するのに適しているため、プログラマーは特にRustを好む。厳格な安定性メモリ安全性チェッカーがあるため、Rustは大規模アプリケーション開発にも魅力的です。Rustはデバッグがかなり難しいと言えるが、バグを減らすことで所有コストを下げることができる。マイクロソフトは、最も一般的なバグのタイプを分析した。バグの70％以上がメモリ管理の失敗に直接関係しているという。Rustは、このようなバグをコンパイル時に検出するメモリ安全性の仕組みを提供している。

では、なぜRustがARMプロセッサへの移行に適しているのでしょうか？Rustは、ARMを含むほぼすべてのターゲットプラットフォームで動作するようにコンパイルできます。ARMベースのシステムは、従来のx86ベースのシステムとは異なるため、x86システムでうまく動作するソフトウェアがARMシステムではうまく動作しない可能性があります。Rustの効率性とARMプロセッサ上でうまく動作する能力は、ワークロードをARMベースのシステムに移行しようとしている企業にとって最適な選択肢です。私たちは、Rustへの移行が成功した例を複数見てきました。RustアプリケーションをARM上で実行することで、CPUパフォーマンスが40%向上しました。

CI/CDとデュアルアーキテクチャ
-----------------

移行プロセスを円滑に進めるには、デプロイのベストプラクティスに従うことが重要です。私たちは、CI/CDシステムにデュアル・アーキテクチャー・パイプラインを含めることにしました。これにより、DockerプラットフォームでLinux AMD64とLinux ARM64の両方を指定できるようになりました。私たちのオーケストレーション・レイヤーはKubernetesなので、これは素晴らしいことだ。

![Code showing value = arm in a kubernetes cluster](https://www.pubnub.com/cdn/3prze68gbwl1/BCDo8QiUJmGvVpqzz3so8/ddc0250662b4456b269b6f2b34f56cc5/Screenshot_2023-05-03_at_15.22.15.png)

デプロイメントにARMノードを指定するために、ノードセレクタにYAMLコンフィギュレーションを使用し、デプロイメントマニフェストにYAMLトレランスを含めます。これは自動ではありません。我々のSREチームは、X86-64とARM64のイメージを同時に提供するデュアルアーキテクチャCI/CDパイプラインの開発に成功した。さらに、チームが実装した YAML アノテーションを使用して、アプリケーションのデプロイ時にノードグループをターゲットにすることができる。SRE チームのおかげで、製品開発チームは ARM ノードグループへのデプロイをシームレスに行えるようになりました。これにより、簡単な設定でワークロードをARMノードグループに移行できるようになります。、当社の開発プロセスにおけるランタイムと自動化の重要な進歩を示すものです 。

Rust + ARMは業界をリードするテクノロジーペア
---------------------------

Rustはもともと、ウェブブラウジングを改善するためにMozillaによって開発されました。ARMプロセッサは、スマートウォッチや一部の自動車を含む消費者向けデバイスのエコシステムで使用されることが一般的に知られており、組み込み開発を行うチームに人気があります。複数のテクノロジーを組み合わせ、活用することで、特筆すべき利点を得ることができる。テクノロジーが進歩し、私たちを取り巻く世界を変えていくのは驚くべきことだ。

今日、大規模なアプリケーションを展開する際に最大限の効率と信頼性を得るには、RustとARMの組み合わせが、多くのリアルタイムのユースケースで無敵です。ARMプロセッサに移行することで、大幅なコスト削減とパフォーマンスの向上を実現できます。Rustを活用し、導入のベストプラクティスに従うことで、企業はこの新しいテクノロジにスムーズに移行できます。では、RustとARMプロセッサのエキサイティングな世界に飛び込む準備はできましたか？

PubNubはどのようにお役に立てるでしょうか？
========================

この記事は[PubNub.comに](https://www.pubnub.com/blog/the-exciting-world-of-rust-arm-processors/)掲載されたものです。

PubNubのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイス向けにリアルタイムのインタラクティブ機能を構築、提供、管理できるように支援します。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。