Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
color is クラウドLT大会vol.9 新常識!JavaScript × AWS Lambdaがアツい!! 2024-06-27
Slide 2
Slide 2 text
自己紹介 ● 渡邉 洋平(watany) ○ NTTテクノクロス株式会社 ○ JAWS-UG東京 運営 ○ AWS Ambassadors (associate) ● 合同で勉強会できる企業を探しています ○ Jr. Champion/TopEngineer育成とか ○ 普通にTechの勉強会とか
Slide 3
Slide 3 text
今日の目標 ● AWS Lambda のJavaScript(TypeScript, Node.js)のトレンドを紹介する ○ 従来、拘りなくLambdaを書く場合にはPythonがファーストチョイスだった(個人 研究) ○ バックエンド、インフラでもJavaScript採用で効率化できそうなアップデート群を 紹介 ● お詫び ○ JavaScriptと言いつつ、TypeScript前提で話す
Slide 4
Slide 4 text
JavaScript × AWS Lambdaの新常識
Slide 5
Slide 5 text
JavaScript × AWS Lambdaの新常識 1. TypeScript × AWS CDK 2. LLRT 3. Lambda Web Adaptor 4. Response Streaming
Slide 6
Slide 6 text
1. TypeScript × AWS CDK ● AWS CDKとは? ○ Framework for CloudFormation ○ 概要は右のグラレコが必要十分 ● TypeScriptとは? ○ JavaScriptのSuperset ○ 強力かつ柔軟な型システム をJavascriptに付与 引用:使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説 https://aws.amazon.com/jp/builders-flash/202309/awsgeek-aws-cdk/
Slide 7
Slide 7 text
1. TypeScript × AWS CDK AWS CDKは多言語対応とあるが…? ● Toolネイティブ対応は”TypeScript” ○ Python、GoなどはJsiiが変換して対応(まれにバグを踏む) ● 2022年度の利用率は”72%”がJS/TS ○ 2024年現在の肌感覚でも同様 ○ JAWS-UG CDK支部も https://matthewbonig.com/posts/community-survey-2022/
Slide 8
Slide 8 text
1. TypeScript × AWS CDK 「NodejsFunction」でBundle部分をCDKに任せて、TypeScript ファーストのLambda開 発体験
Slide 9
Slide 9 text
JavaScript × AWS Lambdaの新常識 1. TypeScript × AWS CDK 2. LLRT 3. Lambda Web Adaptor 4. Response Streaming
Slide 10
Slide 10 text
2. LLRT LLRT (Low Latency Runtime) ● Node.js互換、WinterJS互換を目指し、AWSが開発するJS Runtime ○ QuickJS + Rust ○ 注)2024/6時点でBeta版
Slide 11
Slide 11 text
Cold Start:Node.js(1500ms) https://github.com/awslabs/llrt/tree/main/benchmarks
Slide 12
Slide 12 text
Cold Start:LLRT ( > 100ms) https://github.com/awslabs/llrt/tree/main/benchmarks
Slide 13
Slide 13 text
2. LLRT > LLRT offers up to over 10x faster startup and up to 2x overall lower cost compared to other JavaScript runtimes running on AWS Lambda ● つまりJS/TSのコードのままで ○ ColdStart性能の改善 ■ Go on AWS Lambdaと同等 ○ メモリ使用量の改善 ■ ≒ Costの改善
Slide 14
Slide 14 text
JavaScript × AWS Lambdaの新常識 1. TypeScript × AWS CDK 2. LLRT 3. Lambda Web Adaptor 4. Response Streaming
Slide 15
Slide 15 text
3. Lambda Web Adaptor LambdaのEvents ⇔ HTTP Request/Response ● Express.jsやNext.jsのWebフレームワークがAWS Lambdaでそのまま動 く! https://aws.amazon.com/jp/blogs/compute/using-response-streaming-with-aws-lambda-web-adapter-to-optimize-performance/
Slide 16
Slide 16 text
3. Lambda Web Adaptor 安全かつ高速なLambda Extensions ● Rust製で性能影響も軽微 ○ 平均レイテンシーは +0.8 ms 程度 ○ p99 でも +4 ms 程度 ● Docker on Lambdaなら1行足すだけ ○ Managed Runtimeだと少し面倒
Slide 17
Slide 17 text
Extensionsのアーキテクチャ https://aws.amazon.com/jp/builders-flash/202301/lambda-web-adapter/ 3. Lambda Web Adaptor
Slide 18
Slide 18 text
JavaScript × AWS Lambdaの新常識 1. TypeScript × AWS CDK 2. LLRT 3. Lambda Web Adaptor 4. Response Streaming
Slide 19
Slide 19 text
4. Response Streaming ● 2024年時点で、世はLLM時代 ○ つまり「ヌルヌル返却するやつ」時代ということ(?) ● Lambda Response Streaming ○ FunctionsURLから、ペイロードをStreamingで返せる ○ 最大20MB返せる(通常6MB)
Slide 20
Slide 20 text
4. Response Streaming 制約:動作条件 1.マネージドランタイム ○ Node.js v16以降”のみ” 2.カスタムランタイムに実装 ○ 実装済はRust Runtime for AWS Lambdaのみ? 3.+ Lambda Extensions ○ 後述のLambda Web Adaptorを使うと間接的に2.相当
Slide 21
Slide 21 text
4. Response Streaming Node.js Runtimeには、組み込みの独自関数が用意 https://aws.amazon.com/jp/blogs/news/introducing-aws-lambda-response-streaming/
Slide 22
Slide 22 text
4. Response Streaming Appendix. 組み込み関数は少し癖がある ● 実装前に、↓のスライドを読むのがおススメ https://speakerdeck.com/watany/aws-lambda-response-streaming-shi-zhuang-qian-nisiritaiyatu
Slide 23
Slide 23 text
まとめ
Slide 24
Slide 24 text
まとめ ● JS/TS × LambdaとCDKとで、技術スタックを統一しやすい ● StreamingもNode.jsランタイムなら始めやすい ● Lambda Web AdaptorでJSの強力なWeb Flameworkを採用できる ● LLRTが実用化されれば更なる最適化へ…! だから JavaScript × AWS Lambdaがアツい!!