[レポート] 1000万ユーザーに向けたスケールアップ手法 #ARC211 #reinvent

AWS re:Invent 2019のセッションである「Scaling up to your first 10 million users」のレポートです。
2019.12.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

原題

Scaling up to your first 10 million users

スピーカー

Brian Farnhill - Solution Architect, Amazon Web Services Hong Pham - Solutions Architect, Amazon Web Services

概要

Cloud computing gives you a number of advantages, such as the ability to scale your web application or website on demand. If you have a new web application and want to use cloud computing, you might be asking yourself, “Where do I start?” Join us in this session to understand best practices for scaling your resources from one user to millions of users. We show you how to best combine different AWS services, how to make smarter decisions for architecting your application, and how to scale your infrastructure and serverless components in the cloud.

概要(機械翻訳)

クラウドコンピューティングには、WebアプリケーションまたはWebサイトをオンデマンドでスケーリングする機能など、多くの利点があります。 新しいWebアプリケーションがあり、クラウドコンピューティングを使用したい場合は、「どこから始めますか?」 さまざまなAWSサービスを最適に組み合わせる方法、アプリケーションを設計するための賢明な決定方法、およびクラウド内のインフラストラクチャとサーバーレスコンポーネントを拡張する方法を示します。

レポート

  • スケーリングについて
    • 運用しているアプリケーションの目標ユーザー数はいくつか?
    • 「Scaling」で検索すると「Auto Scaling」が出てくるが、これは今求めているものではない
    • では実際に「Scaling」を始める時はどこから手をつけるべきか?
  • いくつかのポイント
    • AWSがインフラ
      • 22のリージョン
      • 69のAZ
    • AWSのサービス
      • 管理を気にする必要がないマネージドなサービス
      • アーキテクチャによって可用性やスケーラビリティを実現するサービス
  • 想定ユーザーのパターン別にアーキテクチャを考える
    • 1ユーザ以上
      • Route53, EC2
      • シンプルな構成はLightSailで簡単に作成することも可能
      • DBの種類
        • RDS, DynamoDB, Neptune, Aurora
      • SQLとNoSQLどちらを使うべき?
        • 最初はSQLから始めてみる
        • NoSQLの特徴が必要になったら移行を検討
      • 認証は?
        • Cognito
    • 100ユーザ以上
      • マネージドなDBサービスを利用する
    • 1000ユーザ以上
      • サーバのスケールが必要になってくる
      • 垂直スケールは楽だがエンドポイントが一つだけ
      • LBを使用した負荷分散を採用する
        • ALBがおすすめ
    • 10000ユーザ以上
      • DBのリードレプリカを使用する
      • 静的コンテンツをCloudFrontで配信
      • ElastiCacheの使用
      • 水平スケーリングの際に、一定のリソースを確保してしまうと使わないリソースが発生してしまう
        • 理想はリクエスト量などに応じてリソースを柔軟に用意すること
          • AutoScalingの出番
    • 50000ユーザ以上
      • AutoScalingの使用
      • 自動化も進めていく
        • SystemsManager
        • インフラの自動化はどうする?
          • サービス色々
            • 高レベル
              • OpsWorks
              • ElasticBeanstalk
              • Fargate
            • 自身で管理
              • CloudFormation,  CDK
              • EC2
              • ECS, EKS
      • デプロイやリリースに関するサービスも使用する
        • Codeシリーズ
    • 500000ユーザ以上
      • モニタリングやロギングを実施する
        • 実施する目的を明確にする、セキュリティの担保?可用性?顧客体験?
        • CloudWatch
          • CloudWatch  Anomalyで普段のパターンと逸脱した状態の検知
      • Monolithic Architectureをどう改善する?
        • SOA(service oriented archtecture)に従う
        • コンテナへの移行
        • Lambdaの採用
        • SQSの使用
      • マイクロサービスアーキテクチャのモニタリング
        • X-Ray
    • 1000000ユーザ以上 
      • 今までのアーキテクチャを組み合わせてよりスケーラブルなアーキテクチャを採用する
    • 5000000 ~ 10000000 ユーザ
      • 機能をNoSQLに移行していく
    • 10000000人〜
  • 簡単なレビュー項目
    • Multi-AZ?
    • マネージドなサービスを使おう
    • まずはSQLから
    • Cacheを使う
    • インフラの管理ツールを使用する
    • メトリクス/モニタリング/ログの取得ができているか
    • SQAに沿って層を分割
    • AutoScalingを使う
    • NoSQLに移行しよう
  • その先のステップ
    • AWS公式ドキュメントを読もう
    • AWSサポートを使ってみよう

終わりに

シンプルなアーキテクチャから始まり、順を追って徐々にシステムを大きくしていく説明の進め方が非常にわかりやすく、これからクラウドでアプリケーションを構築しようとしている方であれば非常に参考になるセッションでした!