$30 off During Our Annual Pro Sale. View Details »

AWS ソリューションで車輪の再発明をしない生活

AWS ソリューションで車輪の再発明をしない生活

https://jawsugosaka.doorkeeper.jp/events/141505
JAWS-UG KANSAI - AWSアーキテクチャ祭り -
2022-10-01(土)15:00 - 18:00

track3jyo-hama
PRO

October 01, 2022
Tweet

More Decks by track3jyo-hama

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS ソリューションで ⾞輪の再発明をしない⽣活 JAWS-UG OSAKA 「AWSアーキテクチャ祭り」 Shinichi Hama / track3jyo Startup Solutions Architect, West Japan Amazon Web Services Japan G.K.
  2. © 2022, Amazon Web Services, Inc. or its affiliates. 2

    Shinichi Hama / track3jyo Startup Solutions Architect Amazon Web Service Japan --- work: - ⻄⽇本のスタートアップ⽀援 - コンテナ技術のあれこれ 過去のスライド: https://speakerdeck.com/track3jyo 趣味︓家のアーキテクチャを考えること
  3. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    ソリューション 知ってますか︖︖ • AWS サービス、コード、設定を組み合わせた すぐにデプロイできるソリューションや参考アーキテクチャ(2022/8時点で54個) 3 https://aws.amazon.com/jp/solutions/
  4. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    ソリューションの実体 • 概要、構成図、デプロイガイド(ドキュメント)、CloudFormation、GitHubリンク • すぐに利⽤できるので、⾞輪の再発明を回避できることも 4
  5. © 2022, Amazon Web Services, Inc. or its affiliates. 5

    https://twitter.com/track3jyo/status/1574045739923419136 AWS ソリューションの嬉しいところ
  6. © 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
  7. © 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
  8. © 2022, Amazon Web Services, Inc. or its affiliates. 今⽇のおはなし

    • ありそうなお悩みベースで、AWS ソリューションを アーキテクチャや実装という観点で⾒ていきます 8
  9. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. ケース 1. 社内利⽤のシステムや開発環境で使っている EC2 や RDS を夜間・休⽇に Start/Stop する仕組みを Lambda 使って…むむむ 9
  10. © 2022, Amazon Web Services, Inc. or its affiliates. Instance

    Scheduler on AWS • 指定したタグの値に基づいて、指定の時間に EC2 インスタンスや RDS インスタンスを開始・停⽌させる仕組み • 開発環境、テスト環境は平⽇の⽇中以外は停⽌してコストを削減したい︕ • ⽇を跨ぐスケジュール、曜⽇指定、毎⽉第⼀⽉曜⽇といった柔軟なスケジュール 設定が分単位で可能 • 異なるアカウントやリージョン間のインスタンスの起動及び停⽌スケジュールを 設定可能 E C 2 や R D S を ス ケ ジ ュ ー ル 決 め て 停 ⽌ ・ 起 動 す る た め の 仕 組 み 10 https://aws.amazon.com/jp/solutions/implementations/instance-scheduler/
  11. © 2022, Amazon Web Services, Inc. or its affiliates. アーキテクチャとその実装

    11 Amazon EventBridge
  12. © 2022, Amazon Web Services, Inc. or its affiliates. DynamoDB

    へのスケジュール登録 12 ピリオド定義︓インスタンスの開始時刻、終了時刻、曜⽇を設定 スケジュール定義︓ピリオド定義の組み合わせで定義 12 DynamoDB にて 設定管理
  13. © 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
  14. © 2022, Amazon Web Services, Inc. or its affiliates. 利⽤料⾦例

    (us-east-1) 14 サービス 項目 月額料金 AWS Lambda 24 時間あたり 1,440 回実⾏ 1 つの Lambda 関数は1回あたり 8 秒間の実⾏時間 Lambda 関数は 5 つ実⾏ $7.25 Amazon CloudWatch Metrics (enabled) オプションで有効化した場合 $0.90 AWS DynamoDB ⽉あたり 1,080,000 回の書き込み ⽉あたり 1,080,000 回の読み込み ストレージ料⾦は 1 GB 未満 (最初の 25 GB は無料です) $1.75 合計: 9.90 USD/⽉ ソリューション⾃体は無償、各 AWS サービス利⽤料は発⽣ ※前提︓2 つのアカウントの Amazon EC2 及び Amazon RDS に対するスケジュールを設定
  15. © 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.pdf 15
  16. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. ケース 2. 新システムの導⼊前に負荷テストをするんだけ ど、負荷をかける側のサーバーやラップトップがボトル ネックになるんです。ちょっと⼿間だけど、分散負荷テ スト⽤の仕組み作るか・・・はぁ 16
  17. © 2022, Amazon Web Services, Inc. or its affiliates. Distributed

    Load Testing on AWS 17 分散負荷テスト⽤の 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 Testing on AWS の提供範囲
  18. © 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バケットに保存される)
  19. © 2022, Amazon Web Services, Inc. or its affiliates. 負荷テスト実⾏の流れ

    (2) 負荷テストの実⾏状況や結果は、詳細画⾯にて確認可能 TaskCount シナリオ上タスク数 Provisioning Count Fargateタスク要求中の数 Pending Count タスク起動待ち数 Running Count タスク起動済み数 シナリオ実⾏状況 Fargateタスク状況
  20. © 2022, Amazon Web Services, Inc. or its affiliates. 負荷テスト実⾏の流れ

    (3) 負荷テストの実⾏状況や結果サマリーは、詳細画⾯にて確認可能 (同じ設定 や タスク数などの設定を変更し、再実⾏も可能) 同⼀シナリオに対する実⾏毎の履歴
  21. © 2022, Amazon Web Services, Inc. or its affiliates. アーキテクチャとその実装

    21
  22. © 2022, Amazon Web Services, Inc. or its affiliates. 利⽤料⾦例

    (us-east-1) サービス 項⽬ ⽉額料⾦ AWS Fargate 10 個のオンデマンドタスク (2 つの vCPU と 4 GB のメモリ を使⽤) を 30 時間実⾏ 29.62 USD Amazon DynamoDB 1,000 件のオンデマンド書き込みキャパシティーユニット 1,000 件のオンデマンド読み込みキャパシティーユニット 0.0015 USD AWS Lambda 1, 000 件のリクエスト 合計所要時間 10 分 0.00146 USD AWS Step Functions 1,000 件の状態遷移 0.025 USD 合計: 29.65 USD/⽉ ※前提︓10個の Fargate タスクで⽉に 30 時間の負荷試験を実施した場合
  23. © 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
  24. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. 時間があれば他のソリューション ⾒てみる︕ 24
  25. © 2022, Amazon Web Services, Inc. or its affiliates. まとめ

    • AWS ソリューションはサービス、コード、設定を組み合わせた すぐにデプロイできるソリューションや参考アーキテクチャ • その実装やアーキテクチャが公開されているので、リファレンス として⾮常に便利 • 概念的に似た仕組みで実現できそうなソリューションを⾒つけれ ば、そのテンプレートをベースにして開発して⾞輪の再発明を回 避しましょう 25
  26. © 2022, Amazon Web Services, Inc. or its affiliates. Thank

    you! © 2022, Amazon Web Services, Inc. or its affiliates. Shinichi Hama track3jyo