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
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1.1k
テストを軸にした生き残り術
kworkdev
PRO
0
220
「Linux」という言葉が指すもの
sat
PRO
4
140
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
MagicPod導入から半年、オープンロジQAチームで実際にやったこと
tjoko
0
110
KotlinConf 2025_イベントレポート
sony
1
140
20250913_JAWS_sysad_kobe
takuyay0ne
2
250
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
120
RSCの時代にReactとフレームワークの境界を探る
uhyo
10
3.5k
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
720
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
120
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Faster Mobile Websites
deanohume
309
31k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Statistics for Hackers
jakevdp
799
220k
Designing for Performance
lara
610
69k
The Cult of Friendly URLs
andyhume
79
6.6k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
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