プログラミング

AWSでrailsサイトをSSL化したらレスポンスが遅くなった話

更新日:

はじめまして。この記事では、AWSについて少し触れたいと思います。この記事の訪問者はAWSを知っている人が多いと思いますが、知らない人のために少し解説しておきます。

AWS(Amazon Web Service)とは・・・


AWSとはAmazon Web Serviceの略称で、アマゾンウェブサービスのことです。アマゾンは通販サイトとして圧倒的シェアを誇っており、ほとんどの方がご存知かと思いますが、そのアマゾン系列がオーナーの会社が提供しています。具体的には、最近はやりのクラウド化を簡単にできる、サーバーレス化サービスのことです。さくらなどのレンタルサーバーとは異なり、サーバーへの言語のインストールや、セキュリティ設定など、細かくカスタマイズでき、提供されている複数のサービスを組み合わせることで、小規模サービスから大規模サービスまでを、AWS上で提供することが可能になっています。1年間は無料で利用できますが、それ以降は使った分料金を支払うシステムになっています。

あまり詳しく解説すると記事内にはいらないので、細かい点は各自でしらべてみてください。

EC2+Route53+nginxで独自ドメインサービス


AWSでサービスを動かしたくて、EC2とRoute53とnginxでウェブサイトを作りました。
具体的には、EC2でLinuxサーバーを起動し、nginxを使って、Ruby on railsで作成したウェブアプリを実行。ルーティングにRoute53を使用しました。

AWS内でドメインを取得したのですが、他のサービスでドメインを取得するよりかなり割高、、、ネームサーバーの設定などの手間を惜しまないなら、他社でドメイン取った方がいい気もします。

そんなこんなでごにょごにょして、実際にサービスにアクセスできる状態までなんとか到達・・・

AWSでSSL化したけれど。。。

ここから本題に入っていきます。作成したサービスをSSL化、わかりやすく言うと、httpをhttps化することにしました。AWSでは、無料でSSL化のための証明書を発行できるサービスがあり、それをもちいてサイトをhttps化しました。

1.AWS Certificate Managerを使って所持しているドメインのSSL化のための証明書を発行。
2.EC2 > Classic Load Balancer(ロードバランサー)を使って、サイトにhttpsでもアクセスできるように。
3.httpでアクセスしたユーザーをhttpsにリダイレクトするように。

以上の順序でサイトのSSL化を完了しました。ロードバランサーを使う際に、サブネットを2つ選択する必要があるので、1つしか作成していない人は、サブネットを新たに作成し、別のアベイラビリティゾーンを選択してください。ロードバランサーは、負荷分散を目的としているため、同じページにアクセスされた際にも別のIPアドレスに分散することで、負荷の減少を図ることができるというわけです。

しかし、負荷分散をしたからといって必ずしもレスポンスが早くなるわけではないことにも注意です。

そして私はなぜかページを読み込む際に1分くらいかかってしまう現象に遭遇・・・

原因はよくわからないけど


しらべていると、同じような現象に遭遇した人を発見。どうやらブラウザがGoogleChromの場合におこってるようです。
解決策としては、サブネットのルートテーブルを設定し直すと解消することができました。理由がわからないのがもやもやしますが、AWS側で設定に時間がかかっているのか、バグなのか、一人でもこの記事で救われたら幸いです。

-プログラミング
-, , , , , , , , , , , ,

Copyright© アフィリモ -AffiLimo- 総合情報局 , 2019 All Rights Reserved Powered by AFFINGER5.