常駐先で、ORACLEデータベースの管理やってます。ORACLE Platinum10g、データベーススペシャリスト保有してます。データベースの話をメインにしたいです

【小説 しょっぱいマネージャー】第四十二話  セブンティーン

»

 8月24日(月)。
 23時半。
 郊外のデータセンター、その7階にあるサーバ室に主要メンバーが集まった。
 業務、バッチチームは池江、谷中。
 インフラチームは藤澤。
 秋華も来るはずだが、遅れると電話があった。
 移行チームは雄一、大川桂子。
 雄一は現場監督者としても振る舞う。

「皆さん、お疲れ様です」

 雄一はメンバーに向かって挨拶した。
 皆、小さく頷く。

「皆さんのお陰で今日という日を迎えることが出来ました。移行作業を無事に乗り切れば、フェーズ1としてカットオーバーになります」

 まずは主要機能だけをリリースし、残りはフェーズ2として10月1日にリリースする予定だ。
 移行作業は日中のシステムオンライン時間帯を避け、夜を徹して行われる。
 ちなみに、オンライン時間帯は9時から24時まで。
 従って、移行作業は8月25日(火)の0時から9時までに完了させなければならない。

「じゃ、今日の流れについてザックリ話します」

 雄一は壁に貼られたA3用紙を指差した。
 それは、移行作業のWBSだった。
 縦に作業項目が並んでいる。
 その横に、開始と終了予定時間、作業者と確認者の名前、そして前提作業が記載されている。

「まず、現行システムのサービス停止。次に......」

 言いながら、ホワイトボードに作業を書き出す。

  1. 0:00~1:00:現行システムのサービス停止
  2. 1:00~3:00:現行データベースからのデータ取得
  3. 3:00~5:00:新データベースサーバに取得したデータをインポート
  4. 5:00~7:00:移行プログラムを実行して新規テーブルへのデータ作成
  5. 7:00~8:00:新システムのサービス起動
  6. 8:00~9:00:顧客動作確認

 皆、それを見て隣の者と言葉を交わしている。
 移行作業は時間との勝負だ。
 リリース予定の明日の朝9時までに、完璧に作業を終わらせる。
 時間を稼ぐために、新システムのサービス停止や、テーブルの初期化など、前捌き出来る作業は前日に済ませて置いた。

「では、開始時間までにトイレなど済ませておいてください」

 ゾロゾロとメンバーが外に出て行く。
 雄一は一旦解散になったこの場に残り、仮設された長机の前に座った。
 卓の上に置かれたバインダを手に取った。
 移行作業で使う手順書が綴じられている。
 その数、70。
 ページにして300ページ。
 それをパラパラとめくってみる。

(多い)

 時間に余裕など無かった。
 一つ一つの手順を分刻みでこなさなければ、朝9時に間に合わない。

「ふー」

 と、深呼吸した。
 雄一にとって、これほど大規模な移行作業は初めてのことだった。
 各マイルストーンで作業時間の実績と予定を比較し、遅延が見られればスケジュールの見直しが行われる。
 それが大幅な遅延だった場合、移行作業は中止となる。
 例えば、データベースからのデータ取得作業は1:00開始だが、その前提作業である現行システムのサービス停止が1:00までに終わらなければ、スケジュールの見直しが入る。
 9:00のリリースまでに間に合わないと判断されれば移行作業自体が中止、現行システムへの切り戻しが行われる。
 それはカットオーバーの時期がずれることを意味していた。
 雄一は何としても、それだけは避けたかった。
 ここまで来たのだから、今日で綺麗に完了させたい。
 何より、ここに来ての中止は、次回の日程調整も含め精神的にもしんどいものがある。
 そして、秋華のAI。
 これを早く公開したい。
 一番最初は現行システムのアプリケーションサーバの停止だ。
 WBSだと作業者は池江、確認者は谷中となっている。
 業務寄りの作業、例えば業務サービスの停止などはこの二人に割り振っている。
 インフラ寄りの作業、例えばデータベースからのエクスポート、インポートなどは藤澤と秋華に振っている。
 そして、メインのデータ移行作業は、桂子と、雄一で行う。
 やはり気に掛かるのはデータ移行周りだ。
 会員数十万のデータは数TByteある。
 これをエクスポートしてインポートするのに時間が掛かる。
 加えて、移行プログラムによるデータ作成。

(大丈夫、何度もリハーサルした)

 雄一は何度も自分に言い聞かせた。
 リハーサルで各作業に掛かる時間は実測出来た。
 想定外のことが無ければ、スケジュール通りいくはずだ。
 だが、「もしも」という不安が腹の底から上がってくる。

「おつかれ」

 声に反応して顔を上げると、セーラー服にツインテールの秋華が目の前にいた。
 雄一はその姿を眩しいと思ったが、すぐに疑問を持った。

