イントロ
普段サーバーサイド周りの開発をメインにしており、フロントエンドの業務は全くやっていません。
定期的にサイトの構成の見直しをする必要があると考えており、ついでに記事として残しておこうと考えました。
この記事を読む皆様が知見を得ることができたら幸いです!!
要件
機能要件
- ブログが書けること
- ツールを提供できること
- プレイしたゲームの攻略メモを公開できること
- 自分で作成したクリエイティブを公開できること
非機能要件
- コストを最低限に抑えること
構成
- サイトのホスト先
- Cloud Run
- 台数を Min: 0, Max: 1 としているため基本的にはアクセスがない限りコストはかかりません
- Cloud Run
- CI/CD
- 現状テストは行なっていませんが、将来的には GitHub Actions で行うと思います
- Cloud Build
- アプリのコンテナイメージ作成及びCloud Runへのデプロイを行います
- HTTPS
- カスタムドメイン(ドメインマッピング)
- 自動的にマネージドの証明書を発行してくれます
- カスタムドメイン(ドメインマッピング)
- 負荷分散
- サーバーレス NEG (Network Endpoint Group) が効率的に負荷分散してくれています(はずです・・・)
今後作成したいもの
- ロードバランサ
- 現在はドメインマッピングを用いてHTTPSの実現を行なっていますが、将来的にはロードバランサを使いたいです
- アクセスの量が多くなるようであれば、CDNの機能を使いたいですね
- またできればWAFも使ってみたいですね
- Cloud SQL
- ツールとしてユーザーごとの情報を保存したり、コメントを保存したり、ブログ記事を保存したり
- Firebase Authentication
- ユーザーごとの情報を保存するために使いたいです
- GCS
- 画像データはGCSに保存したいです
まとめ
現状コストを最大に削減をするために、記事も画像も全てリポジトリ内に保存しています。そのためブログを更新するにしても毎回デプロイする必要が出てきます。
とは言え、自分1人しか触らないので、毎回デプロイしても良いかも?とか思っています。
通常はどのような構成にしているのかアンテナを貼りつつ、サイト構成を見直していきたいと思います。