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
AWS Well Architected Framework− Serverless App...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kohski
March 17, 2021
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Well Architected Framework − Serverless Application Lens − に沿ってアプリケーションを改善した話
Serverless Meetup Japan Virtual #18
kohski
March 17, 2021
More Decks by kohski
See All by kohski
エンジニア歴1ヶ月だけどサーバレスなサービスを使って事業に貢献できた話
kosukekimura
0
700
Other Decks in Programming
See All in Programming
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
640
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
300
AIエージェントで 変わるAndroid開発環境
takahirom
2
770
霧の中の代数的エフェクト
funnyycat
1
460
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
190
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
190
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
130
React本体のコードリーディング
high_g_engineer
1
130
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
9
6.1k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
440
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
240
The Spectacular Lies of Maps
axbom
PRO
1
880
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
690
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
600
Transcript
Serverless Meetup Japan Virtual #18 AWS Well Architected Framework −
Serverless Application Lens − に沿ってアプリケーションを改善した話
Serverless Meetup Japan Virtual #18 自己紹介 • 木村 幸介 •
株式会社キャラウェブ • エンジニア2年目 • 経理やってました
Serverless Meetup Japan Virtual #18 会社概要 会社名:株式会社キャラウェブ 所在地:東京都台東区東上野4−12−1 資本金:7,161万円 主な事業内容:
コンテンツ事業 電子書籍のライセンスおよび管理,電子書籍販売 クラウドパートナー事業 サーバーレスアプリケーション構築にフォーカスした アジャイルチーム提供サービス 他 ISO/IEC 27001:2013 & JIS Q 27001:2014 クラウドに関するコンサルティング、設計、 構築、運用、管理 における認証 当社は AWSパートナーネットワーク の コンサルティングパートナー です
Serverless Meetup Japan Virtual #18 最近の悩み ごく典型的な機能要件を満たすサーバレスアプリ ケーションはつくれるようになった気がするけど、 胸を張って「サーバレスできます」とはとても言え ない。。。
Serverless Meetup Japan Virtual #18 そうだ! Well Architected Framework –
Serverless Application Lens – を改めて読んでみよう!
Serverless Meetup Japan Virtual #18 Well Architected Framework ▪ Well
Architected Framework クラウド上でワークロードを設計および実行するための主要な概 念、設計原則、アーキテクチャのベストプラクティスについて説明さ れているフレームワーク ▪Severless Application Lens サーバーレスワークロードに固有の Well-Architected フレームワ ークの詳細を取り上げている
Serverless Meetup Japan Virtual #18 Well-Architected Framework - Serverless Application
Lens - 1. ホワイトペーパー https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/serve rless-applications-lens/wellarchitected-serverless-applications- lens.pdf 2. Well-Architected Tool Serverless Lens マネジメントコンソールから使用可
Serverless Meetup Japan Virtual #18 Well-Architected Tool
Serverless Meetup Japan Virtual #18 Well-Architected Tool
Serverless Meetup Japan Virtual #18 今日お話しさせていただくこと Well Architected Frameworkを読んで、よりよい サーバレスアプリケーションにするために実践し
たこと
Serverless Meetup Japan Virtual #18 注意点 以降の説明には、すでに実装済みのもので今回 私が初めて腹落ちしたものも含んでいます。 これらが会社として今までできていなかったという わけではありません。
Serverless Meetup Japan Virtual #18 9つの質問 No. 詳細 概要 OPS1
サーバーレスアプリケーションの状態をどのように評価しますか? X-Ray, lambda-power-tools OPS2 アプリケーションのライフサイクル管理について教えて下さい cdk pipelines, versioning, alias SEC1 サーバーレス API へのアクセスをどのようにコントロールしますか? Cognito, IAM, Lambda authorizer SEC2 サーバーレスアプリケーションのセキュリティ境界をどのように管理していますか? 単一用途の関数, 関数独自のロール作成 SEC3 ワークロードにどのようにアプリケーションセキュリティを実装しますか? 静的コード解析ツール(banditなど) REL1 インバウンドリクエスト率はどのように調整していますか? Lambdaの同時実行制御 + SQS REL2 サーバーレスアプリケーションには回復力をどのように組み込んでいますか? StepFunctionsの使用 PERF1 どのようにサーバーレスアプリケーションのパフォーマンスを最適化しますか? lambda power tuning, Cache COST1 どのようにサーバーレスアプリケーションのコストを最適化しますか? Logの保持期間を見直し, Lambdaメモリ
Serverless Meetup Japan Virtual #18 OPS1の詳細 No. 詳細 1 面倒な設定なしで与えられるメトリクスを理解し、分析し、アラートを出す
2 分散トレースを使用し、コードにはコンテキストが追加されている 3 構造化および一元化されたログ記録 4 アプリケーション、ビジネス、オペレーションメトリクスの使用 サーバーレスアプリケーションの状態をどのように評価しますか?
Serverless Meetup Japan Virtual #18 OPS1の詳細 No. 詳細 1 面倒な設定なしで与えられるメトリクスを理解し、分析し、アラートを出す
2 分散トレースを使用し、コードにはコンテキストが追加されている 3 構造化および一元化されたログ記録 4 アプリケーション、ビジネス、オペレーションメトリクスの使用 サーバーレスアプリケーションの状態をどのように評価しますか?
Serverless Meetup Japan Virtual #18 AWS X-Ray Lambda Powertools Tracer
+
Serverless Meetup Japan Virtual #18 CDKでの設定 API Gateway Step Functions
Lambda
Serverless Meetup Japan Virtual #18 Lambda Functionでの使用
Serverless Meetup Japan Virtual #18 サービスマップ
Serverless Meetup Japan Virtual #18 トレースリスト
Serverless Meetup Japan Virtual #18 セグメント詳細
Serverless Meetup Japan Virtual #18 X-Rayを導入してみて AFTER トラブルシューティング レイテンシー分析 などに対して効果的
BEFORE APIGateway, AppSync, Lambda … etc それぞれのログを個別に確 認していたため、調査の効率 がわるかった
Serverless Meetup Japan Virtual #18 OPS1の詳細 No. 詳細 1 面倒な設定なしで与えられるメトリクスを理解し、分析し、アラートを出す
2 分散トレースを使用し、コードにはコンテキストが追加されている 3 構造化および一元化されたログ記録 4 アプリケーション、ビジネス、オペレーションメトリクスの使用 サーバーレスアプリケーションの状態をどのように評価しますか?
Serverless Meetup Japan Virtual #18 Lambda Powertools Logger
Serverless Meetup Japan Virtual #18 Lambda Functionでの設定 • lambda_powertoolsのimport •
デコレータを指定 • LOG_LEVELの設定 • POWERTOOLS_LOGGER_LOG _EVENT: trueを設定すること でeventを自動出力
Serverless Meetup Japan Virtual #18 構造化されたログ 非構造化ログ 構造化ログ
Serverless Meetup Japan Virtual #18 Lambda Powertools Loggerを使用 BEFORE •
Python標準のloggerを使用 • 出力する項目は実装者に よってまちまち • ログを利用するときは timestampを頼りにマネジメ ントコンソールを目視確認 AFTER • Lambda-Powertoolsの loggerを使用 • LogEventを有効化して自動 eventを出力 • Cloud Watch Insightsのクエ リを有効活用
Serverless Meetup Japan Virtual #18 9つの質問 No. 詳細 概要 OPS1
サーバーレスアプリケーションの状態をどのように評価しますか? X-Ray, lambda-power-tools OPS2 アプリケーションのライフサイクル管理について教えて下さい cdk pipelines, versioning, alias SEC1 サーバーレス API へのアクセスをどのようにコントロールしますか? Cognito, IAM, Lambda authorizer SEC2 サーバーレスアプリケーションのセキュリティ境界をどのように管理していますか? 単一用途の関数, 関数独自のロール作成 SEC3 ワークロードにどのようにアプリケーションセキュリティを実装しますか? 静的コード解析ツール(banditなど) REL1 インバウンドリクエスト率はどのように調整していますか? Lambdaの同時実行制御 + SQS REL2 サーバーレスアプリケーションには回復力をどのように組み込んでいますか? StepFunctionsの使用 PERF1 どのようにサーバーレスアプリケーションのパフォーマンスを最適化しますか? lambda power tuning, Cache COST1 どのようにサーバーレスアプリケーションのコストを最適化しますか? Logの保持期間を見直し, Lambdaメモリ
Serverless Meetup Japan Virtual #18 OPS2の詳細 No. 詳細 1 別々の環境に分離されたコードおよびステージとしてインフラストラクチャを使用する
2 一時的な環境を使用し、新機能の原型を作る 3 ロールアウトデプロイメカニズムを使用する 4 構成管理を使用する 5 関数ランタイムの廃止ポリシーを確認する 6 個別アカウント全体の自動テストを含む CI/CD を使用する アプリケーションのライフサイクル管理について教えて下さい
Serverless Meetup Japan Virtual #18 ステージごとにマルチアカウント運用 Manage Dev Stg Prd
Serverless Meetup Japan Virtual #18 マルチアカウント・マルチリージョンのデプロイ • クロスアカウントなロールの設定 • アーティファクトの扱い
など考えることが多い
Serverless Meetup Japan Virtual #18 CDK Pipelines
Serverless Meetup Japan Virtual #18 CDK Pipelines • CDKで構築されたアプリケーションを継続的に配信するための コンストラクタライブラリ
• 2021/3/17時点でDeveloper Preview • クロスアカウントのデプロイが簡単に実現可能 • 承認アクションや通知の設定も可能
Serverless Meetup Japan Virtual #18 CDK Pipelines • CDKで構築されたアプリケーションを継続的に配信するための コンストラクタライブラリ
• 2021/3/17時点でDeveloper Preview • クロスアカウントのデプロイが簡単に実現可能 • 承認アクションや通知の設定も可能
Serverless Meetup Japan Virtual #18 CDK Pipelinesの例 PipelineStageクラスを作成
Serverless Meetup Japan Virtual #18 CDK Pipelinesの例 Pipelineを定義
Serverless Meetup Japan Virtual #18 CDK Pipelinesの例 PipelineStageクラスを作成 stageの追加 Approvalの追加
Serverless Meetup Japan Virtual #18 CDK Pipelinesの例 PipelineMasterStackを 初期化
Serverless Meetup Japan Virtual #18 CDK Pipelinesの例 $ cdk bootstrap
--profile <manageアカウントのprofile> --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://<manageアカウントのID>/<deoloyするリージョン> $ cdk bootstrap --profile <devアカウントのprofile> --trust <manageアカウントのID> --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://<devアカウントのID>/ <deoloyするリージョン> $ cdk bootstrap --profile <stgアカウントのprofile> --trust <manageアカウントのID> --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://<stgアカウントのID>/ <deoloyするリージョン> $ cdk bootstrap --profile <prodアカウントのprofile> --trust <manageアカウントのID> --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://<prodアカウントのID>/ <deoloyするリージョン> 信頼関係をCLIから登録(以下のコマンド例)
Serverless Meetup Japan Virtual #18 ステージごとにマルチアカウント運用 Manage Dev Stg Prd
CDK Pipelines
Serverless Meetup Japan Virtual #18 OPS2の詳細 No. 詳細 1 別々の環境に分離されたコードおよびステージとしてインフラストラクチャを使用する
2 一時的な環境を使用し、新機能の原型を作る 3 ロールアウトデプロイメカニズムを使用する 4 構成管理を使用する 5 関数ランタイムの廃止ポリシーを確認する 6 個別アカウント全体の自動テストを含む CI/CD を使用する アプリケーションのライフサイクル管理について教えて下さい
Serverless Meetup Japan Virtual #18 Lambda Canary Deploy
Serverless Meetup Japan Virtual #18 Lambdaのバージョン・エイリアスを追加
Serverless Meetup Japan Virtual #18 Canaryデプロイの設定 異常検知のための アラームを設定 CodeDeployで Deploymentタイプを
指定
Serverless Meetup Japan Virtual #18 Lambda Canary デプロイ BEFORE •
Lambdaは$LATESTをダイ レクト更新 • ロールバックはコミットを戻し て再デプロイ AFTER • 定期的なアクセスがある Lambdaについては更新の 安全性が増した
Serverless Meetup Japan Virtual #18 9つの質問 No. 詳細 概要 OPS1
サーバーレスアプリケーションの状態をどのように評価しますか? X-Ray, lambda-power-tools OPS2 アプリケーションのライフサイクル管理について教えて下さい cdk pipelines, versioning, alias SEC1 サーバーレス API へのアクセスをどのようにコントロールしますか? Cognito, IAM, Lambda authorizer SEC2 サーバーレスアプリケーションのセキュリティ境界をどのように管理していますか? 単一用途の関数, 関数独自のロール作成 SEC3 ワークロードにどのようにアプリケーションセキュリティを実装しますか? 静的コード解析ツール(banditなど) REL1 インバウンドリクエスト率はどのように調整していますか? Lambdaの同時実行制御 + SQS REL2 サーバーレスアプリケーションには回復力をどのように組み込んでいますか? StepFunctionsの使用 PERF1 どのようにサーバーレスアプリケーションのパフォーマンスを最適化しますか? lambda power tuning, Cache COST1 どのようにサーバーレスアプリケーションのコストを最適化しますか? Logの保持期間を見直し, Lambdaメモリ
Serverless Meetup Japan Virtual #18 REL1詳細 No. 詳細 1 スロットリングを使用してインバウンドリクエスト率を制御する
2 API クォータを使用、分析、適用する 3 スケーラブルではないリソースを保護するメカニズムを利用する インバウンドリクエスト率はどのように調整していますか?
Serverless Meetup Japan Virtual #18 サンプルアプリケーション
Serverless Meetup Japan Virtual #18 同時実行の制御: 課題
Serverless Meetup Japan Virtual #18 同時実行の制御: 課題 CreateJobは 秒間5回まで
Serverless Meetup Japan Virtual #18 同時実行の制御: 課題 CreateJobは 秒間5回まで 秒間5回を超えるリクエストが
発生する可能性がある
Serverless Meetup Japan Virtual #18 同時実行の制御: 対応 1200 単位: ms
600 800 1000 0 200 400 単位: ms 800 1000 1200 0 200 400 600 同時実行数 秒間最大リクエスト < 5 2 4 True 3 6 False 関数の平均実行時間: 600ms
Serverless Meetup Japan Virtual #18 同時実行の制御: 対応 同時実行数を2 に設定
Serverless Meetup Japan Virtual #18 同時実行の制御: 対応 同時実行数を2 に設定 SQSでイベントを
キューイングする
Serverless Meetup Japan Virtual #18 まとめ No. 詳細 概要 OPS1
サーバーレスアプリケーションの状態をどのように評価しますか? X-Ray lambda-powertools OPS2 アプリケーションのライフサイクル管理について教えて下さい cdk pipelines versioning, alias, canary deploy REL1 インバウンドリクエスト率はどのように調整していますか? Lambdaの同時実行制御 + SQS
Serverless Meetup Japan Virtual #18 最後に • 大切なことはすべてWell Architected Frameworkに書
いてある • とくにServerless Application Lensの内容は実践的なも のが多い
Serverless Meetup Japan Virtual #18 Zoom参加者の皆様へご質問 Well ArchitectedなApplicationにするためにどんなことし てますか?