(ん? セーラー服......夜中......)

 久々に彼女のセーラー服姿を見て、彼女が高校生だということを今更ながらに思い出した。

「秋華さんって、18歳、それとも17?」
「17」
「まずいな......」

 労働基準法では、18歳未満の年少者が深夜(午後10時から午前5時まで)働くことを禁じていた。
 雄一は秋華を違法に働かせていることになる。

「今更、何言ってんの? 今日まで終電、徹夜で仕事させてたし」
「そ、そうだね。ところで何で今日はそんな恰好で?」
「昼間、学校に行ったから。あとさっきまで猫カフェで寝てたから」
「あ、そうなんだ。え? 学校?」

 彼女は休学していたはずだ。

「私、来月から学校に戻るから」
「え?」
「夏休みが終わるから、それに合わせて復学」

 今日は復学の手続きのために学校に行ったのだという。

「え、ええええ? じゃ......プロジェクトはどうなるの?」

 雄一はひどく狼狽した。
 だが、今まで学生であるはずの彼女がこうして大人に混じってデスマーチに参加していた事の方が、異常だったのだ。
 だから、大人である雄一は彼女の進路変更を祝うべきなのだ。
 だが、どうしてもそれが出来ない。

「フェーズ2のリリースまではいる。学校が終わってから来る感じ。その後はパパに引き継ぐ」
「そ、そんな突然......」

 雄一は寂しさを感じた。
 どちらにしてもこのプロジェクトは10月1日をもって完了する。
 後は保守要員として数名が残され、プロジェクトとしては実質解散だ。
 雄一だってプロジェクトマネージャーの仕事が無ければ、ここでプロジェクトから離れることになる。
 ここまで築き上げて来たチームというものが、プロジェクトの終わりと同時に消滅する。

『プロジェクトとは一定期間内に独自のサービス、システム、製品を作る活動のことである』

 どこかの本にもそう書いてあった。
 この関係は一定期間内なのだ。
 秋華以外のメンバーも、次へ行く支度をしているのだろう。
 だがこれは、よく考えれば当然の話だ。
 そして、秋華と毎日顔を合わせることが出来るのもあとわずかだ。

「でも、なんで学校に? あれほど行く必要が無いって......」
「ある人に言われた。色んな経験をしておかないと、いいものは作れないって」

 桜子の顔が脳裏に浮かんだ。

(感傷なんかに浸ってたら、殴られそうだぜ......)

 そう、今は目の前の作業を終わらせることだ。

「有馬PM」
「はい」
「ここまでやったんだから大丈夫」

 秋華はニッコリ笑った。
 その笑顔に決心した。
 雄一は彼女の目をまっすぐ見て、こう言った。

「これが終わったら、君に言いたいことがある」


---------------------------------------------------------------

 8月25日(火)、予定通り0時から移行作業は開始された。
 現行サービスの停止は滞りなく終わった。
 現行データベースからのデータ取得も滞りなく終わった。

「しまった」

 藤澤が、出力されたダンプファイルを見て声を上げた。

「どうした」

 雄一が端末に向かう藤澤と秋華の間に割り込む。

「ダンプファイルを新データベースサーバに転送する時間が抜けてました」

 ありがちな考慮漏れだった。
 実作業を行うために必要な準備作業。
 その時間を入れずに作業時間を見積もっていたのだ。

「どれくらい掛かりそうだ?」
「そうですね、一旦、保守端末にダウンロードして、それから新データベースサーバにアップロードって感じです。3TByteはあるので......20分から30分くらいかと......」

 雄一は腕を組んで天を仰いだ。

(30分の遅延をどこでリカバリーするか......インポート作業の時間を削れれば一番だが、それは難しいか......)

「とりあえず、転送を始めてくれ」
「はい」

 藤澤が申し訳なさそうに頭を下げる。

「気にするな、手順書レビューの時に気付かなかった俺が悪い」

 雄一は藤澤の肩を叩いた。

「有馬PM」
「ん?」

 藤澤の隣で別の端末に向かう秋華が声を掛けて来た。

「データベースサーバは3つある」
「うん」
「インポートするテーブルは300個ある」

 秋華が、ディスプレイに映ったテーブル名と件数が書かれたリストを指差す。

「データベース1台あたり100テーブルずつ並列にインポートすれば時間は1/3で済むはず」

 新データベースへのデータインポートは2時間、つまり120分掛かる見積もりだ。
 それが1/3になるということは40分で済むことになる。
 ダンプの転送で30分押したとしても、50分前倒しになる。

「そりゃすげえ!」
「レビュー済みの手順を変更するのは嫌だけど。この場合仕方ない。こうなったらリソースは有効に使うべき」

 秋華はそう言いながら準備を始めた。

 4時半。

