
かどで日記の技術の話#2「インフラ」(2022秋)
仮想環境?それはローカルだけです……
かどで日記のリポジトリには立派なdocker-compose.ymlがあります。
でもローカルの環境構築でしか使われていません……
個人開発の味方、VPS
かどで日記の本番サーバーはKAGOYA CLOUD VPSを使用しています。
理由はコスパが良くてスケールもできる国内インスタンスだから。
コスパの良さについて
https://www.kagoya.jp/cloud/vps/price/
まず、トラフィック量に応じた料金がかかりません!
ですのでCPU、メモリ、ディスクの3つで維持費を決め打ちできちゃいます。
しかも記録的円安のご時世にありがたい円建てですよ……!
スケールについて
一度シャットダウンは必要なものの、中の構成を維持したままスケール(CPUのコア数,メモリ容量,ディスク容量)の変更ができます。
もちろん限界はありますがユーザー数が多少増えたぐらいなら余裕で対処できるはず……です……(ロードバランサの機能もあるので頑張れば複数VPSによるレプリケーションもできそう)
現代社会について
現代社会ではAWSのEC2をTerraformで記述したり、もっといえばk8sでyamlを元にDockerコンテナを泳がせちゃう世界です。
正直私は技術力不足と資金不足で逃げちゃってます……
ユーザー数が手と足で数え切れる我がサービスは、現状で必要十分という側面が大きいです。
目的が明確にないとやる気が出ない性分です……
就活のためにはAWSなどのクラウドサービスを使うべきですが、「かどで日記」はあくまで個人で末永くやっていく側面が強いので(言い訳……)
デプロイの流れ
そんなかどで日記のインフラ構成ですが、デプロイは自動化されています。
ローカルで開発
↓
PR作る
↓
テストが走る(GitHubActions)
↓
mainブランチにマージ
↓
サーバーにデプロイ(GitHubActions)
が大まかな流れです。太字部分を詳しく書かせていただきます。
テスト
PRが投げられたタイミングでGitHubActionsによるテストの実行を行っています。
単体テスト
(ほとんど未整備)結合テスト
(500エラーになっていないかの表示チェック、テスト用のデータベースを使った書き込み、Pythonとの連携動作チェックなど)ブラウザテスト
(表示のチェック、リンクやボタンのクリックが意図した遷移をするかのチェックなど)
→CI側のChromeのバージョンがうまく併せられず一時停止中……
を行っています。
これらテストと併せて
PHPStanによるPHPの静的解析
PHP Coding Standards FixerによるPHPのコーディング規約チェック
LGTMによるJSとPythonの静的解析
Pull Request Labelerによるコミット内容に基づくラベルの自動付与
もGitHubActionsにて行っています。
GitHubActionsに命救われています……ありがたい……
デプロイ
デプロイもGitHubActionsを用いています。流れは
git pullでサーバー内に最新のmainブランチを取り込む
composer installでPHPライブラリのインストールを行う
Laravelのキャッシュを再生成する(config,route,view)
yarn installでJSライブラリのインストールを行う
yarn buildでJSとCSSのビルドを行う
といった形です🚀
山積みの課題と予算
ローカルではDocker運用をしているため、これを調整すれば本番運用のDocker化もできそうです。
k8sにしちゃえばスケールの調整まで含めて良い感じにできちゃいます。
ユーザー数が増えた時にいつでもクラウド移行ができるようにIaCの整備が必要だと考えています。
ゆくゆくはカナリアリリースなどの機構も用意したいところです……
あとサーバーとログ監視も!!
気軽にクリエイターの支援と、記事のオススメができます!