ヤマムギ

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アカウントをAWS Control Towerに追加

Account Factoryからは既存アカウントは追加できない? AWS Co …

AWS SSOのパスワードリマインダーでADのパスワードを変更

AWS Managed Microsoft ADを構築してユーザー追加までで構築 …

EC2 Instance Connect エンドポイントの作成

このブログのSystems Managerは機能としてセッションマネージャーしか …

RDSスナップショットをS3にエクスポートする新機能を試そうかと思った

やったこと RDSスナップショットをS3にエクスポートできる、という新機能が追加 …

前からできましたっけ??CloudWatch Logsの保持設定を複数まとめて設定

AWSの個人アカウントで要らなさそうなリソースの断捨離をしてます。 CloudW …

[JapanTaxi] Athena 指向アナリティクス 〜真面目に手を抜き価値を得よ〜(AWS Summit Tokyo 2017)を聞いてきました

Athenaのユースケースとして聞きにいきましたが、最近触ってるRe:dashも …

Amazon EC2 Auto Scalingのライフサイクルフック

EC2 Auto Scalingにライフサイクルフックという機能があります。 ス …

AWS Cost Explorerの履歴を38ヶ月とリソース別コストを見られるように設定しました

AWS Cost Explorer がより詳細な履歴データの提供を開始 知らなか …

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

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

Systems Manager パッチマネージャでベースラインを作成して適用する

ベースラインの作成 Systems Managerのパッチマネージャーでパッチベ …