先日リリースした、『g4』というポモドーロ+RPGなサービスの開発周りの運用ついて残しておきます。
開発周りは結構発展途上で、整えたい部分がいっぱいあるので、現状の改善点を自分用にメモ。
ちなみに、技術周りについてはこちらに書きました。
React PWA + Rails GraphQLで作ったポモドーロサービスに使った技術やその選定理由を書いてみた
開発運用周りはこんな感じ
- フロントエンドとバックエンドのリポジトリが別れている
- フロントエンド
- Github Actionsでテストを回している
- ②デプロイは手動である
- Firebase storageのcors設定や、Cloud Run、fly.ioへのデプロイを手動で行っている
- fly.ioはステージングと本番に加えβ版的にUIを確認するアプリがあり、3つ全部に手動でデプロイしてる
- バックエンド
- circleciでテストを回している
- テストが通れば、GAEにデプロイされる③
- GAEにはstagingタグとcommitハッシュタグの2バージョンが1度にデプロイされる
- stagingが問題なければ本番はGAEのコンソールからバージョンを切り替えることで反映する
- DBのmigrationは自動化しておらず開発端末から手動で実行してる
- ステージング検証
- バックエンドの修正は基本的に後方互換性を残して行っている(反映終わったら消すこともある)
- バックエンドのステージング反映を行い、フロントは古い状態で確認を行う
- 問題なければフロントもステージングに反映して確認
- リリース前検証
- ステージング問題なければバックエンドを本番反映
- フロントエンドはbetaチャンネルのみ反映
- betaの状態で1日くらい使ってみて、問題なさそうなら本番に反映する
- バージョンアップ
- パッケージのセキュリティアップデートなどは①Dependabotを使って対応しています。アップデートあると勝手にGithubにPR作ってくれてめっちゃ便利なのでおすすめ
- エラー検知
- フロントエンドもバックエンドもSENTRYを入れています。何かあれば個人用のSlackに飛んでくる④
- ④Pivotal Tracker
- 課題管理的なやつです。
- こいつは相棒です。
- 本業でも使ってるんですがとても優秀。優先順位付けの管理しやすいので個人開発にも向いてる
- 自分はg4に限らず、個人開発でやることをすべてこいつに突っ込むようにしてます。
- g4以外でも優先度高い対応あればそっちをアサインしたりできてよい
- あと開発以外の「この記事書く」とかのタスクも全部入れてます
みたいな感じです。
いいとこ
- バックエンドの本番反映はDBマイグレーションを除けば自動化できていていい感じです
- betaチャンネルでUI検証するのいい感じ。割とフロントエンドだけ直すってことも多いので、この運用は良い
- SENTRYの安心感。こいつ無いと不安すぎますね
- Pivotal Tracker万歳
改善したいとこ
-
フロントエンドのデプロイを自動化したい感
- これ 実装されたらなぁ。masterマージでstagingは自動で反映して問題なかったら、ボタンポチーしてbetaとか本番配信できると嬉しい。ブランチ分けて自動化すればできるけどそうじゃないんだよなぁ。。。
- いや、masterブランチマージした後戻したいとか、beta確認中に緊急対応とかあるので分けるほうがいいとは思うんですが、まだ1人だしmasterブランチ以外の管理をしたくないんですよね
-
バックエンドのDBマイグレーション
- GAEでDBマイグレーション走らせた後ってもしかして、アプリの再起動必要系じゃないです? なんかそんな挙動だったんですよね。今怖いから再起動してるけど、再起動結構時間かかるのでどうにかならんものか
- あとDBマイグレーションの自動化したい
-
バックエンドデプロイ時間かかる
- GAEデプロイ遅いすね...20分くらいかかってる
- Dependabotわりとエラーでずにマージできるんだけど反映に時間かかるのでマージ躊躇しがち
-
フロントエンドのDependabot
- そのままマージできることがほとんどない。なんか改善できるんだろうか
そんな感じでg4開発してます。