Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
730
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
150
Other Decks in Technology
See All in Technology
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
620
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.1k
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
200
AWS re:Invent 2025~初参加の成果と学び~
kubomasataka
0
180
20251222_サンフランシスコサバイバル術
ponponmikankan
2
130
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
150
S3を正しく理解するための内部構造の読解
nrinetcom
PRO
3
240
IAMユーザーゼロの運用は果たして可能なのか
yama3133
2
520
特別捜査官等研修会
nomizone
0
530
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.3k
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
1k
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
230
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
250
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
190
4 Signs Your Business is Dying
shpigford
186
22k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
29
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
35
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
51
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です→