「行きます」

 藤澤が新データベースサーバ1号機で、インポートコマンドを実行した。
 続けざまに2、3号機でインポートを実行する。
 インポートの進捗がディスプレイに表示される。
 始まって10分、異変が起きた。

「あれ?」
「どうした?」

 藤澤の声に雄一が駆け寄る。

「停まってる」

 ディスプレイに表示された進捗が停まっている。
 1、2、3号機、共にインポートが進んでない。

「テーブルがロックされてるとか?」
「いや、今、誰も使ってないでしょ?」
「UNDO表領域がいっぱいとか?」
「さっき確認しました。問題無し」
「じゃ、何が一体......?」

 雄一と藤澤はすがるように、秋華の方を見た。
 彼女は別の端末に向かい、キーボードを高速で叩いている。

「動く」

 彼女はディスプレイの方を向いたままそう言った。

「え?」
「有馬さん。インポートが動き出しました」

 1、2、3号機、インポートが動き出した。
 堰を切ったように、ディスプレイに進捗が流れ出す。

「秋華さん、一体何を?」

 彼女は雄一に向き直り、こう答えた。

「アーカイブログを消した」
「え?」
「アーカイブログの出力先ディスク、その使用率が100%だった。消さないとインポートが動かない。いちいち報告して許可取る時間が無いから独断で消した」
「そうだったのか」

 データのインポートはデータベースにデータを登録するというこだ。
 だから、変更履歴として大量のアーカイブログが出力される。
 よって、ディスク容量不足などが原因でアーカイブログが出力出来ないと、インポートが停止するのだ。

「けど、何でいっぱいに?」
「リハーサルの時に出たアーカイブログを消してないんじゃないですか? それが残ってたのが原因では?」

 藤澤の答えに納得する。
 ゴミの消し忘れだった。
 二人のやり取りに反応することも無く、秋華はじっとディスプレイを見つめている。
 その横顔を見ながら雄一は思った。

(まったく、どんな17歳だ。自分なんか同じ年の頃、プログラムのプの字も知らなかったのに)

 5時半。

 30分ほど前倒しで移行プログラムの実行まで進んだ。
 移行プログラムは、大きく二つに分かれる。
 第一段階、顧客からもらったCSVデータをSQLローダーで仮テーブルに取り込む。
 第二段階、そのデータを既存テーブルのデータと組み合わせて、新機能が参照するテーブルのデータとして作成する。

「ちょっと、大丈夫ですよね? 何も起きなきゃいいけど」
「大川さん、大丈夫です。何度もリハでテストしたじゃないですか」

 不安がる桂子と、励ます雄一だった。

「行きます」

 皆、固唾をのんで見守る。
 端末に向かう雄一が移行プログラムを実行した。
 
「あ、落ちた」

 隣で手順書にペンを走らせていた桂子が声を上げた。
 移行プログラムがディスプレイにエラーを垂れ流している。

「何だ? どうして?」

 混乱する移行チーム。
 雄一はviewコマンドで移行プログラムを開いて、中身に問題が無いか確認した。

「最新版だ。問題ない」
「SQLローダーのログは見た?」

 桂子に言われ、ログを確認する。

       :
       :
  スキップされた論理レコードの合計: 0
  読み込まれた論理レコードの合計: 0
  拒否された論理レコードの合計: 9502894
  廃棄された論理レコードの合計: 0
       :
       :

「CSVのデータ、全件ロードが拒否されてる......。SQLローダーで失敗したのが原因で、移行プログラムが落ちたのか」
「何でかしら?」

 こっちが知りたいよ。
 雄一はそう声を上げそうになった。
 試行錯誤している間にも時間が過ぎて行く。

「有馬PM」
「はい」

 秋華の声に、雄一は待ってましたとばかりに飛びついた。

「もらったCSVが文字化けしてる。顧客からもらいなおして」

 雄一は三浦部長に電話を掛けた。

<すまんすまん、今日に限って出力方法を間違えたみたいだ>
「気を付けてくださいよ。ちゃんと文字コードをUTF-8にして、改行もLFにして下さい」

 数分後、三浦部長から圧縮された暗号化済みのCSVがメールで届いた。
 もらったCSVを早速、移行プログラムで取り込んだ。

「じゃ、第二段階の移行プログラム、実行します」
「だめ!」

 秋華から待ったが掛かった。

「こ、今度は何?」
「アーカイブログを消しておく」

 彼女はそう言いながら、作業に取り掛かった。

(まったく、彼女がいなかったら全然大丈夫じゃなかったな)

 作業にいそしむ秋華を見ながら、雄一はしみじみそう思った。


