こんにちは!入社3ヶ月目を迎えるザハです!こちらは金属加工プラットフォームを開発・運用するCatallaxyのCatallaxy Advent Calendar 2021の10日目の記事になります。9日目の記事はちいかわさんによる「Reactではじめるキノコ狩り」でした。
チャレンジングなアウトプットを虎視眈々と狙いながら、配属されたプロダクトでIssueをこなす毎日を過ごしていますが、いざ記事を書くとなると何を書いていいのやら。。。という訳で本日は、苦肉の策として、これまでの経歴でやらかしちまった&経験した話を赤裸々にお話ししたいと思います!
夏の秋葉原
遡ること2006年だか2007年だか、もはや昔過ぎて正確に覚えてはいませんが、レンタルサーバーが主流でサーバー操作をミスると、レンサバに電話して5000円払って、電源を入れてもらう時代の話です。はい、もちろん何度も電源リクエストしましたよ、それはもう。そんなわけで、ある時点からそういう煩わしさから開放されるためオンプレミスを選択し、会社で余っているパソコンにlinuxをいれてサーバーを運用していました。
あるクソ暑い夏の日のことです、出社するとサービスが利用できない!お客様からのクレームの嵐が待っていました。ブラウザからサイトを確認してみると、まあ504エラーですね。サーバーにsshしようもうんともすんとも言いません。こうなるとサーバーに直接ディスプレイを接続し確認するのですが、そもそもの電源LEDがついてない!!祈る思いで電源ボタンを押しましたが、まあ反応しないですよね、こういうケースは。。ハードに強いわけでもないので、とりあえず筐体を開けて、なんとなく確認するのですが、これはもう、なんてことでしょう、素人目にも見てもはっきりと分かるくらい一部のコンデンサーが、中身ハミ出すんちゃうという勢いで膨れ上がっているではありませんか。新米お一人様エンジニアだったので一大事です。もう電話から社内からやんやん言われて、もう好きにして状態。そうだアキバに行こう!アキバがなんとかしてくれる!10kgはあっただろうタワー型の筐体を抱えて電車に乗りアキバへ。真夏の炎天下の中、汗だくになりながら、パソコンショップをすがる思いでハシゴしました。今直してくれ今じゃないとダメなんだ!コンデンサ、コンデンサがーーー!!、とわけのわからない依頼をする客にお店の方もさぞ困ったことと思います。
まあ今日の今日は無理ですよね。ハンダごてとコンデンサを一つ買って帰り、ヤンヤン傍らハンダ付けしたものの、まあシンクロ率が悪かったのか動いてくれませんよね。そんなことできるのかと当時は思いましたが、結局余っているパソコンにOSを入れてHDD差し替えてサービス復旧ちゃんちゃんという話でした。今の時代であればスナップショットからvolume作ってインスタンス止めて差し替えるで済みますね。便利になったものです。
人質事件
時は変わって2016年。退職したエンジニアから引き継いだあるECサイトで起こった話です。GW明けの休みボケ甚だしい初日、事件は起こりました。これまた出社したらサービスが利用できないとのクレームの嵐。ただ今回は様子が違います!ブラウザで確認したところ目を疑いました。なんと商品が一つも表示されていません!!まあパニックですね。細かい調査経緯は忘れましたが、EC2でホスティングしていたMongoDBを見たときに唖然としました。
Your DB is Backed up at our servers, to restore send 0.1 BTC to the Bitcoin Address then send an email with your server ip
ファッ!!!???すべてのデータは綺麗サッパリなくなっていて、bitcoinというcollectionが一つとその中に一行、メッセージが残されていました。はい、当時流行っていたランサムウェアです。原因はあまりにも簡単すぎるパスワードと、何よりびっくり、AWSのinboundのルールがなく、データベースがデフォルトポートでフルオープン。アカーーーーン!!幸い、直前のバックアップでリカバリし、犯人の要求に応えずに済みましたが、血の気が引きました。。。今、気になって調べてみましたが、当時のBTCの価値は5万円だったようなので、5000円の要求だったんかな。。安。
ORM怖い
最後にORMについて小話を。。これまたとあるプロダクトである機能を実装し、確か顧客と営業担当者の履歴DBテーブルを作ったときの話です。このテーブルを直接コマンドラインから、削除を含む操作を行うツールを作ったのですが、テストを書かず手元で動作確認して、いざ実行してみたところ、思ったより時間が掛かりはしたものの、エラーもなくコマンドが終了したので、安堵していたのも束の間、はい、来ましたね。修羅場です。調べてみると該当テーブルのデータが綺麗サッパリなくなっているではありませんか!えっ、なんで!もうこれまたパニックですね。。。調べてみるとドキュメントにこうありました。。
primary keyを指定しないstructでdeleteするとデータ消えるよ♡
すごい。。消えるよて。。引用しようと思いましたが、すいません。当時のドキュメントを見つけられませんでした。なので記憶から日本語で書きました。そんな感じだったかと。。言及した記事があったので、今はどうかわかりませんが、同じ思いをする人が出ないよう思いを込めて。。
オワタ、マヂカ。。バックアップからのリカバリ作業で胃の痛くなる一日でした。
終わりに
お前もっと気をつけろよ!という罵詈雑言を浴びそうな記事を書いてしまい戦々恐々としていますが、人間、失敗から学ぶものです。これ以来、バックエンドでは特にテスト書くマンになりました。。
年齢を重ねると昔話をしたくなるのは性でしょうか。最後までお読み頂きありがとうございます!
未来の工場を作るCatallaxyでは、自動販売機の前で泣いた方もそうでない方も、幅広くエンジニア採用の門戸を広げてお待ちしております!