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
960
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
社内勉強会運営のコツ
senoo
6
1.1k
PHPカンファレンス小田原2024
ysknsid25
2
640
WebアプリケーションにおけるPDOの使い方入門 / phpcon odawara 2024
meihei3
2
420
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs (QCon London)
inesmontani
PRO
0
140
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
1
630
OpenShiftはじめの一歩から継続的なチャレンジ
mame500
0
250
プロダクト開発における ソフトウェアサプライチェーンセキュリティ: 実践的フレームワークとその活用 / Software Supply Chain Security in Product Development: Practical Framework and their applications
nttcom
1
310
自動生成を活用した、運用保守コストを抑える Error/Alert/Runbook の一元集約管理 / Centralized management of Error/Alert/Runbook to minimize operational costs using automated code generation
biwashi
9
1.9k
強みを伸ばすキャリアデザイン
yug1224
0
200
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
3
1.3k
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
Tebiki株式会社 エンジニア採用資料
tebiki
0
4k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
185
16k
Designing the Hi-DPI Web
ddemaree
275
33k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
74
41k
Automating Front-end Workflow
addyosmani
1354
200k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
Unsuck your backbone
ammeep
662
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
355
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
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