ブログのアーキテクチャをコストベースで見直しました
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時間は待っていただけるであろう想定です。
実際に障害が発生した際は、また当ブログでご案内したいと思います。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
特定AWSアカウント特定リージョンのSNSトピックを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSNSトピックを全部削除したいで …
-
-
前からできましたっけ??CloudWatch Logsの保持設定を複数まとめて設定
AWSの個人アカウントで要らなさそうなリソースの断捨離をしてます。 CloudW …
-
-
IAMアクセス許可の境界でIAMロールの権限を制御する
IAMユーザー自身の権限はIAMポリシーで制御できますが、IAMユーザーにIAM …
-
-
CloudFrontのカスタムヘッダーがなければALBのルーティングで403レスポンスを返す
大阪リージョンにはWAFがまだないです(2021年4月現在) 今のこのブログの構 …
-
-
JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを作る側からの物申す〜に参加、運営、登壇しました
先日、JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを …
-
-
AWS CDK とにかくサンプルでやってみる
Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …
-
-
AWS KMSマルチリージョンキーを確認しました
2021年6月にKMS マルチリージョンキーがリリースされました。 マルチリージ …
-
-
AWS Organizations組織でCompute Optimizerを有効にしました
OrganizationsでCompute Optimizerの信頼されたアクセ …
-
-
Aurora Serverless Data APIを有効にしてQuery Editorを使ってみました
Aurora ServerlessのMySQLでData APIを有効にして作成 …
-
-
S3バケットのデフォルト暗号化はデフォルトだったことを確認しました
S3バケットのデフォルト暗号化は名前のとおりだとデフォルトなので、暗号化を指定し …