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
AWS LambdaでのRust利用
Search
forcia_dev_pr
September 02, 2021
500
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
280
新しいおもちゃを見つけたい私がやっている情報収集
forcia_dev_pr
2
490
「Pythonの環境構築について」と記事作成で意識したこと
forcia_dev_pr
1
190
Neovim で VS Code みたいにコーディングする
forcia_dev_pr
1
220
なぜ・どうやって・何を書く? 〜技術記事を書く習慣の作り方〜
forcia_dev_pr
1
220
第8回ゆるふわオンサイト 解説スライド
forcia_dev_pr
0
190
第7回ゆるふわオンサイト解説
forcia_dev_pr
0
280
第6回ゆるふわオンサイト解説
forcia_dev_pr
0
290
よくわかるFORCIAのエンジニア旅行SaaSプロダクト開発編
forcia_dev_pr
0
1.1k
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
How to build a perfect <img>
jonoalderson
1
5.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Code Reviewing Like a Champion
maltzj
528
40k
Leo the Paperboy
mayatellez
7
1.8k
How to make the Groovebox
asonas
2
2.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
320
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