Closed HomMarkHunt closed 8 years ago
@disc99
- Flyway Command-line Toolは本番環境でも使用する? となるとサーバにもToolをインストールする前提?gradlewやmvnwみたいな実行環境依存の無い仕組みで構築する前提じゃなくても大丈夫?
当初はサーバにもToolをインストールし、sshで手動でflyway migtrate
とか叩く想定でしたが、手動での実行は事故りそうなのと某靴ECサイトの筋肉の人にアドバイスをもらい。
のどちらかを考えています。
ビルドツールが決まっていないので今一歩決めかねている状況です。
- 別リポジトリで管理する場合、開発中のアプリリポジトリとFlywayリポジトリの整合性はどうやって維持する? 場合によっては、ブランチ単位でテーブル構成が違ったりする状態は発生するはず。
たとえばaraigneeのfeature/hogeで開発中にDBの変更があった場合はDB用リポジトリもfeature/hogeを作成して整合性を維持する想定です。
で、あればaraignee内でflawayも管理すれば... とも最初に思ったのですが。araigneeがデータ格納したDBを使う側アプリ(名前未定)の作成中にDB構成を変えるケースがほぼ確実にあるかなと考えています。
その時にDBの変更するためにaraignee自体を変更するのではなくDBだけは別で切り出したほうがわかりやすいかなと思ったのでこの構成を考えました。
回答が的を得ていなかったらすみません。
たとえばaraigneeのfeature/hogeで開発中にDBの変更があった場合はDB用リポジトリもfeature/hogeを作成して整合性を維持する想定です。
運用方法が決まっているのであれば、別リポジトリでも大丈夫かな! 分離して管理するのが手間であれば、後で統合してもいいだろうし。
それと、Command-line Toolは使ったこと無いからよく分かってないけど、実行環境にインストール前提で開発を進めていくと後々環境の管理に苦しみそうだから、ビルドツールだけで完結できてたほうが、環境移行やローカルの環境構築も楽になると思う。
chappieがマイグレーションしてくれるってのも面白そうではあるけどw
ビルドツールだけで完結できてたほうが、環境移行やローカルの環境構築も楽になると思う。
ありがとうございます! 実行方法を調べてみたのですが、
という方法があるみたいです。 ローカルは1. 本番は3.の実行方法がいいかなと思いました。
一度手元で諸々試してみます!
ローカルを1にしたい理由はある? それだと環境によってコマンドを使い分けないといけないのと、command line toolのバージョンコントロールが出来ないから、ローカルも本番も全部Gradleで実行するようにしてしまったほうが楽な気もするけど!
ローカルを1にしたい理由はある?
あー。これは以前現場でflyway使ってた時にローカルはコマンド叩いてたから。ってだけですね!確かに両方Gradleから実行のほうが良さそうです!
まとめ書いてて出てきた確認したいことがでてきました。
のどちらにgradleタスクを書くべきか?
当初ふわっと考えていたのが 「DB管理リポジトリをgradleで作成して build.gradle
内にmigrate用の諸々を記述」 です。
その場合、
もしくは、
のどちらかの方法で実行できるようにする必要があると思いました。
この認識であっていますでしょうか?
こういうことを悩むくらいなら、レポジトリを分けない方が良いだろうね。
むむむ... 確かによくわかってないですぞ...
Gradleから実行されるFlywayがどこのSQLをいつ実行するのかがよくわかっていないなと思いました。 まとめ書いてて、仰る通り「araigneeに書いたほうがまだわかるのでは...」と思っていました。
今回はaraigneeの build.gradle
に記述して、SQLもaraignee内に含める。に返させていただこうと思います。
お二人せっかく見ていただいたのに申し訳ございません。一旦まとめ直します。
また、今度お時間あるときにちょっと質問させていただけると嬉しいです。
[]
このチケットで決めるべきこと。(flywayを使う)は決まり、終了条件であるLGTM2つも獲得済みなので、本チケットはクローズし。 Flywayをどのように利用していくかは #39 にて決めます。よってクローーーズ!!
前提
DBを使用する際に下記理由からマイグレーションツールを使用する。
使用するツール
選定理由
という違い。
以上の理由からDBのマイグレーションツールはFlywayを使用する。
Flywayの開発環境
Localでの使用方法
Flyway Command
を実行。issue終了条件
@dodoichi @disc99 2名による
LGTM
を獲得。