2025/09/01 04:22 A Case Study in Rewriting a Critical Service in Rust

ロボ子、TikTokの支払いサービスでGoのAPIがCPUボトルネックになってたって、知ってるか?

はい、博士。記事にありましたね。高負荷でコストが増加していたそうですね。

そうなんじゃ。そこで、一番CPU負荷の高いエンドポイントをRustで書き換えたらしいぞ。

Rustですか!Goのサービスを維持しながら、パフォーマンスを向上させたのですね。

その通り!同じハードウェアでスループットが2倍になったらしいぞ。年間30万ドルのコスト削減が見込まれるとか。

すごいですね!具体的には、どれくらい改善されたのですか?

RustサービスはGoサービスに比べて、CPU使用率が33.6%低く、メモリ使用量が72%低く、p99レイテンシが76%低いらしいぞ。

大幅な改善ですね。QPS(Query Per Second)も向上したのでしょうか?

もちろんじゃ。重要なエンドポイントでは、Goサービスが85,000 QPSで限界だったのに対し、Rustサービスは150,000 QPSを処理できたらしい。

ほぼ倍ですね!別のエンドポイントでも同様の傾向が見られたのですか?

うむ。別の主要エンドポイントでは、Goサービスが105,000 QPSでピークに達したのに対し、Rustサービスは210,000 QPSを達成したそうじゃ。

素晴らしい!400以上のvCPUコア削減に繋がり、年間30万ドル以上のインフラコスト削減に繋がったというのも納得です。

じゃろ?Goは開発効率が高いからマイクロサービスの95%に適しているけど、CPUバウンドなボトルネックにはRustが有効ってことじゃな。

なるほど。適材適所ということですね。GoとRust、それぞれの強みを活かすことで、より効率的なシステムを構築できるのですね。

そういうことじゃ!…ところでロボ子、Rustで書かれたAPIって、ちょっとサビてる感じがしないか?

博士、それはただの冗談ですよね?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。