こんにちは、たわらです。
HerokuとAWSの違いがよくわからないし、EC2って聞いたことあるけどよく知らないので、ざっくり調べてみました。
Heroku
- アプリケーションの開発から実行、運用までをクラウド上で管理できるPaaS(サービスとしてのプラットフォーム)
- PaaSとは、インターネット上でハードウェアやOSなどを提供するサービス。低コストかつ迅速な開発がメリット。
- JavaからGoまで、もちろんRubyも公式サポートしている
- スマートコンテナ「dyno」がアプリの調整や管理をしてくれる
- 構築が簡単
- Network/Hard Ware/OS/Middle Ware までを提供するクラウドサービス。Applicationはユーザーが用意。
- 主要な言語のサポート
- 使用方法に応じて料金体系が変わる
- laaS。サービスとしてのインストラクチャー。
- Network/Hard Ware/OS までを提供するクラウドサービス。Middle WareとApplicationはユーザーが用意。
これによくまとまってる。ちと読みづらいけど。 qastack.jp
Herokuはアプリだけ作ればデプロイできるけど、AWSを利用する場合は自分でEC2(?)などアプリを載せる層をカスタマイズ/選択をする。 だからユーザーがより現実に対応した環境を整えられる、という感じですね。
AWSの用語
Railsをデプロイするのに、AWSのEC2インスタンス環境構築?をする必要がある。 構築に必要なのは「web3層構成」。
webサーバー層
webアプリケーション層
データベース層
データの保持。 これらをEC2インスタンスのなかに構築する。
VPCの作成
- Virtual Praibate Cloud。自分専用の領域。サブネットやEC2などはこの領域の中に作成する。
サブネットの作成
ネットワークのなかのネットワーク
このサブネットは外部との通信をする(パブリックサブネット)/VPC内だけの通信にする(プライベートサブネット) などの制御するため
Railsを置くEC2はパブリックサブネット、RDS(Relational Database Service)はEC2からのアクセスのみなのでプライベートサブネット。
アベリラビリティゾーンとは?
サーバーを物理的に置いているデータセンターについて、各リージョンで地域ごとにデータセンターを分けた集合の単位。
RDSでは異なるAZを持つ複数のサブネットを設定したサブネットグループを登録する。1つがサーバーダウンしても大丈夫にするため。
インターネットゲートウェイを作成する
ルートテーブルを作成する
- 通信に関するルールブックのような概念。サブネット単位で設定が可能。IPアドレスによって通信の経路を変える。パブリックサブネットには宛先が振当てられない。
セキュリティグループを作成する
- セキュリティのルールを設定する。適応されたグループごとに通信の許可/拒否ができる。各サブネットを囲うファイアウォール。
EC2とは?
Amazon Elastic Compute Cloud。仮想サーバー。仮想サーバーの実態をEC2インスタンスという単位で構築する。
webサーバー層 webブラウザからのアクセス要求を処理。必要に応じてWebアプリケーション層へリクエスト要求する →ミドルウェア : Nginx を使用するサーバー
webアプリケーション層 webサーバーからのリクエストをもとに、バックエンドのRubyなどを実行したり、データベースへアクセス。 →ミドルウェア : Puma を使用するサーバー
Nginxとは?
- 大量のアクセス処理に特化したwebサーバー
- Pumaのみでもアプリケーションは動かせるが、ローカルの場合アクセスが自分ひとりだから
- Apacheの改善により開発
- EC2にインストールして起動する
Elastic IPアドレス (EIP)とは
- AWSで使える固定IPアドレス
- EC2インスタンスに紐づけて利用し、紐づけられたインスタンスが固定IPを持つ。どこにも割り当てないEIPには料金が発生する。
- 「パブリックIPアドレス」は無料で利用できますが、EC2インスタンスを開始するたびに別のIPアドレスに代わってしまいます
Capistranoとは?
Route 53 とは?
S3 とは?
- Simple Storage Service。オブジェクトストレージサービス
- 保存したぶんだけ課金。
- S3の料金 = ストレージに保存している容量 + S3に対するリクエスト(GET、PUTなど)数 + データ転送料金
- 柔軟なストレージ機能,耐久性と可用性の高さ,低コストによる運用が可能,静的ファイルの配信,豊富なツールや機能
ACMとは?