1.動機
①セットアップ
最近、開発環境をセットアップすることが増えました。
Docker環境が整備されたことで、かなり楽にセットアップを行うことができました。しかし、DBの変更まで、完璧に同期することはかなり難しいです。
②PR確認
DB変更を伴う機能追加や修正の場合、レビュアーはローカルのDBに変更を加える必要があります。しかし、レビューが終わったら元に戻す必要があったりと、かなり時間と手間がかかってしまいます。
2.検討
どんなサービスを使うか?
【要件】
・MySQL5.7
・~20GBの容量
結果として、LightsailのDBインスタンスを利用する形にしました。
エントリーNo.1:RDS for MySQL
Good
・本番環境に近い形で運用が可能
・最小構成で20GBから始められる
・社内ノウハウもある
Bad
・高い!(使わない時間は停止すればコストダウン可能)
エントリーNo.2:Lightsail
Good
・安い!
・リカバリーが簡単にできる
Bad
・可用性が微妙
・最小構成が40GB~
3.導入
LightsailのDBインスタンスでは、下記のようにパブリックネットワークにすると危ないかもよ?と脅されます。
同じリージョンにあるインスタンスであれば、アクセスできます。
なので、踏み台用のインスタンスを用意します。
「俺は、ローカルからアクセスしたいんだよ!!!話が違うじゃないか!」
そんなあなたに、SSHポートフォワーディングを!!!
・SSHポートフォワーディングとは?
ローカルから踏み台サーバーのネットワークにアクセスし、DBにアクセス可 能にできます。こんな感じです↓
・Point
リモートDBに繋ぐ際は、ローカルのDockerから一度出て、SSH Clientのポートフォワーディングで踏み台サーバー経由でリモートDBに繋ぎます。
4.まとめ
少々面倒な方法になってしまいましたが、リモートDBがあることで、開発のスピードが格段に上がったよに感じます。
今後も、ロジック周りの環境が変化することはあると思うので、データと隔離するメリットはあると思います。