heyhey1007 / sample-aws-architecture

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sample-aws-architecture

要件

  • タスクの管理(追加、閲覧、削除)を行うことができるwebサービスを展開したい。

  • サービスはweb層、アプリケーション層、データ層の3層で構成されている。

  • web層では、タスクが閲覧削除ができる静的なWebページを配信する。

    • 特定のドメイン(xxxxxsevice.jp)から配信される。
    • 世界中どの地域からアクセスしても低遅延でページが閲覧できること。
    • 静的ページはサーバーを立てずに運用したい。
  • アプリケーション層ではJavaSpringBootのAPIサーバーをホストする

    • ドメインはweb層と同じもの。サーバー証明書を使用し、SSL通信で通信が暗号化されていること

    • サーバーは通常時で2台体制とする。

      • (*)サーバーへの負荷が増大した際(例えば、1分間に60リクエスト以上)サーバーの数を3台に自動でスケールするようにしたい。
      • (*)サーバーへの負荷が減少した際(1分間60リクエスト以下が5分間続いた)サーバーの台数を2台にスケールインするようにしたい。
    • HTTPS着信トラフィックはサーバー2台に平等に分配され、サーバへの負荷が分散されていること。

    • 可用性、耐障害性を担保するため、地理的に離れた場所にサーバーを配置したい。

    • (*)DDos攻撃やSQLインジェクション対策がWAFにて可能であること

  • データ層では、MySQLを利用し、なるべくパフォーマンスの高いものを利用したい。

    • DBはアプリケーションサーバーとのみ通信が行えるようにする。
    • セキュリティを担保するため、外部のインターネットからの直接通信を受け付けないようにしたい。

要件(サービス名あり版)

AWSサービスを利用して、クラウドの長所を生かしたwebサービスを展開したい。
  • タスクの管理(追加、閲覧、削除)を行うことができるwebサービスを展開したい。

  • サービスはweb層、アプリケーション層、データ層の3層で構成されている。

  • web層では、タスクが閲覧削除ができる静的なWebページを、ストレージサービスであるS3によって配信する。

    • DNSサービスであるroute53によってルーティングされる。特定のドメイン(xxxxxsevice.jp)から配信される。
    • CDNサービスであるCloudFrontによって、世界中どの地域からアクセスしても低遅延でページが閲覧できること。
    • 静的ページはサーバーを立てずにS3からホスティングして運用したい。
  • アプリケーション層ではJavaSpringBootのAPIサーバーをコンピューティングサービスであるEC2によってホストする

    • route53によってCloudFrontにルーティングされ、ドメインはweb層と同じもの。サーバー証明書を使用しACMによって管理しALBから連携して認証を行う、SSL通信で通信が暗号化されていること
    • EC2サーバーは通常時で2台体制とする。
      • (*)サーバーへの負荷が増大した際(例えば、1分間に60リクエスト以上が5分間続いた際)AutoScallingを利用してサーバーの数を3台に自動でスケールアウトするようにしたい。
      • (*)サーバーへの負荷が減少した際(1分間60リクエスト以下が5分間続いた)AutoScallingによりサーバーの台数を2台にスケールインするようにしたい。
    • HTTPS着信トラフィックはサーバー2台に平等に分配され、サーバへの負荷が分散されていること。
    • 可用性、耐障害性を担保するため、2台のサーバーを地理的に離れた場所(別のAZ)にサーバーを配置したい。
    • (*)DDos攻撃やSQLインジェクション対策がAWSWAFとの連携にて可能であること
  • データ層では、MySQLを利用し、なるべくパフォーマンスの高いAmazon Aurora MySQLを利用したい。

    • DBはセキュリティグループに登録されたアプリケーションサーバーとのみ通信が行えるようにする。
    • セキュリティを担保するためプライベートサブネットに設置し、外部のインターネットから直接の通信を受け付けないようにしたい

About