AWS

アーキテクチャのサンプル

  • ここにいろいろサンプルがあった。

Route53

  • できること
    • へルスチェックを行いELBのアドレスをダイナミックに変更できる
    • ワイルドカードによるCloudFrontとの連携も可能
  • 料金体系 (2013/10/02時点)
    • DNSゾーンとクエリ数での課金
    • $0.50 per hosted zone / month for the first 25 hosted zones
    • $0.10 per hosted zone / month for additional hosted zones
    • $0.500 per million queries – first 1 Billion queries / month
    • $0.250 per million queries – over 1 Billion queries / month
  • 注意事項
    • このサービスはDNSへの応答を返すものであり、DNSの内容は上位DNSを経由して各DNSにキャッシュされるため、DNSサーバがどのリージョンにあるかはあまり意識しなくてよい

ELB

  • できること
    • トラフィックの分散
    • SSLの復号化を行う
    • ヘルスチェックを行い、EC2の障害ノードを迂回できる
    • Route53と組み合わせ、ELB障害時にリージョン間のフェイルオーバーも可能
  • 課金単位 (2013/10/02時点)
    • 使用時間とデータ転送量での課金
    • $0.028 / hour
    • $0.008 / GB
  • 確認事項
    • ELBの設置単位はロードバランスするアドレス?
    • ELB自身はHAになっている? (常に100%の可用性と考えて良い?)
    • この転送量はイン・アウト共に課金されるのか?

EC2

  • CPUとメモリと初期ディスク容量は最初から決まっており、利用者は自分に最適な組み合わせを選択する (以下は第一世代のリスト)
    • M1 スモールインスタンス(デフォルト): 1.7 GiB メモリ、1 ECU(1 ECU × 1 仮想コア)、160 GB ローカルインスタンスストレージ、32 ビットまたは 64 ビットプラットフォーム
    • M1 ミディアムインスタンス: 3.75 GiB メモリ、2 ECU(2 ECU × 1 仮想コア)、410 GB ローカルインスタンスストレージ、32 ビットまたは 64 ビットプラットフォーム
    • M1 ラージインスタンス: 7.5 GiB メモリ、4 ECU(2 ECU × 2 仮想コア)、850 GB ローカルインスタンスストレージ、64 ビットプラットフォーム
    • M1 エクストララージインスタンス: 15 GiB メモリ、8 ECU(2 ECU × 4 仮想コア)、1690 GB ローカルインスタンスストレージ、64 ビットプラットフォーム
  • ディスク容量だけはEBSというサービスを組み合わせることにより、後からマウントできるらしい
  • 料金 (第一世代スモールをTokyoリージョンで使う場合)
    • リザーブド
      • 前払い $68
      • 時間単位 $0.052
    • オンデマンド
      • 時間単位 $0.088
    • データ通信
      • 同一AZかつプライベートIP間のIN/OUTの場合、料金はかからない
  • 注意事項
    • スケールさせる場合は、スケールアップとスケールアウトのどちらにするかを決めないといけない
    • Amazonのauto-scalingはスケールアウトしかできないので、その辺りも考慮する必要がある
    • EBSを使わなければいけない構成にしなければ少しは楽をできる

S3

  • バケットに容量制限は無い
    • 1オブジェクトのMaxは5TBまで
  • 冗長化や利用形態に応じて3つのタイプがある
    • 通常のS3
      • データが冗長化されて複数の施設に保管され、各施設内では複数のデバイスに保管される
    • Amazon Glacier
      • データの復元に3-5時間かかる (事前に復元ジョブを呼び出し、完了が通知されてからアクセスが必要)
      • データの保全性はS3と同等
    • 低冗長化ストレージ
      • 複数の施設の複数のデバイス上にオブジェクトを格納するが、同一建物内での冗長化のみ行う
      • データの保全性レベルが他のサービスに比べ低い
      • 他でデータを管理している場合の二次的ストレージに利用できる
    • 通常のS3
      • 最初の 1 TB/月 $0.100 GB あたり
      • 次の 49 TB/月 $0.085 GB あたり
      • 次の 450 TB/月 $0.075 GB あたり
      • 次の 500 TB/月 $0.070 GB あたり
      • 次の 4000 TB/月 $0.065 GB あたり
      • 次の 5000 TB/月 $0.060 GB あたり
    • 低冗長化ストレージ
      • 最初の 1 TB/月 $0.080 GB あたり
      • 次の 49 TB/月 $0.068 GB あたり
      • 次の 450 TB/月 $0.060 GB あたり
      • 次の 500 TB/月 $0.056 GB あたり
      • 次の 4000 TB/月 $0.052 GB あたり
      • 次の 5000 TB/月 $0.044 GB あたり
    • Amazon Glacier
      • 最初の 1 TB/月 $0.012 GB あたり
      • 次の 49 TB/月 $0.012 GB あたり
      • 次の 450 TB/月 $0.012 GB あたり
      • 次の 500 TB/月 $0.012 GB あたり
      • 次の 4000 TB/月 $0.012 GB あたり
      • 次の 5000 TB/月 $0.012 GB あたり
    • リクエスト料金
      • $0.005 / 1,000 requests (PUT、COPY、POST、または LIST)
      • $0.004 / 10,000 requests (Others like GET or …)
    • データ転送料金
      • 同一リージョンのEC2間であれば発生しない
      • Amazon CloudFront や 直接インターネットへのOUTに対して課金される

RDS

  • できること
    • 圧倒的に管理が楽 (インストールやバックアップスクリプトやレプリケーション設定やその他いろいろ、やらなくて良い)
    • Multi-AZ構成ができる
    • お金を払えばIO性能を保証できる
    • その他は普通のDBとして扱える (これも大事なこと)
  • DBインスタンスの種類
    • マイクロDB: MEM:630MB, CPU:最大2ECU 64bit, 低速I/O性能, プロビジョンドIOPS最適化:なし
    • スモールDB: MEM:1.7GB, CPU:1ECU 64bit, 標準I/O性能、プロビジョンドIOPS最適化:なし
    • ミディアムDB: MEM:3.75GB, CPU:2ECU 64bit, 標準I/O性能、プロビジョンドIOPS最適化:なし
    • ラージDB: MEM:7.5GB, CPU:4ECU 64bit, 高速I/O性能, プロビジョンドIOPS最適化:500 Mbps
    • エクストララージDB: MEM:15GB, CPU:8ECU 64bit, 高速I/O性能, プロビジョンドIOPS最適化:1,000 Mbps
    • これ以上は要らないと思う。。。
    • リザーブドインスタンス (スモール, Multi-AZ, 重度使用, 1年契約の場合)
      • $194 / year + $0.037 / hour
    • ストレージ料金 (スタンダード, Multi-AZの場合)
      • $0.24 per 1GB / month
    • I/O料金
      • $0.12 /100万リクエスト (Multi-AZの書き込みI/O使用量は2倍になる!)

RDSの代替案検討

  • 今回のシステムでは、検索や集計を必要とする頻度はあまり多くないと思われるため、DynamoDBを使ってみるか?
  • いやいや、そうすると検索の実装が鬼の様にめんどくなる
  • 確かにRDSの負荷は心配だが、そもそも負荷はそんなに多くないはず
  • そういえばDynamoDBはトランザクションできない… orz
  • やっぱりRDSで行こう

コスト試算

AWS Management Console

  • ソースの表示