1K Views
October 08, 24
スライド概要
ユニークビジョン株式会社 テックリード。 業務でRust書きつつ、チームの生産性を向上させるような改善を推し進めています。 取るに足らないツイートが多いですが、技術的な話や最近勉強したことをつぶやきます。 第25回世界コンピュータ将棋選手権 9位。 ヤクルトスワローズ/将棋/キャンプ/DQW/謎解き/リアル脱出ゲーム
Axumで実現する ハイパフォーマンスなSSE Osaki.rs #1 Rustを使ったWeb開発のLT会 ユニークビジョン株式会社 テックリード 山本 一将(@kyamamoto9120)
⾃⼰紹介 山本一将|焚き火を愛するエンジニア 𝕏 : kyamamoto9120 ユニークビジョン株式会社 テックリード 2015年 世界コンピュータ将棋選手権 9位 2024年 LINE API Expert 認定 ヤクルトスワローズ/将棋/キャンプ/DQW/謎解き Copyright ©Unique Vision Company, All Rights Reserved. 2
弊社 : Rust がプロダクトに使われて 7 年 Copyright ©Unique Vision Company, All Rights Reserved. 3
昨今の Rust の状況 Rust の情報は充実してきた! Copyright ©Unique Vision Company, All Rights Reserved. 4
オススメの最新書籍! Copyright ©Unique Vision Company, All Rights Reserved. 5
本⽇のテーマ あの本には紹介されない 細かい情報を紹介していこう…! Copyright ©Unique Vision Company, All Rights Reserved. 6
本⽇のテーマ Server-Sent Events Copyright ©Unique Vision Company, All Rights Reserved. 7
Axum で Server-Sent Events を実装する
Server-Sent Events とは サーバーからクライアントへ 自動的にデータを送信するための技術 引用元:https://www.geeksforgeeks.org/difference-between-server-sent-events-and-websockets-in-html5/ Copyright ©Unique Vision Company, All Rights Reserved. 9
Axum での実装 Copyright ©Unique Vision Company, All Rights Reserved. 10
Axum での実装 Sse::new して tokio_stream を 返すだけ Copyright ©Unique Vision Company, All Rights Reserved. 11
Axum での実装 stream が返すのは sse::Event 型 Copyright ©Unique Vision Company, All Rights Reserved. 12
Rust で実装するメリット
SSE の利⽤パターン SSE っていつ使われますか? Copyright ©Unique Vision Company, All Rights Reserved. 14
SSE の利⽤場⾯と⾔えば… LLM Copyright ©Unique Vision Company, All Rights Reserved. 15
LLM と⾔えば… 最強の I/O バウンド処理! Copyright ©Unique Vision Company, All Rights Reserved. 16
I/O バウンドの処理と⾔えば… Tokio ランタイム!! Copyright ©Unique Vision Company, All Rights Reserved. 17
⽐較してみる ● 実行環境 ○ 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
ATTENTION! Python を悪く言う意図は ありません Copyright ©Unique Vision Company, All Rights Reserved. 19
Python (Fast API) Copyright ©Unique Vision Company, All Rights Reserved. 20
Rust (Axum) Copyright ©Unique Vision Company, All Rights Reserved. 21
まとめ
まとめ POINT 01 Axum での SSE の実装方法を紹介 POINT 02 Tokio ランタイムは I/O バウンドな処理に最適化 POINT 03 Python と比べて圧倒的なパフォーマンス! Copyright ©Unique Vision Company, All Rights Reserved. 23
主催 LT 会「UV Study」の紹介 Copyright ©Unique Vision Company, All Rights Reserved. 24
ユニークビジョン積極採⽤中です! Copyright ©Unique Vision Company, All Rights Reserved. 25