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
The Best of The Best Practices for Serverless
Search
n2xnot
December 06, 2018
Technology
0
1.2k
The Best of The Best Practices for Serverless
About optimizing AWS lambda.
n2xnot
December 06, 2018
Tweet
Share
Other Decks in Technology
See All in Technology
可観測性は開発環境から、開発環境にもオブザーバビリティ導入のススメ
layerx
PRO
4
1.5k
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
870
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
200
AI時代の発信活動 ~技術者として認知してもらうための発信法~ / 20251028 Masaki Okuda
shift_evolve
PRO
1
110
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
1.4k
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
340
webpack依存からの脱却!快適フロントエンド開発をViteで実現する #vuefes
bengo4com
4
3.6k
AI時代の開発を加速する組織づくり - ブログでは書けなかったリアル
hiro8ma
2
330
Azure Well-Architected Framework入門
tomokusaba
1
140
CLIPでマルチモーダル画像検索 →とても良い
wm3
0
190
OPENLOGI Company Profile for engineer
hr01
1
45k
Zero Trust DNS でより安全なインターネット アクセス
murachiakira
0
110
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
For a Future-Friendly Web
brad_frost
180
10k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Building an army of robots
kneath
305
46k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Code Reviewing Like a Champion
maltzj
526
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
620
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
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