yutatanaka.tokyo logo

yutatanaka.tokyo

Published on

Amazon S3で自社サイトを高負荷に耐えられるよう対応 Part1

Authors

前回

のつづき。

自社サイト

を高負荷に耐えられるようにする。

loader.ioを使って高付加をかけてみたところ、同時接続10くらいまでは 耐えられたが、それ以上の負荷ではサーバのload averageが高まり耐えられなかった。

可能な限り安価で、

自社サイトをどれだけでも負荷に耐えられるようにしたい。

やってみたら、2時間程度で対応できた。

geralt

/ Pixabay

技術選定

自社サイトの要件としては以下の通り

  • CakePHP3.x

  • PHP 5.6

  • Amazon Linux1 (Amazon EC2 t2.small)

  • DBは使っていない

このまま、スケーラビリティも確保した状態でリプレイスするとなると、Google App Engineあたりが候補に入ってくるが、費用が気になる。

DBが使ってないのでそのあたりを考慮する必要は(当面)ない。

結果、Amazon S3にペライチで載せてしまい、そこにDNSを当ててホスティングすることに決めた。

S3は料金も安いしね。

PHPもここでは殆ど使っていないので、このタイミングで

formrun

に問い合わせフォームを、変えることにした。

気軽に使えるのでformrun大好き

 

 

デフォルトで吐かれるhtmlタグにCSSを適宜、適用して対応する。

誰かの参考になるかわからないがCSSはこんな感じ

   <style>
   .formrun label{
       padding: 20px 20px 5px 0;
       width: 300px;
       font-size: 1.8rem;
   }
   .formrun input[type=text] {
       padding: 5px;
       width: 50%;
       font-size: 1.8rem;
       border-radius: 5px;
   }
   .formrun textarea {
       padding: 5px;
       margin-top: 30px;
       width: 50%;
       height: 200px;
       font-size: 1.8rem;
       border-radius: 5px;
       border: none;
   }
   .formrun input[type=checkbox] {
       width:        24px;
       height:       24px;
       -moz-transform:    scale(1.4);
       -webkit-transform:  scale(1.4);
       transform:     scale(1.4);
}
   .formrun-system-show {
       color: #f88;
   }
   button[type=submit] {
       margin-top: 30px;
       width: 300px;
       padding: 5px 10px 5px 10px;
       background: #fed136;
       border: none;
       color: #fff;
       font-size: 2rem;
       border-radius: 10px;
   }
   </style>

SSL対応が必要。

すっかり忘れていた。元のシステムではLet's Encryptで動いていた。 S3でホスティングする場合でもhttpsにしないと、昨今のGoogleの評価は低かろう。

ググった結果、

CloudFrontを経由しないといけないようなので

…する。

手順は

こちら

にまとまっている。

ポイントとしては、

Route53でDNSを管理しなければいけない

(AレコードでAWS独自の 「Alias」という形で指定しないと、CloudFrontへのDNSのつなぎ込みができないため)

もともとお名前.comで管理していたドメインなので、ネームサーバ変更を行う。

30分ほど経過すると...疎通完了!

証明書も想定通り、AWSの発行したものになっている。

まとめ

今回の採用技術は以下となる。

  • Amazon S3

  • Amazon CloudFront

  • Amazon Route53 (DNS)

これでhttpsで、かつS3にホスティングされた自社サイトが表示されるようになった。

どれだけリクエストが来てもサービスが停止することはないだろう。

次回はこちらにloader.ioで高負荷をかけてみて、どのくらいの利用料金となるかを 検証する。

参考URL:

https://qiita.com/dogwood008/items/a92abae789f4b0466f38

https://dev.classmethod.jp/cloud/aws/tls-for-s3-web-hosting-with-cloudfront/