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
Rails_on_EKSのマイグレーション_失敗パターンを検証してみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
納谷太陽
September 25, 2025
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rails_on_EKSのマイグレーション_失敗パターンを検証してみた
納谷太陽
September 25, 2025
More Decks by 納谷太陽
See All by 納谷太陽
Kubernetesを手元で学ぼう! 初心者向けローカル環境のススメ
nayaaaa
2
1.7k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
520
How GitHub (no longer) Works
holman
316
150k
Building AI with AI
inesmontani
PRO
1
1.1k
Side Projects
sachag
455
43k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Faster Mobile Websites
deanohume
310
32k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
Chasing Engaging Ingredients in Design
codingconduct
0
260
Six Lessons from altMBA
skipperchong
29
4.4k
Transcript
Rails on EKS マイグレーション 失敗パターンを検証してみた SATORI株式会社 納谷太陽
自己紹介 @NayaTaiyo • 年齢:25歳 • 会社:SATORI株式会社 • 好きな食べ物:ラーメン、カレー • 趣味:音楽を聴くこと
• 好きな技術:Ansible、Kubernetes、AWS • Qiita:@nayaaaa • GitHub:nayataiyo
なぜやろうと思ったか? • 最近転職してRailsを学習する必要がある • ITインフラ 勉強もサボるわけに いかない 何か効率 良い方法 ないか
🤔 そういえ Kubernetes勉強したときにITインフラについて 網羅的に学習できた気がしたな....
None
Rails マイグレーションと ? マイグレーション(migration) Active Recordと呼 れるRails 標準機能 1つで あり、データベーススキーマが長期にわたって進化を安定して繰り返せるようにす
るため 仕組みです。 マイグレーション機能 おかげで、スキーマ変更を生SQLで記述せずに、Rubyで作 成されたマイグレーション用 DSL(ドメイン固有言語)を用いてテーブル 変更を 簡単に記述できます。 ▪ 公式ドキュメント https://railsguides.jp/active_record_migrations.html
# 失敗時:直近に戻す→確認 bin/rails rollback STEP=1 bin/rails db:version # 生成→適用→確認 bin/rails
g model novice name:string description:text bin/rails db:migrate bin/rails db:version # 変更(列追加)→適用→確認 bin/rails g migration AddNayanayaToNovices nayanaya:text bin/rails db:migrate bin/rails db:version
というようにめちゃくちゃ便利な機能です!! で 本題 失敗パターン ど ようなも がある かな?
Rails on EKSマイグレーション 失敗パターン • 複数 db:migrateが同時実行 • InitContainerにdb:migrateを記述する •
Resource不足で OOMKilled ※他にも様々なパターン(IAM権限やDB権限不足など)が あるかもしれないですが検証まで行えた これらになります。
複数 db:migrateが同時実行 • Deployment マニフェストに以下 ような記述をして applyすると?
Datadogで確認すると以下 ようなエラーを発見 👀
結果めちゃくちゃ時間がかかった....
InitContainerにdb:migrateを記述 • 何がまずいか? ◦ InitContainerでdb:migrateがこけるとアプリケーションコンテナが起動しな い ◦ 複数 db:migrateも同時実行されてしまう ◦
エラーが発生した際にログ 確認がしづらい
そもそもInitcontainerってなんだっけ? 単一 Pod 、Pod内にアプリケーションを実行している複数 コ ンテナを持つことができますが、同様に、アプリケーションコンテナ が起動する前に実行されるInitコンテナも1つ以上持つことができ ます。 また、Initコンテナ そ
Pod 準備ができる前に完了する必要 があります。 ▪ 公式ドキュメント https://kubernetes.io/ja/docs/concepts/workloads/pods/init-containers/
実際にInitcontainerでこけた例👇
None
Resource 不足で OOMKilled • 何がまずいか? ◦ resources:limits 制限によりOOMKilled発生 ◦ OOMKilledによりPODがCrashLoopBackOffとなる
OOMとresources:limitsと ? OOM アウトオブメモリ(Out Of Memory) 略でシステムが必要 とするメモリ容量を確保できず、処理 続行が不可能となり発生 するエラー
こと。 resources:limits Kubernetesで 、コンテナによって使用される リソース 最大量 設定値 こと。メモリ量とCPUが定義できる。 ▪ 公式ドキュメント https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-memory-res ource/
• OOMKilled→ClashLoopBackOFFにSTATUSが変化している kubectl getコマンドで確認してみると 👀
kubectl describeコマンドで確認してみると 👀
適切なリソース 調整が必要 or resources:limitsを設定しない?
余談な ですが.... 登壇って失敗パターンを見える化してる発表ってあんまりないですよ ?
まとめ • db:migrate ジョブで分離し、CI/CDなどで制御する。 • 適切なリソース 調整が必要 • 初めて オンライン登壇
👏 👉 初めて触る技術が多かった で学びが多かった 良かったです。 と いえ、実務で扱っているわけで ない で有識者 方ナレッジ募です。
Datadog トライアル期間終了 • お気づきかもしれないですが、検証途中でDatadog トライア ル期間が終了した で途中 スライドからkubectlコマンドで 確認する形としています😭 Proプランに入会しようかなぁ....
参考リンク • https://kubernetes.io/ja/docs/concepts/workloads/pods/init-containers/ • https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-memor y-resource/ • https://speakerdeck.com/takeru_ichii_0901/rails-on-kubernetes-tousuru-00?sli de=58 •
https://qiita.com/MahoTakara/items/ef8ce41dfb5bc9308185 • https://medium.com/codex/database-migration-when-your-service-is-runni ng-in-kubernetes-abbe9697421d
ご清聴ありがとうございました!!