Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20220825_uuuo-estie-rails
Search
tanishi
August 26, 2022
Technology
1
670
20220825_uuuo-estie-rails
【Railsエンジニア集合!】身近だけど知らないtoBサービスの裏側をのぞく
で使用したスライドです。
https://estie.connpass.com/event/255928/
tanishi
August 26, 2022
Tweet
Share
More Decks by tanishi
See All by tanishi
インフラエンジニアが教えるJSの型
tanishi
0
140
Other Decks in Technology
See All in Technology
OPENLOGI Company Profile
hr01
0
61k
SpannerとAurora DSQLの同時実行制御の違いに想いを馳せる
masakikato5
0
560
SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication
kaityo256
PRO
2
210
Why Go?
xpmatteo
0
130
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
9
3.9k
Go の analysis パッケージで自作するリファクタリングツール
kworkdev
PRO
1
370
AIエージェント完全に理解した
segavvy
4
250
Reactを段階的に覗いてみる
ytaisei
2
940
20250326_管理ツールの権限管理で改善したこと
sasata299
1
310
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
tarappo
4
880
3/26 クラウド食堂LT #2 GenU案件を通して学んだ教訓 登壇資料
ymae
1
190
Cline、めっちゃ便利、お金が飛ぶ💸
iwamot
19
18k
Featured
See All Featured
Navigating Team Friction
lara
184
15k
Building Adaptive Systems
keathley
41
2.5k
RailsConf 2023
tenderlove
29
1k
The Pragmatic Product Professional
lauravandoore
33
6.5k
Docker and Python
trallard
44
3.3k
Producing Creativity
orderedlist
PRO
344
40k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Typedesign – Prime Four
hannesfritz
41
2.6k
BBQ
matthewcrist
88
9.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Transcript
migrationのテストについての試行錯誤 2022/08/25 【Railsエンジニア集合!】 身近だけど知らないtoBサービスの裏側をのぞく tanishi@tanishi345
1 1. スキーマ変更を伴うデータ移行のテスト 2. テスト方法の検討 1. スキーマ変更とデータ移行を分けるパターン 2. スキーマ変更とデータ移行を分けないパターン 3.
やってみて Agenda
2 • たにし(大西 諒)@tanishi345 • SWE@estie • TypeScriptが好き • テストコードや設計について考えるのが好き
• estie proの開発 • Vue / Rails tanishi345
スキーマ変更を伴うデータ移行のテスト
4 スキーマ変更を伴うデータ移行とは
5 スキーマ変更を伴うデータ移行とは 仕様変更やモデリングの改善を目的としたスキーマ変更
6 スキーマ変更を伴うデータ移行の具体的な例 1. テーブルの作成 2. データの移行 3. カラムの削除
7 スキーマ変更を伴うデータ移行の具体的な例 1. テーブルの作成 2. データの移行 3. カラムの削除
8 何故難しかったのか 20220823090000 20220824090000 20220825090000 migrateのテストがしたい rollbackのテストがしたい
マイグレーションとデータ移行を分けるパターン
10 マイグレーションとデータ移行を分けるパターン マイグレーションと データ移行を分けるほうがいいのでは?
11 マイグレーションとデータ移行を分けるパターン • これならテストしやすい?
12 マイグレーションとデータ移行を分けるパターン • これならテストしやすい? • そんなことはなかった
13 マイグレーションとデータ移行を分けるパターン • これならテストしやすい? • そんなことはなかった • 最新のマイグレーションにする 必要があるため
14 マイグレーションとデータ移行をp-r単位で分けるパターン 1つ目のp-r テストコード
15 マイグレーションとデータ移行をp-r単位で分けるパターン 2つ目のp-r テストコードと該当スクリプトの削除
16 マイグレーションとデータ移行を分けてみた結果 • わかったこと • p-r単位で分ける必要が出てくる • データ移行後は削除するので経緯がわかりづらい • 久しぶりに開発に参加した人などが困るケースがある
• DBのスキーマバージョンを固定してテストしたい…
17 その後の調査 • 調べてみると • GitLabは自前でライブラリを作ってこの辺りをやっていそう • https://gitlab- docs.creationline.com/ee/development/testing_guide/testing_migrations_g uide.html
• 更に調べてみる
マイグレーションとデータ移行を分けないパターン
19 マイグレーションとデータ移行を分けないパターン • テストのセットアップタイミングで スキーマのバージョンを固定したい
20 どういうことか 20220823090000 20220824090000 20220825090000 migrateのテストがしたい rollbackのテストがしたい
21 どういうことか 20220823090000 20220824090000 20220825090000 migrateのテストがしたい rollbackのテストがしたい
22 実際のテストコード
23 実際のテストコード(セットアップ)
24 実際のテストコード(テストしたいメソッド)
25 実際のテストコード(値の検証)
26 まとめ • 思ったより簡単にテスト時に マイグレーションのバージョンを固定することができた • おかげでスキーマ変更しながらのデータ移行もテストできる • スキーマが正しいかはdb/schema.rbで担保 •
データ移行が正しいかはテストで担保
27 その他の課題 • データ移行とアプリケーションコードの反映タイミングをどうするか • データ移行を先にやると既存カラムを更新された場合に都合が悪い • estieでは夜ユーザーが少ないタイミングを見計らってやっています
28 最後 • 話足りないことはまだあります! • 色々情報交換したい人 • MeetyのURLです→