【要約】公文書431件が消えた日──市川市会議録障害に潜む福泉株式会社の「スクレイピング初歩ミス」の構造 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
市川市のWebサイトリニューアル時、受託事業者が会議録を誤って上書きした。これにより431件の公文書が消失した。
- データ移行におけるユニークキー衝突時の制御不足。
- 新旧システム間でのID設計の不整合。
- 障害発生から復旧まで26日間を要した運用体制の不備。
- データ移行におけるユニークキー衝突時の制御不足。
- 新旧システム間でのID設計の不整合。
- 障害発生から復旧まで26日間を要した運用体制の不備。
// Approach
記事では、データ移行時に既存データを保護するための実装指針を提示している。
- SQLの
-
- 移行前に新旧のID集合を比較し、衝突を検知するスクリプトを実行する。
- SQLの
ON CONFLICT DO NOTHING を用い、既存レコードを保護する。-
uuid 等を用いた、グローバルに一意なID設計を採用する。- 移行前に新旧のID集合を比較し、衝突を検知するスクリプトを実行する。
// Result
障害は26日後に復旧したが、公文書の消失という重大な事態を招いた。
- 431件の会議録が一時的にWeb上から消失。
- 議員への告知がゼロであり、行政の情報ガバナンスに課題を残した。
- 技術的な初歩ミスが、行政への信頼失墜に直結した。
- 431件の会議録が一時的にWeb上から消失。
- 議員への告知がゼロであり、行政の情報ガバナンスに課題を残した。
- 技術的な初歩ミスが、行政への信頼失墜に直結した。
Senior Engineer Insight
> データ移行は、単なるデータの移動ではない。既存資産の破壊を防ぐ「防御的設計」が不可欠だ。本件は、SQLのUPSERT制御やID設計という、極めて初歩的な検証漏れが原因である。大規模システムでは、ステージング環境での衝突テストと、即時ロールバック可能な手順の整備が、技術責任者の責務である。