[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】1行の変更でStrapiの本番DBを吹き飛ばした話 [Qiita_Trend] | Summary by TechDistill

> Source: Qiita_Trend
Execute Primary Source

// Problem

開発者が本番環境のStrapi管理画面でスキーマ変更を行った際、デプロイによってデータが消失する問題に直面した。
  • 本番環境が NODE_ENV=development で動作していた。
  • 管理画面での変更が、Git管理外のサーバー上のファイル(schema.json)にのみ反映されていた。
  • デプロイ時の --force push により、サーバー上の変更がGitの古い状態に上書きされた。
  • Strapiの起動プロセスが、古いコードに合わせてDBのテーブルやカラムを削除した。
これにより、意図しない DROP TABLE 等が実行され、本番データが消失した。

// Approach

開発者は、事故のメカニズムを特定し、スキーマ管理とデプロイフローの改善というアプローチを採用した。
  • スキーマ変更フローの厳格化:ローカルで変更を行い、schema.json をGit経由でデプロイする。
  • 実行モードの固定:本番環境では NODE_ENV=production を指定し、スキーマ編集をロックする。
  • デプロイプロセスの改善:--force push の使用を再検討し、デプロイ前のDBバックアップを自動化する。
  • 運用ルールの徹底:本番管理画面はコンテンツ入力専用とし、構造変更は開発工程に組み込むことで、コードとDBの不整合を物理的に防ぐ。

// Result

開発者は、事故のメカニズムを解明し、Strapiの正しい運用モデルを確立することで再発防止を図った。
  • 本番環境でのスキーマ変更を不可能にし、意図しないDB操作を防止する。
  • DBバックアップの自動化により、万が一の際のリスクを低減する。
  • 一部のデータは消失したが、運用フローの改善により再発を防止した。
これにより、コードを唯一の正解とする堅牢なデプロイフローが構築され、開発と運用の分離が明確化された。

Senior Engineer Insight

> Strapiの「スキーマはコードである」という設計思想を軽視したことが致命傷である。管理画面を「DBエディタ」と誤認してはならない。本番環境では、コードを唯一の正解(Single Source of Truth)とし、環境変数によるモード制御を徹底すべきだ。また、CI/CDにおける --force の使用は、状態を持つサーバーに対しては極めて高いリスクを伴う。スキーマ変更は必ずローカルで行い、Gitを通じてデプロイするフローを遵守せよ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。