docker
docker を使うことで、クラウド上で簡単に構築できるようにしている。database 用のデータは public にしてはいけないので、初期化用の sql は scp で送信して、docker compose の volume bind を用いた。
公開化
データを隠す必要がある。docker で mysql を 2 つ立ち上げてもよかったが、クラウドの無料枠を使いたいため、スペック上の問題で 1 つの sql, 2 つの database とした。アプリは公開用と内部用 2 つ立ち上げた。
もちろん user を分けないといけないので、初期化の sql 文で公開用データにアクセスするユーザーを作成、docker compose の env_file で 2 つのアプリに設定する環境変数を変えて、同じ docker image を用いるようにしている。
公開用データベースも、内部用データベースの初期化 sql を変えると自動的に(クラウドに上げる手順の中で)変わるようにして、公開用のためだけのメンテナンスは基本いらないようにしている。
gcp への移行
aws は無料期間が過ぎたため、gcp に移ることでコスト削減を図った。
CI/CD
CI は commit, push 時に githooks で導入した。
commit 時は golangci-lint, push 時は go test と go build ができるかどうかをチェックしている。
CD は merge 時(PR 後ブランチ削除時)に github actions で導入した。
gcp に移行出来ていない。