Slide 1

Slide 1 text

Serverless Meetup Tokyo #18 Hono is now AWS ready 1

Slide 2

Slide 2 text

自己紹介 渡邉 洋平(watany) Work: NTTテクノクロス株式会社 Community: JAWS-UG東京 Award: Japan AWS Top Engineer 2023 Japan AWS All Certifications Engineer(2022~) 2

Slide 3

Slide 3 text

AWS Lambda + Monolith = lambdaLith Rehan van der Merwe氏の記事 「Should you use a Lambda Monolith, aka lambdaLith, for your API?」 https://rehanvdm.com/blog/should-you-use-a-lambda-monolith-lambdalith-for-the-api 3

Slide 4

Slide 4 text

それってアンチパターンでは? 公式ドキュメントのアンチパターンとしても掲載されている https://docs.aws.amazon.com/lambda/latest/operatorguide/monolith.html 4

Slide 5

Slide 5 text

Blog読んでない人向け その「最小権限の原則」は正しいか? API Gatewayの機能ちゃんと使いこなしてる? ただパスルーティングだけなら、Lambdaをぶつ切りにする必要はない モノリスだとPackageがデカくてCold Start? 実際はp99のエッジケース。 MonolithだとDeploy影響を局所化しづらい? 実際は共通コードまみれ。単にDeployを複雑にしただけでは etc... etc... etc... LambdaでServerless API「のみ」の前提 5

Slide 6

Slide 6 text

つまりはどういう話か? モジュラーモノリスで始めてええやん スモールスタートとしてのモノリス on AWS 1. シンプルに始める "Lambda Functions URL" or "App Runner" 2. Productionに向けた CloudFront, WAF, Lambda@Edge 3. 必要性を踏まえた上でのリアーキテクティング 機能分割 → マイクロサービス化 6

Slide 7

Slide 7 text

というのは、まあ言い過ぎではあるけれど 選択肢としてのモノリスを見直してみようじゃないの 7

Slide 8

Slide 8 text

lambdaLithへの追い風 1. Lambda Functions URL 2. Lambda Web Adapter 3. Serverless Native Framework 8

Slide 9

Slide 9 text

1. Lambda Functions URL 2022.4から登場したLambdaにそのままRESTの口を生や す機能 IAM認証やCORSに対応 不採用理由「AWS WAFがつけられない」「AWS IAM認 証がFitしない」 CloudFrontとLambda@Edgeで回避できるワークア ラウンドあり 出典:AWS Blog「Protecting an AWS Lambda function URL with Amazon CloudFront and Lambda@Edge」 9

Slide 10

Slide 10 text

2. Lambda Web Adapter https://github.com/awslabs/aws-lambda-web- adapter Lambdaと既存Frameworkを繋ぐ汎用アダプター LambdaのEventをRequestへ変換し、 Frameworkへ Rust製の安全で効率的なOSS 気になるとこ コンテナ on Lambdaでは1行追加で導入。 AWS管理ランタイムでは、もう少しお作法 が。 10

Slide 11

Slide 11 text

3. Serverless Native Framework 標準機能としてAWSに対応するFrameworkは、実はある Serverless Express Hono fastify tRPC 出典:やまたつ氏(@yamatatsu193) https://twitter.com/yamatatsu193/status/1726756183644746021 11

Slide 12

Slide 12 text

Hono https://hono.dev/ 12

Slide 13

Slide 13 text

Hono on lambdaLith の魅力 13

Slide 14

Slide 14 text

1. Simple and Powerful ModuleとEntrypointを変えれば動く 14

Slide 15

Slide 15 text

1. Simple and Powerful Streamingもエントリポイントを変えるだけ 15

Slide 16

Slide 16 text

2. Multi-runtime どこでも動くので、初期の技術選定から変わっても大丈 夫! AWS Lambda/Lambda@Edge 夢のCDN Edge Computing Container AppRunner, ECS/EKS Other Runtime/Cloud Node.js/Deno/Bun Cloudflare Workers/Pages, Vercel... Azure FunctionsのPRも出ている 16

Slide 17

Slide 17 text

Appendix. AWS系のAdaptorはwatany(私)がメインで作っています。 v3.3.0 Lambda@Edge対応 v3.10.0 Lambda Streaming Responseに対応 v3.11.0 Event, Contextへの完全なアクセス 17

Slide 18

Slide 18 text

3. Other Ultrafast & Lightweight Honoの本体は20KB程度 RegExpRouter も早い Batteries Included 組み込みミドルウェアが充実 CORS/ETag/JSX Renderer/JWT/Helmet(Secure Headers)…… 18

Slide 19

Slide 19 text

まとめ lambdaLithは選択肢として「あり」 Functions URL + Frameworkで快適なServerless API HonoはAWS Lambdaにおいても有力な選択肢 Adaptor使ってね! 19

Slide 20

Slide 20 text

参考 出典: P14,P15 https://hono.dev/getting-started/aws-lambda P16 https://hono.dev/ 20