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
300
新しいおもちゃを見つけたい私がやっている情報収集
forcia_dev_pr
2
500
「Pythonの環境構築について」と記事作成で意識したこと
forcia_dev_pr
1
210
Neovim で VS Code みたいにコーディングする
forcia_dev_pr
1
240
なぜ・どうやって・何を書く? 〜技術記事を書く習慣の作り方〜
forcia_dev_pr
1
240
第8回ゆるふわオンサイト 解説スライド
forcia_dev_pr
0
240
第7回ゆるふわオンサイト解説
forcia_dev_pr
0
310
第6回ゆるふわオンサイト解説
forcia_dev_pr
0
320
よくわかるFORCIAのエンジニア旅行SaaSプロダクト開発編
forcia_dev_pr
0
1.4k
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Optimising Largest Contentful Paint
csswizardry
37
4k
Making the Leap to Tech Lead
cromwellryan
135
10k
The Cult of Friendly URLs
andyhume
79
7k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Amusing Abliteration
ianozsvald
1
320
The Limits of Empathy - UXLibs8
cassininazir
1
690
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