Axumで実現するハイパフォーマンスなSSE

1.6K Views

October 08, 24

スライド概要

profile-image

ユニークビジョン株式会社 テックリード。 業務でRust書きつつ、チームの生産性を向上させるような改善を推し進めています。 取るに足らないツイートが多いですが、技術的な話や最近勉強したことをつぶやきます。 第25回世界コンピュータ将棋選手権 9位。 ヤクルトスワローズ/将棋/キャンプ/DQW/謎解き/リアル脱出ゲーム

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Axumで実現する ハイパフォーマンスなSSE Osaki.rs #1 Rustを使ったWeb開発のLT会 ユニークビジョン株式会社 テックリード 山本 一将(@kyamamoto9120)

2.

⾃⼰紹介 山本一将|焚き火を愛するエンジニア 𝕏 : kyamamoto9120 ユニークビジョン株式会社 テックリード 2015年 世界コンピュータ将棋選手権 9位 2024年 LINE API Expert 認定 ヤクルトスワローズ/将棋/キャンプ/DQW/謎解き Copyright ©Unique Vision Company, All Rights Reserved. 2

3.

弊社 : Rust がプロダクトに使われて 7 年 Copyright ©Unique Vision Company, All Rights Reserved. 3

4.

昨今の Rust の状況 Rust の情報は充実してきた! Copyright ©Unique Vision Company, All Rights Reserved. 4

5.

オススメの最新書籍! Copyright ©Unique Vision Company, All Rights Reserved. 5

6.

本⽇のテーマ あの本には紹介されない 細かい情報を紹介していこう…! Copyright ©Unique Vision Company, All Rights Reserved. 6

7.

本⽇のテーマ Server-Sent Events Copyright ©Unique Vision Company, All Rights Reserved. 7

8.

Axum で Server-Sent Events を実装する

9.

Server-Sent Events とは サーバーからクライアントへ 自動的にデータを送信するための技術 引用元:https://www.geeksforgeeks.org/difference-between-server-sent-events-and-websockets-in-html5/ Copyright ©Unique Vision Company, All Rights Reserved. 9

10.

Axum での実装 Copyright ©Unique Vision Company, All Rights Reserved. 10

11.

Axum での実装 Sse::new して tokio_stream を 返すだけ Copyright ©Unique Vision Company, All Rights Reserved. 11

12.

Axum での実装 stream が返すのは sse::Event 型 Copyright ©Unique Vision Company, All Rights Reserved. 12

13.

Rust で実装するメリット

14.

SSE の利⽤パターン SSE っていつ使われますか? Copyright ©Unique Vision Company, All Rights Reserved. 14

15.

SSE の利⽤場⾯と⾔えば… LLM Copyright ©Unique Vision Company, All Rights Reserved. 15

16.

LLM と⾔えば… 最強の I/O バウンド処理! Copyright ©Unique Vision Company, All Rights Reserved. 16

17.

I/O バウンドの処理と⾔えば… Tokio ランタイム!! Copyright ©Unique Vision Company, All Rights Reserved. 17

18.

⽐較してみる ● 実行環境 ○ Docker ○ CPU : 0.25、メモリ : 256 MB に制限 ● 処理内容 ○ リクエストをエコーする API ○ 1 文字ずつ、50ms 間隔で送信 ○ リクエストは UUID v4 ■ レスポンスは最低 1,600 ms かかる ● 実装 ○ Python : Fast API + uvicorn ○ Rust : Axum Copyright ©Unique Vision Company, All Rights Reserved. 18

19.

ATTENTION! Python を悪く言う意図は ありません Copyright ©Unique Vision Company, All Rights Reserved. 19

20.

Python (Fast API) Copyright ©Unique Vision Company, All Rights Reserved. 20

21.

Rust (Axum) Copyright ©Unique Vision Company, All Rights Reserved. 21

22.

まとめ

23.

まとめ POINT 01 Axum での SSE の実装方法を紹介 POINT 02 Tokio ランタイムは I/O バウンドな処理に最適化 POINT 03 Python と比べて圧倒的なパフォーマンス! Copyright ©Unique Vision Company, All Rights Reserved. 23

24.

主催 LT 会「UV Study」の紹介 Copyright ©Unique Vision Company, All Rights Reserved. 24

25.

ユニークビジョン積極採⽤中です! Copyright ©Unique Vision Company, All Rights Reserved. 25