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
600
Other Decks in Programming
See All in Programming
.NETでOBS Studio操作してみたけど…… / Operating OBS Studio by .NET
skasweb
0
110
103 Early Hints
sugi_0000
1
330
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
220
iOS開発におけるCopilot For XcodeとCode Completion / copilot for xcode
fuyan777
1
1.3k
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
910
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
240
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.3k
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
980
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
910
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
420
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
920
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.3k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
490
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Gamification - CAS2011
davidbonilla
80
5.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
GraphQLとの向き合い方2022年版
quramy
44
13k
Raft: Consensus for Rubyists
vanstee
137
6.7k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Done Done
chrislema
182
16k
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にするためにどんなことし てますか?