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
kohski
March 17, 2021
Programming
0
98
AWS Well Architected Framework − Serverless Application Lens − に沿ってアプリケーションを改善した話
Serverless Meetup Japan Virtual #18
kohski
March 17, 2021
Tweet
Share
More Decks by kohski
See All by kohski
エンジニア歴1ヶ月だけどサーバレスなサービスを使って事業に貢献できた話
kosukekimura
0
610
Other Decks in Programming
See All in Programming
SpringBoot3.4の構造化ログ #kanjava
irof
2
990
Linux && Docker 研修/Linux && Docker training
forrep
24
4.5k
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
36
14k
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
900
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
1
190
sappoRo.R #12 初心者セッション
kosugitti
0
250
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.4k
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
110
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
370
Introduction to kotlinx.rpc
arawn
0
700
Domain-Driven Transformation
hschwentner
2
1.9k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Adopting Sorbet at Scale
ufuk
74
9.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
GraphQLとの向き合い方2022年版
quramy
44
13k
RailsConf 2023
tenderlove
29
1k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Music & Morning Musume
bryan
46
6.3k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
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にするためにどんなことし てますか?