誰、私?毎週のコラム「誰、私?」で、自ら招いた痛みの物語を語り、週末のお祭り騒ぎに別れを告げましょう。
ドン(ここでは彼を「ドン」と呼ぶことにする)は、先日報じた通信会社テロ事件によって、データベース関連の自身の魂の暗夜を思い出した。彼はThe Registerの同情的なハゲタカたちに全てを打ち明けるために連絡を取った。
ドンは、営業・受注処理やCRM業務に使用されていた、社内の古いアプリケーションやサービスを置き換える新システムの開発に取り組んでいました。今日の統合された世界では、このフレッシュなプラットフォームは新製品のバックエンドとしても機能するでしょう。
熱意は大混乱の母であり、ドン氏は次のように説明しています。「新しい試用製品のバックエンドはすでに稼働しており、一部の試用顧客が使用していましたが、このシステムの主要部分はまだ社内でリリースされていませんでした。」
すべてを稼働させなければならないというプレッシャーは強烈でした。当然のことながら、古いシステムとデータは、新しい世界に必死に引きずり込む必要がありました。ドンはこう語ります。「本番稼働までの間、かなりの忙しさがあったと言うのは控えめな表現です。この新しいプラットフォームを準備するために、3週間連続で週60~70時間働きました。」
怠惰なコンピュータサイエンスのスキルは悪魔のおもちゃだ
続きを読む
「チームのデータベース担当リーダー」と自称するドンは、移行を成功させるという任務を担っていました。プロセスは「うまくいきましたが、あまりにも遅すぎました」。そして当然のことながら、長時間のテスト実行のたびに環境をリセットする必要がありました。
「私たちは明らかに長い間これに取り組んできました」とドンは言った。「それで結局、私は怠け始めたのです。
「クリーンなバックアップのセットから完全な環境リセットを実行する代わりに、TRUNCATE ... CASCADE
プライマリ テーブルの 1 つに対してステートメントを使用しました。」
コードを実行した後、ドンは古いシステムの担当者にもう一度長時間のテスト実行を開始する許可を与え、皆さんと同じように少し買い物に出かけました。
ドンが戻ってくると、Slackのメッセージが届いていた。テストは失敗していた。
奇数。
ドンは問題を考えてみた。「一番単純な説明は、テーブルを切り詰めていなかったということだ」と彼は言ったが、そのTRUNCATE
コマンドを実行したことをはっきりと覚えていた。「間違った環境で実行していたのなら話は別だが」
括約筋を緩める大失敗のフローチャートにおける次の質問は、「待ってください...どのデータベース クラスターに接続されていたのでしょうか...?」でした。
実際の顧客トライアルデータをすべて含むものではありませんか? まさか。
「クソ、クソ、クソ、クソ、クソ…」
PostgreSQLの便利さをご存知ない方のために、これはTRUNCATE
テーブルを消去する機能です。このCASCADE
オプションを追加すると、リンクされたテーブルも消去されます。PostgreSQLのドキュメントには、「このオプションを使用する際は十分に注意してください。意図しないデータが失われる可能性があります!」という警告があります。遅いDELETE FROM
関数とは異なり、TRUNCATE
この関数は不正なアクティビティをトランザクションログに記録しないため、ロールバックは実行できません。
ドンは、軌道上から生産クラスターを核爆弾で破壊し、その被害を回復する方法がないことに気付いたときの感覚を表現するのに「パニックに陥る」という表現を使いました[この表現がとても気に入っています – エド]。
しかし、ドンは近くのPFYに責任を押し付けようと必死になるのではなく、正しい判断を下し、自らの過ちを認めました。オンコールチームには「ダウンタイム」が発生すると警告され、プロジェクトリーダーにもその旨が伝えられ、ドンはその後6時間かけて「致命的なコマンドを発行する直前の時点のバックアップを丹念に復元」しました。
「結局、真夜中過ぎ、日本のユーザーがオフィスに出勤し始める直前に、すべてを元に戻すことができました。」
「もちろん、チームからの嘲笑は避けられませんでした」とドンは語った。しかし、彼は自らこの失態を認め、対処した。「だから、同僚たちは少なくともそれを一種の名誉の印と見なしていたんです。確かに、うんこの形をした印ではありましたが、それでも印だったんです。」
では経営陣はどうだっただろうか?「彼らが知りたかったのは、この仕事がいつ解決されるのかという修正された予定時刻だけで、そこには『私が求めている答えはまさに今ここにある』という、言葉には出さずとも非常に強い暗示が込められていた」
ドンによれば、その教訓は「失敗したときは、それを認めること。つまり、間違いを認めて、それを修正するために何をする必要があるかを考えること」だ。
ああ、それから、「『Crunch』は開発者を過労で燃え尽きさせるだけの愚かな概念です。」
ウンコの形をした名誉のバッジを獲得したことがありますか?良心を清めて、決して非難しないレジスターのスタッフと分かち合いましょう。
先週の寄稿者チャールズがどうなったのか気になる人のために、物語は、彼がコンピュータサイエンスの施設の使用を禁止され、その年の不合格がほぼ確実だったにもかかわらず、「学生会館とその汚い楽しみを満喫している」ところで終わります。
この経験によって懲りた彼は、数年後に社会人学生として別の大学に戻り、一級優等学位を取得しました。®