Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

はまーん
PRO

October 01, 2022
Tweet

More Decks by はまーん

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.

    View Slide

  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
    趣味︓家のアーキテクチャを考えること

    View Slide

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

    View Slide

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

    View Slide

  5. © 2022, Amazon Web Services, Inc. or its affiliates. 5
    https://twitter.com/track3jyo/status/1574045739923419136
    AWS ソリューションの嬉しいところ

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

  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/

    View Slide

  11. © 2022, Amazon Web Services, Inc. or its affiliates.
    アーキテクチャとその実装
    11
    Amazon EventBridge

    View Slide

  12. © 2022, Amazon Web Services, Inc. or its affiliates.
    DynamoDB へのスケジュール登録
    12
    ピリオド定義︓インスタンスの開始時刻、終了時刻、曜⽇を設定
    スケジュール定義︓ピリオド定義の組み合わせで定義
    12
    DynamoDB にて
    設定管理

    View Slide

  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

    View Slide

  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 に対するスケジュールを設定

    View Slide

  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

    View Slide

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

    View Slide

  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 の提供範囲

    View Slide

  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バケットに保存される)

    View Slide

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

    View Slide

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

    View Slide

  21. © 2022, Amazon Web Services, Inc. or its affiliates.
    アーキテクチャとその実装
    21

    View Slide

  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 時間の負荷試験を実施した場合

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide