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
400
0
Share
Rails_on_EKSのマイグレーション_失敗パターンを検証してみた
納谷太陽
September 25, 2025
More Decks by 納谷太陽
See All by 納谷太陽
Kubernetesを手元で学ぼう! 初心者向けローカル環境のススメ
nayaaaa
2
1.6k
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
The World Runs on Bad Software
bkeepers
PRO
72
12k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Building an army of robots
kneath
306
46k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Building Applications with DynamoDB
mza
96
7.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Design in an AI World
tapps
1
220
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Designing for Timeless Needs
cassininazir
1
250
Un-Boring Meetings
codingconduct
0
300
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
ご清聴ありがとうございました!!