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
The Best of The Best Practices for Serverless
Search
n2xnot
December 06, 2018
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The Best of The Best Practices for Serverless
About optimizing AWS lambda.
n2xnot
December 06, 2018
Other Decks in Technology
See All in Technology
Goodbye ShellScript, Hello File-based App
shunsock
0
910
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
1
190
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
130
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
510
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
beyond jj: config & tools ecosystem
indirect
0
6k
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
130
Why Agent Cost Needs Observability
nttcom
0
150
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
1.2k
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
200
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.4k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.6k
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
My Coaching Mixtape
mlcsv
0
320
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
670
How to build a perfect <img>
jonoalderson
1
6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Statistics for Hackers
jakevdp
799
230k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
730
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
Technical Leadership for Architectural Decision Making
baasie
3
580
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Transcript
The Best of The Best Practices for Serverless 西村直人 オートモーティブ事業部
株式会社ディー・エヌ・エー
自己紹介 • 名前: 西村直人 • 所属: サーバーサイドエンジニア • 最近はGolangとVue.jsを書いている •
AWS re:Inventへの参加は初 • ウキウキでUber Eatsを使うも部屋から閉め出さ れ海外の洗礼を受ける 2
エンジニアなら誰もが魅力的に見えるワード 3
4 それは・・・
ベストプラクティス 5
AWS re:Inventではベストプラクティスがいっぱい 約1600(session, workshop, chalktalk)あるセッション数のうちタイトル or 説 明文にベストプラクティスというワードが使われたセッション数はどれだけあるで しょう? ①
76 ② 129 ③ 278 ④ 372 6
AWS re:Inventではベストプラクティスがいっぱい 約1600あるセッション数のうちタイトル or 説明文にベストプラクティスというワー ドが使われたセッション数はどれだけあるでしょう? ① 76 ② 129
③ 278 ④ 372 7
関心のあるMyトピック Serverless IoT Architecture 8
関心のあるMyトピック Serverless IoT Architecture 9
Optimizing Your Serverless Applications 10
概要 • Lambdaにフォーカスを当てたセッション • セキュアかつ高性能なサーバーレスアプリケーションを構築するための最適化方法 を紹介している • Lambda関数と実行環境の最適化ベストプラクティス 11 関数
言語ランタイム 実行環境 コンピュータ基盤
AWS Lambdaとは AWS Lambda はサーバーをプロビジョニングしたり管理する必要なくコードを実行でき るコンピューティングサービス 12 イベントソース Lambda関数 サービス
データの 状態変更 API リクエスト
Lambda関連の振り返り • Ruby + カスタムランタイムであらゆる言語をサポート • C++, Rust, PHPなどが既に利用可能 •
AWS Toolkits for popular IDEs • IntelliJやVisual Studio Codeでステップ実行やデバッグが可能 • ALB(Application Load Balancer)のターゲットでLambdaを選択可能 • ルーティングごとにルールを追加、ALBから直接HTTPリダイレクトなど • Lambda Layers • Lambda関数をまたいで共通ロジックをまとめることができる 13
Lambda関数の最適化 14
Lambda関数の最適化まとめ 15 1. 依存関係を最小限にする 2. ハンドラとコアロジックを分離する 3. アプリケーションのスコープに基づいて機密情報を共有する • functionが1つ:
環境変数 • functionをまたぐケース:AWS System Manager - Parameter Store 4. インスタンスが再利用されることで変数、コネクション、依存関係にどのように影響を 与えるかを考える 5. ロジックはシンプルにする 6. エラーハンドリングではStep Functionsやメッセージングサービスを使う 7. MonorepoはFaaSではアンチパターン • Monorepoとはnpmで管理するパッケージを一つのgitリポジトリでまとめて管理 すること
Lambda関数の最適化まとめ 16 1. 依存関係を最小限にする 2. ハンドラとコアロジックを分離する 3. アプリケーションのスコープに基づいて機密情報を共有する • functionが1つ:
環境変数 • functionをまたぐケース:AWS System Manager - Parameter Store 4. インスタンスが再利用されることで変数、コネクション、依存関係にどのように影響を 与えるかを考える 5. ロジックはシンプルにする 6. エラーハンドリングではStep Functionsやメッセージングサービスを使う 7. MonorepoはFaaSではアンチパターン • Monorepoとはnpmで管理するパッケージを一つのgitリポジトリでまとめて管理 すること。
Lambda Environment variables • 関数に動的に渡すことができるキーと値のペア • Node.jsの場合はprocess.env、Pythonの場合はos.environに記述可能 • AWS Key
Management Service(KMS)を使用すれば暗号化も可能 17
AWS Systems Manager - Parameter Store • 秘匿データや設定データなどを一元的に管理できるストア • パラメータにタグをつけることができ、階層別で管理することができる
• KMSでの暗号化も可能 18
Lambda関数の最適化まとめ 19 1. 依存関係を最小限にする 2. ハンドラとコアロジックを分離する 3. アプリケーションのスコープに基づいて機密情報を共有する • functionが1つ:
環境変数 • functionが複数:AWS System Manager - Parameter Store 4. インスタンスが再利用されることで変数、コネクション、依存関係にどのように影響を 与えるかを考える 5. ロジックはシンプルにする 6. エラーハンドリングではStep Functionsやメッセージングサービスを使う 7. MonorepoはFaaSではアンチパターン • Monorepoとはnpmで管理するパッケージを一つのgitリポジトリでまとめて管理 すること
AWS Step Functions • 視覚的なワークフローを使用して、分散アプリケーションとマイクロサービスのコン ポーネントを調整できるサービス。 • 各ステップが自動的にトリガーおよび追跡され、エラーが発生した場合は再試行され る。 •
各ステップの状態を記録するため、問題が発生した場合は、問題を簡単に診断およ びデバッグ可能。 20
実行環境の最適化 21
実行環境の最適化まとめ 1. メモリを増やすことでCPUとI / Oを増やすことができる 2. AWS X-Rayを使用してワークロードのプロファイリングが可能 3. 実行モデルと呼び出し元のニーズについて深く考える
• すべてがAPI経由で呼ぶ必要はない 4. キュー、トピック、ストリームを使用する際にさまざまな側面を理解する 5. VPCには一定のメリットがあるが、セキュリティには必要ありません 6. IAM許可範囲を最小限に抑える • SAMのようなツールを活用する 22
実行環境の最適化まとめ 1. メモリを増やすことでCPUとI / Oを増やすことができる 2. AWS X-Rayを使用してワークロードのプロファイリングが可能 3. 実行モデルと呼び出し元のニーズについて深く考える
• すべてがAPI経由で呼ぶ必要はない 4. キュー、トピック、ストリームを使用する際にさまざまな側面を理解する 5. VPCには一定のメリットがあるが、セキュリティには必要ありません 6. IAM許可範囲を最小限に抑える • SAMのようなツールを活用する 23
Lambda functionライフサイクル 24 Download your code Start new Execution Environment
Bootstrap the runtime Start your code Full Cold Start Partial Cold Start Warm Start AWS Optimization Your Optimization
AWS X-Ray • アプリケーションが処理するリクエストに関するデータを収集するサービス • アプリケーションやその基盤となるサービスの実行状況を把握し、パフォーマンスの 問題やエラーの根本原因を特定して、トラブルシューティングを行うことができる 25 Cold Start
Initialization
Lambda最適化のまとめ 26 Lambda関数の最適化 1. 依存関係を最小限にする 2. ハンドラとコアロジックを分離する 3. アプリケーションのスコープに基づいて秘密ファイルを共有する 4.
インスタンスが再利用されることで変数や依存関係にどのように影響を与えるかを考える 5. ロジックはシンプルにする 6. Step FunctionsまたはMessaging Serviceまでオーケストレーション実行プッシュする 7. Monorepoはアンチパターン 実行環境の最適化 1. AWS X-Rayを使用してワークロードのプロファイリングが可能 2. 実行モデルと呼び出し元のニーズについて深く考える 3. キュー、トピック、ストリームを使用する際にさまざまな側面を理解する 4. VPCには一定のメリットがあるが、セキュリティには必要ない 5. IAMの許可範囲を最小限に抑える
セッションのスライドはこちら https://www.slideshare.net/AmazonWebServices/optimizing-your-serverless-applications-srv401r2- aws-reinvent-2018 Lambdaベストプラクティスはこちら https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/best-practices.html 27