Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust on Lambda 大きめCSV生成
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Atsushi Yokota
July 19, 2022
Programming
1.6k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rust on Lambda 大きめCSV生成
「Rust、何もわからない... #3」資料
Atsushi Yokota
July 19, 2022
More Decks by Atsushi Yokota
See All by Atsushi Yokota
在庫の最適化を実現する SaaSデータ基盤の裏側
atsuyokota
0
250
Athenaで実現する時系列データのパフォーマンス改善
atsuyokota
0
240
Other Decks in Programming
See All in Programming
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
継続モナドとリアクティブプログラミング
yukikurage
3
640
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.4k
FDEが実現するAI駆動経営の現在地
gonta
2
220
共通化で考えるべきは、実装より公開する型だった
codeegg
0
280
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
240
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
5.4k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.2k
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
170
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
57k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
The Invisible Side of Design
smashingmag
301
52k
Amusing Abliteration
ianozsvald
1
240
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Unsuck your backbone
ammeep
672
58k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Transcript
Rust on Lambda 大きめCSV生成 コケたら立ち上がるまでが技術者 “ “ フルカイテン株式会社 横田
Atsushi Yokota バックエンドエンジニア 2 • 2020年10月 フルカイテン入社 • FULL KAITEN
V3の新規開発に携わり、Rustによる GraphQLサーバーの構築やアーキテクチャーの設計を 行う • 現在は、データ基盤を担当し、ビックデータ処理を PySparkで構築、スクラムマスターも兼任している 自己紹介
3 在庫を利益に 変えるクラウド 今ある在庫で 売上・利益を最大化! データや帳票の 集計は不要! 運用定着まで 徹底サポート! EC・店舗・倉庫、
全ての在庫をAIで予測・分析し、 商品力をワンクリックで見える化。 とは
1. アーキテクチャー概要 2. CSV生成フロー 3. Rust on Lambda 4. CSV生成部分での工夫
Agenda
5 アーキテクチャー概要 Frontend ・Next.js ・React etc データ変換 Athena Aurora PostgreSQL
Redshift Fargate Python Step Functions SQS Lambda ETL 集計処理 データ基盤 Fargate Step Functions S3 Glue GraphQL APIサーバー Rust
actix-web 6 Lambda導入前のCSV生成フロー[Before] • 数十万件の出力をする場合があり、メモリをかなり多めに確保する必要があった • リクエストの集中でサーバー負荷が一気に上がっていた ブラウザ CSV生成 CSVファイル
GraphQL PostgreSQL
Webサーバーの安定化とCSV生成の高速化を実現 actix-web 7 Lambda導入後のCSV生成フロー[After] ブラウザ PostgreSQL 署名付きリンク GraphQL S3 Rust
on Lambda SQS 書き込み CSV生成 アップロード 起動 CSVファイル (ポーリング) メッセージ送信 読み込み
リクエストパラメーターをハッシュ化 8 ジョブ管理機能 データベースに保存 生成済みのCSVを返却 SQSにメッセージを送信 リクエスト重複あり リクエスト重複なし
Rust on Lambda
▪ lambda_runtime ▪ tokio 10 AWS Lambdaのカスタムランタイムで実行 Rustのカスタムランタイム https://github.com/awslabs/aws-lambda-rust-runtime 依存
ライブラリー カスタムランタイムとは Lambdaで標準でサポートされていない言語であっても、 ランタイムのコードと関数をアップロードすることで、Lambdaを使うことができる。 ▪ serde ▪ rusotoやaws sdk
11 実装例 出典: https://github.com/awslabs/aws-lambda-rust-runtime メイン関数からハンドラー関数を実行 ハンドラー内でロジックを記述
12 Lambdaの更新 Rust on Lambda ECR PUSH
13 RustでLambdaを使うメリット Lambdaの標準対応の言語ランタイム (Node.js、Python, Goなど) より起動が早い 出典: AWS Lambda battle
2021: performance comparison for all languages (cold and warm start) メモリフットプリントが少な く、インスタンスサイズが 小さめでも問題がない Lambdaのイメージサ イズが他言語に比べ て小さい 仮想マシンが確保しや すい(はず) 01 02 03
14 RustでLambdaを使うときのデメリット 開発環境では直接アップロード コンパイルに時間がかかる CIを通すと確認まで時間がかかる
15 苦労したこと(現在は解消している) 開発開始時期(2021年4月)が早く、actix-webのtokio 0.2.5だった。 lambda_runtimeのtokioバージョンと不一致のため、サンプル通りにうまく行かなかった。 actix_rtを使用して、実現していた ...
• 100万件のCSVでも処理可能に • 同一リクエストパラメーターなら、一瞬でダウンロード可能 16 CSV生成部分での工夫 メモリ使用量を減らすために、 マルチパートアップロードで S3に分割送信 分割アップロード
Rust on Lambda ECR Lambdaへの移行結果
Rust on Lambdaは 第一線で活躍中 結論
Rustチャレンジしたい人募集中! 一緒に世界の大量廃棄問題を解決しましょう! https://note.com/fullkaiten_re フルカイテン公式note