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
790
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20220825_uuuo-estie-rails
【Railsエンジニア集合!】身近だけど知らないtoBサービスの裏側をのぞく
で使用したスライドです。
https://estie.connpass.com/event/255928/
tanishi
August 26, 2022
More Decks by tanishi
See All by tanishi
インフラエンジニアが教えるJSの型
tanishi
0
160
Other Decks in Technology
See All in Technology
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
510
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
140
AIが実装を自走する時代の認知負債との戦い
lycorptech_jp
PRO
2
1k
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
490
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
190
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
16
6.3k
Multicaで30個のミニプロジェクトをAIエージェント運用して見えてきたこと
eiei114
1
600
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
340
DatabricksにおけるMCPソリューション
taka_aki
1
320
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
160
OPENLOGI Company Profile for engineer
hr01
1
74k
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
220
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
250
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
350
Thoughts on Productivity
jonyablonski
76
5.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
410
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
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です→