---------------------------------------------------------------

 ロビーに出ると、白い床にブラインドから漏れる朝日がまだらに降り注いでいた。
 雄一は眩しさに目を細めながら、手近な席にドカッと座った。
 疲労が体の底から湧き上がってくる。
 時計の針は8時半を指していた。
 今頃、営業所にいる三浦部長と寺山がリリース判断のための動作確認を行っていることだろう。
 辺りを見渡すと、精魂尽き果てて机に突っ伏しているメンバーもいる。
 エンジニアとしてやるべきことはやった。
 後は結果を待つだけだ。

ブルルル

 スマホが振動した。

「はい。有馬です」 
<リリースOKだ。早速、各サーバ、負荷分散装置からの抑止を解除してくれ>
「分かりました。あ、三浦部長」
<何だ?>
「AI、そのまま行きます」
<言わんでも分かってる>

 電話を切った雄一は、辺りを見渡した。
 後5分ほど、皆を休ませてから再開させるか。

つづく

Comment(10)

コメント

匿名

有馬、ついに童●卒業か…
犯罪だけど。

桜子さんが一番

しびれる回でしたねー。読んでるコッチが疲れるw
とりあえず。おめでとうございます!!ですね。

VBA使い

ようやくデータベースの話に戻ってきましたね


9:00のリリースまでに間に合わないと判断されれば移行作業自体「は」中止
⇒「が」の方がしっくりきます


「ダンプファイルを新データベースサーバに転送する時間が抜けてました」
⇒最初からNASにすればよかったんかな?
 イザとなったら、ダンプファイルの入ったHDDを新サーバーに挿し替えるとか(怖い怖いw)


「データベース1台あたり100テーブルずつ並列にインポートすれば時間は1/3で済むはず」
⇒自分で気づいた幸一郎氏の方が一枚上ですね。(そういえば、どちらにも「一」が入っている)

foo

以前から気にはなっていたが、秋華はまだ18歳の誕生日を迎えていないのがこれで確定か。
すでに18歳の誕生日を迎えているか、もしくはキャラ設定上高校をダブって19歳以上もあり得るかと思ってたけど。

>  労働基準法では、18歳未満の年少者が深夜(午後10時から午前5時まで)働くことを禁じていた。

なるほど、労働基準法 61 条 1 項か。
そういえば、秋華はこの仕事をするにあたって、キチンと労働契約書etcを書いているのだろうか……?
労働契約が存在していないなら、そもそも労働基準法もクソもないのでは? と一瞬思ってしまった。

湯二

匿名さん。


コメントありがとうございます。


>童●卒業
雄一がcherryかどうかって書くにあたって設定を考えてなかったです。
27歳くらいでそういうのが普通かどうかわからないですが、とりあえず素人cherryということにしておこう。

>犯罪
主人公が捕まって終わる漫画ってなんかありましたね。

湯二

桜子さんが一番さん。


コメントありがとうございます。


>しびれる回でしたねー。
引き延ばすよりは、展開が早い方が面白いはず。なんちて。
でも疲れさせてごめんなさいm(__)m

湯二

VBA使いさん。


校正とコメントありがとうございます。


>ようやくデータベースの話
すいません、ご期待のDBの話が少なくて。。。

>最初からNAS
現行サーバと新サーバ両方から参照できるNASを用意しとけばよかったですね。
予算の関係で出来なかったのか、手順レビューで突っ込みが無かったのか定かではありませんが。


>幸一郎氏
いたなー。そんな奴。
あれは5話分くらいかけて、今回みたいな話をじっくり書いて長かったかなって印象です。
主人公の名前は友達の名前をちょっといじったものを付けてます。

湯二

fooさん。


コメントありがとうございます。


>高校をダブって19歳以上
実は高校三年生ってとこだけ考えてて、今回の話で17歳にしとこうって急遽決めました。
その場のノリで、細かい設定を決めて行ってます。
確かに休学してる設定だから19歳ってのもありですね。


>労働基準法 61 条 1 項か。
色々法律の事をご存じですね。
私はあまり詳しくないので、その都度ネットで調べてます。
ホントに便利な時代になりました。
確かに労働契約はどうなってるんだろう??
オヤジの手伝いとかバイトとかっていうことにしてるとか。
まぁ、この業界も法律的にグレイな働き方もあったりするのでよしとします。

ほげ

資材の格納時間が考慮されてないって話は意外とありがちなんすよね。
リハを何度かやるにしても、資材は最初に格納したら次回のリハ以降はわざわざ格納し直しする時間ムダだもんね。
リハ手順的には「llで資材を確認する」って手順を踏んでOKにしがち。
こういうあたり、妙にミスの内容が生々しい。

湯二

ほげさん。


コメントありがとうございます。


>資材の格納時間
WBS作るときについ忘れちゃうんですよね。
リハの時気付いても課題表に載せ忘れたり、コメントの通り格納したままだったり。
実際に体験したこととかを書いているので、リアリティはあると思います。
毎日、取材してるようなものです。

コメントを投稿する