https://jawsugosaka.doorkeeper.jp/events/141505 JAWS-UG KANSAI - AWSアーキテクチャ祭り - 2022-10-01(土)15:00 - 18:00
© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.AWS ソリューションで⾞輪の再発明をしない⽣活JAWS-UG OSAKA 「AWSアーキテクチャ祭り」Shinichi Hama / track3jyoStartup Solutions Architect, West JapanAmazon Web Services Japan G.K.
View Slide
© 2022, Amazon Web Services, Inc. or its affiliates. 2Shinichi Hama / track3jyoStartup Solutions ArchitectAmazon Web Service Japan---work:- ⻄⽇本のスタートアップ⽀援- コンテナ技術のあれこれ過去のスライド: https://speakerdeck.com/track3jyo趣味︓家のアーキテクチャを考えること
© 2022, Amazon Web Services, Inc. or its affiliates.AWS ソリューション 知ってますか︖︖• AWS サービス、コード、設定を組み合わせたすぐにデプロイできるソリューションや参考アーキテクチャ(2022/8時点で54個)3https://aws.amazon.com/jp/solutions/
© 2022, Amazon Web Services, Inc. or its affiliates.AWS ソリューションの実体• 概要、構成図、デプロイガイド(ドキュメント)、CloudFormation、GitHubリンク• すぐに利⽤できるので、⾞輪の再発明を回避できることも4
© 2022, Amazon Web Services, Inc. or its affiliates. 5https://twitter.com/track3jyo/status/1574045739923419136AWS ソリューションの嬉しいところ
© 2022, Amazon Web Services, Inc. or its affiliates.AWS ソリューションの⼀例• Amazon WorkSpaces コストオプティマイザー§ Workspaces のコスト⾃動最適化のソリューション• Instance Scheduler on AWS§ EC2 や RDS をスケジュール決めて停⽌・起動するための仕組み• Distributed Load Testing on AWS§ AWS 上に分散負荷テスト環境を構築• Limit Monitor§ 上限緩和の状況を Watch・Nortification するための仕組み• AWS Health Aware§ SHD や PHD のモニタリング・通知基盤• Workload Discovery on AWS§ アカウント上のワークロードの可視化6• AWS QnABot§ 多⾔語対応の Chatbot ソリューション• AWS DevOps Monitoring Dashboard§ CI/CD 環境の継続的な改善をするためのダッシュボード• AWS Edit in the Cloud§ クラウド上での動画編集環境• AWS WAF セキュリティオートメーション§ AWS WAF のセキュリティオートメーションソリューション• Serverless Image Handler§ 動的な画像変換配信の仕組み・・・and more
© 2022, Amazon Web Services, Inc. or its affiliates.AWS ソリューションの⼀例• Amazon WorkSpaces コストオプティマイザー§ Workspaces のコスト⾃動最適化のソリューション• Instance Scheduler on AWS§ EC2 や RDS をスケジュール決めて停⽌・起動するための仕組み• Distributed Load Testing on AWS§ AWS 上に分散負荷テスト環境を構築• Limit Monitor§ 上限緩和の状況を Watch・Nortification するための仕組み• AWS Health Aware§ SHD や PHD のモニタリング・通知基盤• Workload Discovery on AWS§ アカウント上のワークロードの可視化7• AWS QnABot§ 多⾔語対応の Chatbot ソリューション• AWS DevOps Monitoring Dashboard§ CI/CD 環境の継続的な改善をするためのダッシュボード• AWS Edit in the Cloud§ クラウド上での動画編集環境• AWS WAF セキュリティオートメーション§ AWS WAF のセキュリティオートメーションソリューション• Serverless Image Handler§ 動的な画像変換配信の仕組み・・・and more
© 2022, Amazon Web Services, Inc. or its affiliates.今⽇のおはなし• ありそうなお悩みベースで、AWS ソリューションをアーキテクチャや実装という観点で⾒ていきます8
© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.ケース 1. 社内利⽤のシステムや開発環境で使っているEC2 や RDS を夜間・休⽇に Start/Stop する仕組みをLambda 使って…むむむ9
© 2022, Amazon Web Services, Inc. or its affiliates.Instance Scheduler on AWS• 指定したタグの値に基づいて、指定の時間に EC2 インスタンスやRDS インスタンスを開始・停⽌させる仕組み• 開発環境、テスト環境は平⽇の⽇中以外は停⽌してコストを削減したい︕• ⽇を跨ぐスケジュール、曜⽇指定、毎⽉第⼀⽉曜⽇といった柔軟なスケジュール設定が分単位で可能• 異なるアカウントやリージョン間のインスタンスの起動及び停⽌スケジュールを設定可能E C 2 や R D S を ス ケ ジ ュ ー ル 決 め て 停 ⽌ ・ 起 動 す る た め の 仕 組 み10https://aws.amazon.com/jp/solutions/implementations/instance-scheduler/
© 2022, Amazon Web Services, Inc. or its affiliates.アーキテクチャとその実装11Amazon EventBridge
© 2022, Amazon Web Services, Inc. or its affiliates.DynamoDB へのスケジュール登録12ピリオド定義︓インスタンスの開始時刻、終了時刻、曜⽇を設定スケジュール定義︓ピリオド定義の組み合わせで定義12DynamoDB にて設定管理
© 2022, Amazon Web Services, Inc. or its affiliates.Scheduler CLI• 専⽤の CLI ツールである Scheduler CLI を提供13$ scheduler-cli create-period --name "mon-start-9am" --begintime 09:00 --endtime 23:59 --weekdays mon \--stack InstanceScheduler$ scheduler-cli create-period --name "tue-thu-full-day" --weekdays tue-thu --stack InstanceScheduler$ scheduler-cli create-period --name "fri-stop-5pm" --begintime 00:00 --endtime 16:59 --weekdays fri \--stack InstanceScheduler$ scheduler-cli create-schedule --name mon-9am-fri-5pm --periods mon-start-9am,tue-thu-full-day,fri-stop-5pm \--timezone Asia/Tokyo --stack InstanceScheduler
© 2022, Amazon Web Services, Inc. or its affiliates.利⽤料⾦例 (us-east-1)14サービス 項目 月額料金AWS Lambda24 時間あたり 1,440 回実⾏1 つの Lambda 関数は1回あたり 8 秒間の実⾏時間Lambda 関数は 5 つ実⾏$7.25Amazon CloudWatchMetrics (enabled)オプションで有効化した場合 $0.90AWS DynamoDB⽉あたり 1,080,000 回の書き込み⽉あたり 1,080,000 回の読み込みストレージ料⾦は 1 GB 未満(最初の 25 GB は無料です)$1.75合計: 9.90 USD/⽉ソリューション⾃体は無償、各 AWS サービス利⽤料は発⽣※前提︓2 つのアカウントの Amazon EC2 及び Amazon RDS に対するスケジュールを設定
© 2022, Amazon Web Services, Inc. or its affiliates.参考情報• ソリューション概要• https://aws.amazon.com/jp/solutions/implementations/instance-scheduler/• サーバーを指定した期間で停⽌する「AWS Instance Scheduler」を試してみる• https://aws.amazon.com/jp/builders-flash/202110/instance-scheduler/• GitHub (ソースコード)• https://github.com/aws-solutions/aws-instance-scheduler• デプロイガイド• https://d1.awsstatic.com/Solutions/ja_JP/instance-scheduler-on-aws.pdf15
© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.ケース 2. 新システムの導⼊前に負荷テストをするんだけど、負荷をかける側のサーバーやラップトップがボトルネックになるんです。ちょっと⼿間だけど、分散負荷テスト⽤の仕組み作るか・・・はぁ16
© 2022, Amazon Web Services, Inc. or its affiliates.Distributed Load Testing on AWS17分散負荷テスト⽤の AWS Solutions(Solutions⾃体は無償, 各AWSサービス利⽤料は発⽣)AWS Fargateタスク1タスク2タスクn…1〜1000タスク(リージョン毎Quotaに注意)1タスクあたりの仮想ユーザー数を指定して並列処理Apache JMeterテストシナリオ(.jmx)S3バケット各タスクがS3バケットから取得負荷テスト対象アプリ※ご注意︓Network Stress Testに関する留意事項を事前にご確認くださいhttps://aws.amazon.com/ec2/testing/…Distributed Load Testingon AWS の提供範囲
© 2022, Amazon Web Services, Inc. or its affiliates.負荷テスト実⾏の流れ (1)新規テストの作成で、シナリオ定義ファイルと負荷設定を⾏い投⼊(v1.3.0からはスケジュール型実⾏も可能)# 設定 説明1 Task Count 負荷エンジンとなるFargateタスクの数(最⼤1,000)2 Concurrency タスク毎に⽣成される仮想ユーザー数3 Ramp Up Concurrencyに到達する時間(0以上, 単位︓秒 or 分)4 Hold For Concurrencyの維持時間 (1以上, 単位︓秒 or 分)Test Typeで「JMeter」を選択JMeterシナリオ定義(.jmx)またはZIPを選択&アップロード(→S3バケットに保存される)
© 2022, Amazon Web Services, Inc. or its affiliates.負荷テスト実⾏の流れ (2)負荷テストの実⾏状況や結果は、詳細画⾯にて確認可能TaskCount シナリオ上タスク数Provisioning Count Fargateタスク要求中の数Pending Count タスク起動待ち数Running Count タスク起動済み数シナリオ実⾏状況Fargateタスク状況
© 2022, Amazon Web Services, Inc. or its affiliates.負荷テスト実⾏の流れ (3)負荷テストの実⾏状況や結果サマリーは、詳細画⾯にて確認可能(同じ設定 や タスク数などの設定を変更し、再実⾏も可能)同⼀シナリオに対する実⾏毎の履歴
© 2022, Amazon Web Services, Inc. or its affiliates.アーキテクチャとその実装21
© 2022, Amazon Web Services, Inc. or its affiliates.利⽤料⾦例 (us-east-1)サービス 項⽬ ⽉額料⾦AWS Fargate10 個のオンデマンドタスク (2 つの vCPU と 4 GB のメモリを使⽤) を 30 時間実⾏ 29.62 USDAmazon DynamoDB1,000 件のオンデマンド書き込みキャパシティーユニット1,000 件のオンデマンド読み込みキャパシティーユニット 0.0015 USDAWS Lambda1, 000 件のリクエスト合計所要時間 10 分 0.00146 USDAWS Step Functions 1,000 件の状態遷移 0.025 USD合計: 29.65 USD/⽉※前提︓10個の Fargate タスクで⽉に 30 時間の負荷試験を実施した場合
© 2022, Amazon Web Services, Inc. or its affiliates.参考情報23• ソリューション概要• https://aws.amazon.com/jp/solutions/implementations/distributed-load-testing-on-aws/• ⼤規模な負荷テストを実⾏可能。「Distributed Load Testing on AWS」を試してみる• https://aws.amazon.com/jp/builders-flash/202108/distributed-load-testing/• GitHub (ソースコード)• https://github.com/aws-solutions/distributed-load-testing-on-aws• デプロイガイド• https://d1.awsstatic.com/Solutions/ja_JP/distributed-load-testing-on-aws.pdf
© 2022, Amazon Web Services, Inc. or its affiliates.© 2022, Amazon Web Services, Inc. or its affiliates.時間があれば他のソリューション⾒てみる︕24
© 2022, Amazon Web Services, Inc. or its affiliates.まとめ• AWS ソリューションはサービス、コード、設定を組み合わせたすぐにデプロイできるソリューションや参考アーキテクチャ• その実装やアーキテクチャが公開されているので、リファレンスとして⾮常に便利• 概念的に似た仕組みで実現できそうなソリューションを⾒つければ、そのテンプレートをベースにして開発して⾞輪の再発明を回避しましょう25
© 2022, Amazon Web Services, Inc. or its affiliates.Thank you!© 2022, Amazon Web Services, Inc. or its affiliates.Shinichi Hamatrack3jyo