火事場プロジェクトとうつ病が再発した時の思い出


7payのことについて思ったことを書いた 7payのあれ 社長の能力とtwitterの議論で思ったこと - 追憶行 とき、この本の広告を貼り付けたんだけど、まだ手元にあったかなー?と本棚を探してみるとまだあった笑


f:id:letitride:20190713083131j:plain:h200


この本を読んでた頃の自分と炎上したプロジェクトのことについて、当時の思い出を記録しておく。まとまってもない自分の思い出語り。

この本の思い出

2007年頃だったと思う。

当時「火事場」というプロジェクトに携わったことは特になかったけど、もちろん長時間稼働を要したプロジェクトはいくつか経験していた。

これは以前にも 東京トイボックスと俺の仕事観 - 追憶行 で書いたんだけど、自分としては長時間の稼働は特に苦痛な意識は持っていなかった。

自分自身が製造を担当した部分と、他者が製造したものとそれらがビルディングされていき、段々と完成に近づいていく様が好きだった。プラモデルが好きな人はこの感覚は分かるんじゃないかな。

ビルドされた集合体は共有の成果物の検証環境に日毎にビルドされていってて、毎朝、「お、この機能コミットされている。やっぱ ◯◯さんすげえや」とか、「え?このコードダメじゃん。どうするんだろう...」なんて一喜一憂していたのを覚えている。当時Joel on Softwareを読了したての自分にとってはデイリービルド?常識でしょ^^なんて意気がっていた。

で、その頃、クライアントや経営者の無茶な要望を捌けないことで、ちょっとしたフラストレーションが溜まっていて、その頃の自分はそれが堪らなく嫌だったし、そういう環境を「炎上」として捉えていたところがあった。

たまたま当時、千歳烏山のカメレオンクラブ(懐かしいよね)で古本で並んでいた上の本を手に取って購入した。

大雑把に言うと、この本は今でも重要なコミュニケーションについての考え方について説かれた書籍だったけど、コミュニケーションとは別の観点で、炎上を防ぐ技術的な方法の1つとしてユニットテストを行えば効果的だ。と書かれていたことが印象に残っている。

同僚とテストについて語ったこと

その前年、2006年に僕と当時の上司とで、PHPの案件でPHPUnitを使用してすべてのモデルファイルに対してユニットテストを書いたのだけど、チームメンバーに対してあまり有用性を説くことができず、僕自身、ユニットテストには懐疑的だった。


他の同僚の中にもユニットテストを経験していた人物もいた。結構お堅い案件とかでユニットテストは導入されている印象があって、始めに上からJUnitのテストコードが降りてきて、そのテストが通るコードを記述して提出しなければならない。と言っていた。その同僚もあまりユニットテストを導入することについて良い印象を持ってなくて、その本を読んだ僕たちはとんでもない勘違いをしているのではないかと語りあったのを覚えている。


もうその頃にはJenkinsの前身、Hudsonはあったようだけど、まだCIなんて言葉は僕は知らなくて、その後、すぐにTDDや自動テストという言葉が流行り始めた。

これは僕達が意識してなかっただけで、早い人はもっと前から知ってたのかもしれないし、流行っていたのかもしれない。

2007年春にブラウザで動くSeleniumテストについてWeb DB Pressで特集されていて、OSカーネルのパッチを当てた際に、寒いデータセンタの中でブラウザからSeleniumテストを起動したことを覚えている。

大障害とうつ病再発の思い出

それから時は過ぎて、2014年の夏だった。

僕は企業の販促用スマホアプリが接続するAPIサーバの管理を行っていた。当時、ピーク時のreq/sが1,000ほどの中規模といえるであろう規模のAPIサーバだった。

ある事情でレスポンスとスループットに対しての改善を急務で行っていた。

ここである1つの策を講じたのだが、その策の為、大障害を巻き起こすこととなった。平たく言うと、リクエストURLに対してアプリケーションが1秒未満の単位で生存できるキャッシュを持っており、連続したPOSTのリクエストに対して予期せぬキャッシュが返却されるというものだった。

クライアント企業複数社でmBaas的に利用されるAPIサーバだったので、その混乱は筆舌に尽くし難いものだった。2週間ほど自宅に帰らず、缶詰状態の復旧作業が続いた。あの時が自分のエンジニア人生の中で一番辛い時だった。

僕は管理職として仲間を鼓舞しながら、大量のAPIリクエストデータのログとバックアップから復元した障害前の状態のDB、障害後の状態のDBとでデータの齟齬を照らし合わせ確認し、仲間と共に仮説を立て、プランを話し合い、復旧に務めていた。

CTOには対外的な交渉を行って頂き、復旧作業に集中できたことは今でも感謝している。

奇しくも、その3年後にあのメルカリさんでも似たような障害が起こった。CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

優秀なエンジニアを揃えても少しの油断で起こり得るものだし、その火事場の状況は僕達は良くわかっている。

僕たちはその後、本当の意味で兜の緒を締め直した。


で、以前に書いた スタートアップのエンジニアだった自分がうつ病になった時の思い出 - 追憶行 で触れていた、うつ病が再発した時ってのはまさしくこの時だった。

この時の精神状態は本当に最悪で、妻に死にたいと漏らしたことがある。いや、今書いてても涙ぐんできた笑

ひどかったのは首の後ろと肘の上側に発生した火照ってるけど痺れたような感覚で、医師曰く自律神経だと言っていたが、あの嫌な感覚は今でも忘れない。また、私の名前で声をかけられると、頭頂部に電撃が走るような感覚がしばらく続いた。

障害が一段落した時に心療内科を受診したのだが、勤務状況とこの感覚を説明しても休職を指示しなかったあの医師は今でも大物だと思う笑