聞いたことあるAWSのサービスをざっくり調べてみた

September 23, 2020

こんにちは、たわらです。

Heroku と AWS の違いがよくわからないし、EC2 って聞いたことあるけどよく知らないので、ざっくり調べてみました。

Heroku

  • アプリケーションの開発から実行、運用までをクラウド上で管理できる PaaS(サービスとしてのプラットフォーム)
  • PaaS とは、インターネット上でハードウェアや OS などを提供するサービス。低コストかつ迅速な開発がメリット。
  • Java から Go まで、もちろん Ruby も公式サポートしている
  • スマートコンテナ「dyno」がアプリの調整や管理をしてくれる
  • 構築が簡単
  • Network/Hard Ware/OS/Middle Ware  までを提供するクラウドサービス。Application はユーザーが用意。

AWS

  • 主要な言語のサポート
  • 使用方法に応じて料金体系が変わる
  • laaS。サービスとしてのインストラクチャー。
  • Network/Hard Ware/OS  までを提供するクラウドサービス。Middle Ware と Application はユーザーが用意。

これによくまとまってる。ちと読みづらいけど。 [https://qastack.jp/programming/9802259/why-do-people-use-heroku-when-aws-is-present-what-distinguishes-heroku-from-aws:embed:cite]

Heroku はアプリだけ作ればデプロイできるけど、AWS を利用する場合は自分で EC2(?)などアプリを載せる層をカスタマイズ/選択をする。 だからユーザーがより現実に対応した環境を整えられる、という感じですね。

AWS の用語

Rails をデプロイするのに、AWS の EC2 インスタンス環境構築?をする必要がある。 構築に必要なのは「web3 層構成」。

  • web サーバー層

    web ブラウザからのアクセス要求を処理。必要に応じて Web アプリケーション層へリクエスト要求する

  • web アプリケーション層

    web サーバーからのリクエストをもとに、バックエンドの Ruby などを実行したり、データベースへアクセス。

  • データベース層

    データの保持。 これらを EC2 インスタンスのなかに構築する。

VPC の作成

  • Virtual Praibate Cloud。自分専用の領域。サブネットや EC2 などはこの領域の中に作成する。

サブネットの作成

  • ネットワークのなかのネットワーク

  • このサブネットは外部との通信をする(パブリックサブネット)/VPC 内だけの通信にする(プライベートサブネット) などの制御するため

  • Rails を置く EC2 はパブリックサブネット、RDS(Relational Database Service)は EC2 からのアクセスのみなのでプライベートサブネット。

アベリラビリティゾーンとは?

  • サーバーを物理的に置いているデータセンターについて、各リージョンで地域ごとにデータセンターを分けた集合の単位。

  • RDS では異なる AZ を持つ複数のサブネットを設定したサブネットグループを登録する。1つがサーバーダウンしても大丈夫にするため。

インターネットゲートウェイを作成する

  • VPC は AWS 内での専有領域なので、外部と接続をするには、窓口が必要。

ルートテーブルを作成する

  • 通信に関するルールブックのような概念。サブネット単位で設定が可能。IP アドレスによって通信の経路を変える。パブリックサブネットには宛先が振当てられない。

セキュリティグループを作成する

  • セキュリティのルールを設定する。適応されたグループごとに通信の許可/拒否ができる。各サブネットを囲うファイアウォール。

EC2 とは?

  • Amazon Elastic Compute Cloud。仮想サーバー。仮想サーバーの実態を EC2 インスタンスという単位で構築する。

  • web サーバー層   web ブラウザからのアクセス要求を処理。必要に応じて Web アプリケーション層へリクエスト要求する → ミドルウェア : Nginx を使用するサーバー

  • web アプリケーション層   web サーバーからのリクエストをもとに、バックエンドの Ruby などを実行したり、データベースへアクセス。 → ミドルウェア : Puma を使用するサーバー

  • データベース層  データの保持。 → ミドルウェア : MySQL を使用するサーバー

Nginx とは?

  • 大量のアクセス処理に特化した web サーバー
  • Puma のみでもアプリケーションは動かせるが、ローカルの場合アクセスが自分ひとりだから
  • Apache の改善により開発
  • EC2 にインストールして起動する

Elastic IP アドレス (EIP)とは

  • AWS で使える固定 IP アドレス
  • EC2 インスタンスに紐づけて利用し、紐づけられたインスタンスが固定 IP を持つ。どこにも割り当てない EIP には料金が発生する。
  • 「パブリック IP アドレス」は無料で利用できますが、EC2 インスタンスを開始するたびに別の IP アドレスに代わってしまいます

Capistrano とは?

  • デプロイ先の EC2 インスタンスに SSH 接続して指定されたコマンドを実行してくれる。EC2 に SSH 接続するよりは手間がかからない。

Route 53 とは?

  • 新規ドメイン名の登録や、ドメインの DNS レコードの管理が行えるサービス
  • ドメインから IP アドレスを参照するためサービス
  • DNS が使用するポート番号が 53 番
  • 落ちない、早い、安い らしい

S3 とは?

  • Simple Storage Service。オブジェクトストレージサービス
  • 保存したぶんだけ課金。
  • S3 の料金 = ストレージに保存している容量 + S3 に対するリクエスト(GET、PUT など)数 + データ転送料金
  • 柔軟なストレージ機能,耐久性と可用性の高さ,低コストによる運用が可能,静的ファイルの配信,豊富なツールや機能

ACM とは?

  • AWS が提供している SSL 証明書
  • SSL(Secure Sockets Layer)とは、インターネット上におけるウェブブラウザとウェブサーバ間でのデータの通信を暗号化し、送受信させる仕組みのことです。
  • 無料、ワイルドカード可、自動更新