サーバが古かったのか?

消費税率変更に伴い大規模なトラブルが発生したスーパーマーケットの「いなげや」。新価格をオンラインで更新する計画は、閉店後の3月31日深夜から開始し、翌朝までには完了する予定でした。ところが、一部の店舗に新価格が届かず、更新できても店舗側のレジが新価格に対応せず、結局、全136店舗中、44店舗が臨時休業に追い込まれます。トラブルの詳しい内容が、時事通信で紹介されていました。

"レジのシステム変更やデジタル式の店頭価格表示のデータを、本部から各店舗に一斉送信した際にサーバーがダウンした。 ≪スーパーいなげや、システム障害=増税対応で130店中半数閉店(時事通信)"≫

本稿では繰り返しIT業界が「0.2」であると指摘してきましたが、本件はその代表例。いなげやに起きたトラブルの背景を追う特別編です。そしてそれは「他人事」ではありません。

報道にある「サーバーがダウンした」から、古いサーバを利用していたり、処理能力が不足していたりすることに理由を求めるのは間違いです。それは一時的な「解決策」にはなっても、根本的な「原因」ではないからです。そして「原因」を追究しない限り、いつか必ず同じトラブルが繰り返されます。

伝票を確認していない

システム開発では、設計時に処理の限界値を推計します。どんなシステムにおいても、安定稼働が最優先事項であり、限界値に到達する前に処理を制限するものだからです。今回の更新作業なら、処理の限界値を、データの最大値で割った値が、本部と同時に接続できるコンピュータの台数となります。あとは「順番待ち」で処理を繰り返します。実際にはもう少し、複雑な計算が必要ですが、最新サーバも同じ理屈で動いており、離婚を発表した芸能人のブログが「重く」なり、「閲覧不可」になるのは限界に達しないように制限がかけられるからです。

ところが「いなげや」のサーバはダウンしました。つまり、限界値の制限をかけていなかったということです。それは過積載したトラックがパンクし、カーブを曲がりきれず横転するような必然です。これだけでも0.2と表して余りあるのですが、さらに解せないのが「伝票」をチェックしていないことです。

コンピュータ間でデータをやり取りする場合、まずデータの大きさや内容が記された「送り状」が送信されます。受けとった側は、受領した内容を数えて記した「受取状」を返信し、両者がそれぞれを照合することで正しくデータが送受信できたと確認します。途中でサーバがダウンした場合、ふたつの「伝票」に齟齬が生じます。このとき、受けとったデータを破棄するか、警告を発し指示を待つかの二者択一…とならなかったということです。それは「システム」の更新からも明らかです。

スマホと同じ

時事通信の記事の続きを見てみます。

"いなげやによると、午前7時ごろ、一部の店舗のレジが起動しないことが発覚した。午前11時の段階では、全店舗の4分の1に当たる31店舗しか開店できなかった。(同)"

先に紹介した時事通信の記事の冒頭に「レジのシステム変更」とあり、レジが起動しないということは、不十分なプログラムを上書きした可能性が高いと言えます。スマホのOSアップデートに失敗して、一切の操作ができなくなるのと同じ理由で、システムの更新においても、「伝票」の確認が疎かにされていたということです。

わたしがプログラム開発に従事していた四半世紀前なら考えられない「システム0.2」です。当時の貧弱なコンピュータは、つねに「限界」との戦いであり、処理限界による稼働停止を避けるために、二重三重の安全弁を仕掛けるのが「常識」でした。高まったコンピュータのスペックによる、プログラマサイドの「慢心」もトラブルの原因のひとつかも知れません。

ぶっつけ本番とはギャンブル

あるベテランプログラマから気になる話しを聞きました。こうした大規模トラブルは、いつどこで起こっても不思議ではないというのです。理由は人材不足です。永らく続いた「デフレ」による単価の下落は甚だしく、ちいさなソフトハウスでは給料遅配も多々あり、業界に見切りをつけた若手はWeb系に流れ、家族を抱えるベテランは生活のために業界を去ります。人材流出によりノウハウは伝承されず、納期を理由に「やっつけ仕事」が繰り返され、動いているのが不思議なシステムも多いと、ベテランプログラマーは深い溜息を吐き、大企業の基幹システムでも同じと添えます。

そもそも「いなげや問題」は企業側にも問題があります。事前に更新作業の「リハーサル」していればチェックできていたことだからです。さらにテスト店舗で新システムを稼働させ、問題が無いかを検証する「ロードテスト」をしていなかったのも論外です。なぜなら、それを「ぶっつけ本番」と呼び、システム運営において、ギャンブルと同義だからです。その賭の代償が44店舗の休業。高いか安いか。

エンタープライズ1.0への箴言


「システムを発注する際は、必ず限界時の回避策を確認する」

宮脇 睦(みやわき あつし)
プログラマーを振り出しにさまざまな社会経験を積んだ後、有限会社アズモードを設立。営業の現場を知る強みを生かし、Webとリアルビジネスの融合を目指した「営業戦略付きホームページ」を提供している。コラムニストとして精力的に活動し、「Web担当者Forum(インプレスビジネスメディア)」、「通販支援ブログ(スクロール360)」でも連載しているほか、漫画原作も手がける。著書に『Web2.0が殺すもの』『楽天市場がなくなる日』(ともに洋泉社)がある。最新刊は7月10日に発行された電子書籍「食べログ化する政治~ネット世論と幼児化と山本太郎~」

筆者ブログ「ITジャーナリスト宮脇睦の本当のことが言えない世界の片隅で」