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
510
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
300
新しいおもちゃを見つけたい私がやっている情報収集
forcia_dev_pr
2
500
「Pythonの環境構築について」と記事作成で意識したこと
forcia_dev_pr
1
210
Neovim で VS Code みたいにコーディングする
forcia_dev_pr
1
230
なぜ・どうやって・何を書く? 〜技術記事を書く習慣の作り方〜
forcia_dev_pr
1
240
第8回ゆるふわオンサイト 解説スライド
forcia_dev_pr
0
230
第7回ゆるふわオンサイト解説
forcia_dev_pr
0
310
第6回ゆるふわオンサイト解説
forcia_dev_pr
0
310
よくわかるFORCIAのエンジニア旅行SaaSプロダクト開発編
forcia_dev_pr
0
1.4k
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
4 Signs Your Business is Dying
shpigford
187
23k
Raft: Consensus for Rubyists
vanstee
141
7.7k
Side Projects
sachag
456
43k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
We Are The Robots
honzajavorek
0
360
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
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