ヤマムギ

growing hard days.

*

ブログのアーキテクチャをコストベースで見直しました

      2020/01/09

当ブログはAWSで構築しています。
アーキテクチャをコストを最重視して見直しましたので、その結果を記録します。

2019年最終のアーキテクチャ

2019年は最終的に次のようなアーキテクチャになりました。

2019年12月コスト実績

  • EC2(t3.nano spot 2instance) $2.99
  • EBS $2.86
  • RDS(Aurora Serverless) $79.53
  • ELB $18.14
  • ElastiCache(t2.micro 1node) $19.34
  • S3 $0.45
  • WAF $ 2.05
  • CloudTrail $0.25
  • CloudWatch $0.69
  • Data Transfer $0.17
  • CloudFront $7.02

Total $146.14

RTOとRPO

  • ステータス障害時のRTO(目標復旧時間) 300秒
  • ステータス障害時のRPO(目標復旧時点) 0秒

  • AZ障害時のRTO(目標復旧時間) 300秒

  • AZ障害時のRPO(目標復旧時点) 0秒

障害ケースにもよるかとは思いますが、目標として。
Aurora Serverlessのフェイルオーバーは「このフェイルオーバーメカニズムは、Aurora プロビジョンドクラスターのフェイルオーバーよりも時間がかかります。 Aurora Serverless のフェイルオーバー時間は、AWS リージョン内の他の AZ の需要やキャパシティーの可用性によって異なるため、現在定義されていません。」
とのことなので、ひとまず300秒としています。
データ損失はない想定です。

Aurora Serverlessの停止におけるコスト削減

WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納するや、Amazon Aurora Serverless のログをCloudWatch Logsに出力するに書きましたように、データベースへのコネクションを減らすことで、Aurora Serverlessが停止して、コスト削減を図れるのではないかと検討してみました。

停止はしますが、5分以内ぐらいでresumeしてます。
1日のうちでもそれほどの停止時間は発生していません。

メトリクスで見てみると、コネクションがない時間は、ACUも0にはなっているのですが、すぐに開始されているようです。
必ずしもコネクションゼロ=アイドル状態、ではないということなのだろうと思います。
WordPressではデータベースをアイドル状態にすることがそもそも難しいのか、もっとログを調査して突き詰めてみるべきか、とも思いましたが、今回はやめました。

2020年初頭のアーキテクチャ

そして、今現在はこうなりました。

2020年1月想定コスト

  • EC2(t3.nano spot 1instance) $1.5
  • EBS $1.5
  • RDS(Aurora Serverless) $23
  • S3 $0.45
  • CloudTrail $0.25
  • CloudWatch $0.3
  • Data Transfer $0.1
  • CloudFront $7.02

Total $34.3

RTOとRPO

  • ステータス障害時のRTO(復旧時間) 12時間
  • ステータス障害時のRPO(復旧時点) 24時間

AZどころか、ハードウェアやソフトウェアレベルの障害でも、これだけのRTOとRPOを許容した、ということですので、企業レベルのアプリケーションでは考えられない構成です。

障害発生時に、EC2インスタンスはAutoScallingではあるので、新しいインスタンスは起動するだろうという想定です。
EIPを付け替えて、復旧完了です。
これはイベントをキャッチして自動化することを検討しています。

RDSはシングルインスタンスなので、スナップショットから復元することを想定しています。
その作業は、日中は仕事しているので無理ですし、夜は寝ているので無理です。
12時間に1回ぐらいはそのタイミングもあるだろうと想定しています。

シングルインスタンスで障害発生やAZ障害のときの状態がどうなるかにもよりますが、ポイントタイムリカバリに頼れない想定で、RPOを24時間で見ています。

差額$100でこれらが買えるのならものすごく安い話です。
ですが、今回はブログ読者の方には申し訳ないですが、12時間は待っていただけるであろう想定です。

実際に障害が発生した際は、また当ブログでご案内したいと思います。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS

ad

ad

  関連記事

AWS Organizations組織でCompute Optimizerを有効にしました

OrganizationsでCompute Optimizerの信頼されたアクセ …

Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証

Quantum Ledger Database(QLDB)を触ったことなかったの …

Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました

パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …

Route53でドメインを新規取得してDNSレコードを設定する

Elastic IPをAWSで発行しているのですから、DNSの設定も同じようにマ …

RDSインスタンス作成時にEC2に接続設定するオプション

EC2 インスタンスと RDS データベース を自動的に接続するの動作を確認した …

Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(1)AWS編~

Pepperの機能を使えるところは使って、何かしたいなあと思ってまして。 目(カ …

AWS X-Ray SDK for PythonをOrganizations組織内にLambda Layersで共有しました

ローカルでパッケージ作成 インストールコマンドはこちらAWS X-Ray SDK …

CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認した

CodeGuru ProfilerでPython 3.9のLambda関数の推奨 …

RDSのポイントインタイムリカバリをしました

WordPressで画像アップロードができなくなった(AWS WAFでブロックし …

ブラウザからJavaScript SDKを使ってAmazon S3 への写真のアップロードチュートリアルをやってみました

ブラウザから Amazon S3 への写真のアップロードをやってみました。 HT …