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
100
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
640
Other Decks in Programming
See All in Programming
エンジニアのための”最低限いい感じ”デザイン入門
shunshobon
0
110
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
200
TROCCO×dbtで実現する人にもAIにもやさしいデータ基盤
nealle
0
100
新世界の理解
koriym
0
130
パスタの技術
yusukebe
1
380
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
600
技術的負債で信頼性が限界だったWordPress運用をShifterで完全復活させた話
rvirus0817
1
1.7k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.1k
自作OSでDOOMを動かしてみた
zakki0925224
1
1.3k
iOS開発スターターキットの作り方
akidon0000
0
240
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1.1k
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
480
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
A better future with KSS
kneath
239
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
BBQ
matthewcrist
89
9.8k
For a Future-Friendly Web
brad_frost
179
9.9k
The Cult of Friendly URLs
andyhume
79
6.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Bash Introduction
62gerente
614
210k
Statistics for Hackers
jakevdp
799
220k
What's in a price? How to price your products and services
michaelherold
246
12k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
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にするためにどんなことし てますか?