こんにちは、おーしまです。
今回は、自動車レビューアプリをAWSを使って、デプロイできたので、それに関して書いていきます。
これまでは「Heroku」を使ってデプロイしていたのですが、あまりに動作が遅いので、AWSでドメインを取得して、デプロイしようと思いました。
今回使ったのは、AWSの
- Route53
- EC2
- Certificate Manager
を使って、デプロイしました。
内容を全て書くのは大変なので、概念だけ書いていこうと思います。(間違っていたらすみません)
(やりたい人は、ネット記事を見てください)
まず、それぞれについて説明します。
Route53:ドメインを取得することができます。ドメインとは、「exsample.com」のようにユーザーがウェブブラウザのアドレスバーに入力してウェブサイトやウェブアプリケーションにアクセスするための名前のことです。取得にはお金がかかります。(このブログは「お名前ドットコム」というところでドメインを取得しました、だからお名前ドットコムみたいな感じ)本来、インターネットでやり取りするときは、IPアドレスという数字達(192.0.2.44など)で通信をしているのですが、それだと分かりにくいので、ドメインとIPアドレスを紐づけて、https://~~~~で検索できるようにしているんですね。
EC2:EC2は仮想マシンを用意してくれるシステムです。EC2インスタンスを生成することで、サーバー環境が構築でき、複数作成することもできるので汎用性に優れています。ちょっと難しいので、私も完全に理解できていませんが、サーバーを用意してくれるという認識で良いと思います。
Certificate Manager:Amazon Certificate Manager なので「ACM」と言われます。先ほどの「EC2」を使えば、デプロイはできるのですが、HTTP通信になってしまうので、通信のセキュリティが乏しくなってしまい、ブラウザでも、「この通信は安全ではありません」と表示されてしまいます。あのGoogleも、HTTP通信より、HTTPS通信を使えと言っています。その時にACMの出番です。ACMはドメイン証明書を発行してくれるので、それを「Application Load Balancer」に適用すると、HTTPS通信で通信することができます。
図でまとめると、こんな感じでしょうか。
ACMの証明書で、ユーザーとApplication Load BalancerまでがHTTPS通信となり、Application Load Balancerから、EC2までHTTP通信となっています。
Webサーバーは「Nginx」を使っています。Webサーバーのみでレスポンスを返せない動的コンテンツは、その後、アプリケーションサーバーからレスポンスを求めます。
「Rack」は翻訳プログラムのことを指します。Rackがあることで、アプリケーションサーバーとアプリ(自動車レビューアプリ)がやり取りできるようになります。
やってみると、インフラも結構面白いですね。本来は、アプリの仕様から「なぜ、これを使うのか」まで考えて、インフラを構築していかなければならないと思うのですが、私の実力では、そこまで及ばず、ネットに書いてある通りにしかできませんでした。もっと知識をつけていかないと、いけないと思うので、まだ頑張りたいと思います。
今回はここまでです。
それでは、また。