Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS LambdaでのRust利用
Search
forcia_dev_pr
September 02, 2021
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS LambdaでのRust利用
forcia_dev_pr
September 02, 2021
More Decks by forcia_dev_pr
See All by forcia_dev_pr
"書く文化"を仕組みで育てる──フォルシアの技術ブログ継続戦略
forcia_dev_pr
1
320
新しいおもちゃを見つけたい私がやっている情報収集
forcia_dev_pr
2
510
「Pythonの環境構築について」と記事作成で意識したこと
forcia_dev_pr
1
210
Neovim で VS Code みたいにコーディングする
forcia_dev_pr
1
250
なぜ・どうやって・何を書く? 〜技術記事を書く習慣の作り方〜
forcia_dev_pr
1
250
第8回ゆるふわオンサイト 解説スライド
forcia_dev_pr
0
300
第7回ゆるふわオンサイト解説
forcia_dev_pr
0
330
第6回ゆるふわオンサイト解説
forcia_dev_pr
0
330
よくわかるFORCIAのエンジニア旅行SaaSプロダクト開発編
forcia_dev_pr
0
1.5k
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
121
120k
エンジニアに許された特別な時間の終わり
watany
109
250k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Abbi's Birthday
coloredviolet
4
11k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Everyday Curiosity
cassininazir
0
390
sira's awesome portfolio website redesign presentation
elsirapls
0
490
Believing is Seeing
oripsolob
1
270
What's in a price? How to price your products and services
michaelherold
247
13k
Odyssey Design
rkendrick25
PRO
2
930
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
Rust で AWS Lambda 原 旅人(フォルシア株式会社 技術研究所) 2021.08.31 Shinjuku.rs #17
自己紹介 • 原 旅人 (Tabito Hara) • ソフトウェアエンジニア@フォルシア株式会社 ◦ 研究開発、顧客案件 •
活動領域 ◦ データ分析 ◦ コンテナ・Kubernetes(CKA/CKAD取得)・クラウド(AWS認定資格全12種取得) ◦ Rust ▪ 技術評論社Software Design 2020年6月号「入門! Rust」 • 現在、Rust 関連書籍を執筆中 ▪ 日経コンピュータ「新世代プログラミング言語の使いどころ 」 • https://xtech.nikkei.com/atcl/nxt/mag/nc/18/042800230/042800001/?P=2 2 前職では、スーパーコンピュータで 天気予報をするプログラムの開発 に14年間従事。
AWS Lambda とは? • AWS のサーバーレスサービスの要 ◦ サーバーレス: プログラムを実行するマシンを自分で用意する必要がない。 ◦
コードだけを用意すれば、それを動かすことができる。 • 実行回数とメモリ量x実行時間による従量課金 • zip でコードをまとめる or docker image で用意 ◦ AWS SAM (Serverless Application Model) で簡単に build, deploy できる • AWS 公式SDK: python, node.js, Go, Java など • Rust には rusoto という非公式ではあるが多くのAWSサービスをカバーするSDKがあ る。 ◦ AWS から Rust SDK(公式) のα版が発表 ▪ https://aws.amazon.com/jp/blogs/news/a-new-aws-sdk-for-rust-alpha-launch/ 3
rusoto を使ったRust による Lambda 関数 4
なぜ Rust で Lambda • 実行速度が速い! • メモリフットプリントが小さい ◦ lambda
は実行時間xメモリ量で課金されるので、実行時間が 短く、メモリ量が小さいとコストが抑えられる 世の中には既に同様の指摘をされている方がおられます • 「RustとLambdaの相性が良い7つの理由 〜RustでLambdaをやっていく〜」 https://zenn.dev/hinastory/articles/b603b76bf01ccc 5
他の言語のプログラムと比べる実験をしました • サーバーレスの鉄板の使い方 ◦ Lambda で DynamoDB の CRUD をするAPI
• 全く同じ機能のプログラムを4つの言語で実装 ◦ Rust, Python, Typescript, Go 言語 ◦ ロジック、関数の分け方はすべて同じ。 • いずれも AWS SAM でコンテナにして deploy • 同一のJest のテストをそれぞれに実行して実行時間、使用メモリ量を測定 ◦ cloudwatch log insight のメトリックスを使用 ◦ 330 回のAPIリクエスト (非同期、エラーとなることを確認するリクエストも含む ) 6
最大使用メモリを128MBにした場合 7 Rust Go TS Python Rust Go TS Python
実行時間(msec)頻度分布 課金時間(msec)頻度分布 どの言語でも2つのピーク に分かれているが、Rust はそのピークの乖離が一 番小さく、処理速度のバラ ツキが小さい。 短時間で処理ができるもの は Go の方が Rust よりも 速い。 コンパイラを介する言語 (Rust, Go)とそれ以外 (Python, TS)で実行時間分 布の差が大きい。 Rust が最も省メモリ 最大使用メモリ: 42MB(平均) 最大使用メモリ: 53MB(平均) 最大使用メモリ: 101MB(平均) 最大使用メモリ: 75MB (平均)
最大使用メモリを1024MBにした場合(=CPU資源を増強) 8 Rust Go TS Python Rust Go TS Python
実行時間(msec)頻度分布 課金時間 (msec)頻度分布 メモリを増やすと割り当てら れる vCPU も大きくなる。 Rust と Go は2つのピーク がなくなっているが、TSや Python では残っており、ロ ングテールになっている。 CPU性能が十分にあれ ば、Go が最も実行時間が 短い。 (Rust はCPU性能が十分で なくても速い) 最大使用メモリ: 42MB(平均) 最大使用メモリ: 53MB(平均) 最大使用メモリ: 101MB(平均) 最大使用メモリ: 75MB (平均)
まとめ • Rust のAWS Lambda における実行時間、メモリ使用量の他の言 語に対する優位性を実験で確認しました。 ◦ 少ないCPU資源でも高速な実行が可能。実行時間のバラツキが他の言語 に比べて小さいことが特徴的。
◦ メモリ使用量が他の言語に比べて小さい 9