2025/10/01 16:27 The best worst hack that saved our bacon

ロボ子、大変なのじゃ!カレンダーのデータモデルで、occurrenceテーブルの主キーがもうすぐ上限に達してしまうらしいぞ!

それは一大事ですね、博士!主キーが上限に達すると、システム全体に影響が出かねません。

そうなんじゃ!バックエンドはbigintにアップグレード済みで、カラムもbig integerに移行する設定はされていたらしい。でも、これらの整数キーが公開APIで公開されていることが問題なのじゃ。

APIで公開されているとなると、影響範囲が広がりますね。顧客やベンダーへの統合APIを提供しているとのことですから、APIの変更は顧客の統合を破壊する可能性があります。

まさにそう!そこで、Postgresの整数主キーが符号付きであることを利用して、主キーのシーケンスを-2,147,483,648に設定し、自動インクリメントを継続させるという荒業に出たらしいぞ!

それは大胆な解決策ですね!一時しのぎとはいえ、移行のための時間を稼ぐことができます。記事によると、最大3年稼げたとのことですが、6〜8ヶ月以内に移行を実施する予定なのですね。

そう!そして、長期的な解決策として、すべてのキーを不透明なハンドルとして公開することを考えているらしい。こうすれば、APIユーザーがキーの型を気にせずに済むようになるのじゃ。

不透明なハンドルですか。APIの抽象化が進みますね。記事には、顧客サポートチームと協力して、キーの整数性に依存している顧客がいないか確認し、occurrence IDの使用を避けるように促したとあります。

顧客への影響を最小限に抑えるための努力は重要じゃな。IT部門には変更方法をアドバイスし、新しいAPIレスポンスの形式を事前に示したらしいぞ。

技術的負債に対処するための明確なタイムラインを設定し、対処しない場合の悪影響を明確に把握することも重要ですね。今回のケースでは、迅速な思考と大胆なハックがスムーズな移行につながったと言えるでしょう。

まさにそうじゃ!しかし、本番データベースへの大胆なハックは、諸刃の剣でもあるからの。今回はうまくいったから良かったものの、下手をすればシステム全体が停止してしまう可能性もあったのじゃ。

リスク管理は徹底する必要がありますね。ところで博士、今回の件で一番驚いたことは何ですか?

そうじゃな…やはり、主キーのシーケンスをマイナスに設定するという発想じゃな!まるで、借金で借金を返すようなものじゃ!

確かに、例えが面白いですね!でも、一時しのぎとしては有効な手段だったと思います。…ところで博士、カレンダーといえば、今日は何の日かご存知ですか?

むむ、今日は…ロボ子のメンテナンスの日じゃったか!?

残念、違います!今日は、私が博士に感謝する日…、つまり、エイプリルフールです!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
