【AWS】個人ブログ構築してみた 技術選定編

こんにちは。 今回は、運営している個人ブログの技術選定についてまとめます。
技術選定では、主にコスト面・CI/CD面を重点的に考慮しました。
この記事では、選んだ構成やその理由について具体的に紹介します。

システム構成の全体像

ブログのシステム構成をざっと図で表すと以下のイメージです。
システム概要

① Hugoでコンテンツをビルド

② GitHub Actionsで自動デプロイ

③ S3 + CloudFront (+ ACM)でホスティング

④ ユーザはHTTPS通信でブログにアクセス

という流れになります。

静的サイト (S3 + CloudFront) を選んだ理由

ブログのホストサーバーには、EC2常時起動やFargate等の選択肢もありましたが、S3単体で非常に安価にホスティングできる という点で静的サイトを選択しました。

ホストサーバー側および独自ドメインでは、200~300円程度/月で運用できる試算です。

・S3(Standard, Tokyo)料金 - 誤差レベル
・通信料金 - 誤差レベル
・Cloudfront料金 - 誤差レベル
・ホストレコード - 約80円(0.55USD)/月
・ドメイン費用 - 約100円/月
※S3+通信料金+Cloudfront<=100円と仮定。

Hugoを選んだ理由

他の静的サイトジェネレーターの選択肢も検討しましたが、最終的にHugoを採用しました。

テーマが豊富で、すぐに着手できる
→ ウェブコーディングの知見があまりなかったので、ブログに合うテーマ(デザインモックのようなもの)から選択したいなと考えました。テーマを決め、そこから微調整することで素早く開発可能です。
参照:Theme - Hugo

コミュニティが活発でトラブルに対応しやすい
→ GitHubのIssueやトラブルシューティング記事も割と上がっていたため、Hugoであれば自走できると判断しました。

GitHub Actionsを選んだ理由

ローカルからS3への静的サイトファイルのデプロイには、Github Actionsを使用していますが、Hugoプロジェクト管理とデプロイを並行して行うためです。

ブログの更新にあたり、S3へのデプロイと並行して、Hugo最新プロジェクトファイルは必ずGitHubにプッシュする運用にしています。
GitHub Actions上でプッシュとデプロイと管理してしまえば、最新版の管理とS3への反映を一元化できます。
これにより、いつ・どのバージョンをデプロイしたのかをGitHubの履歴で厳格に追跡でき、かつ最新プロジェクトのプッシュ漏れも防げます。

終わりに

特に個人ブログの場合、運用や固定コストが大きく負担となります。
だからこそ「なるべく管理しなくて済む」、「一元化する」仕組みを選ぶことが重要となります。
まだまだ改善の余地がありますが、今後さらにシステムの効率化が出来ればいいなと思っています。

この記事のように本ブログでは、特に運用面、コスト面、どのようにシステム選定したか、裏側のプロセスも紹介していきます。

それでは。