そういうと喜ばしいことのように聞こえるかもしれませんが、今のAWS(Amazon Web Services)のような仮想サーバーがない時代、急にアクセスが殺到すれば、サーバーがダウンして、サービスそのものがストップしてしまいます。
実際にサービスを開始したのはいいけれど、翌日から急に人気が出て動かなくなり、24数時間以内に復旧させないと相当な損失が出るといった、危険な状況にしばしば直面していました。
そんな時、どう対応していたかと言うと、物理的にサーバーを増やすまでの1カ月くらいの期間、サービスをストップさせるわけにもいかないので、エンジニアは自分たちで処理が10倍速くなるプログラムを書くしかありません。
しかし、サーバーがダウンするのはいくつかの原因があり、やみくもにプログラムを書いても時間がかかるだけで、24数時間以内に復旧することができない可能性もあります。そのため、いかに早く原因を特定するかが、死活問題になってくるわけです。
「問題を切り分けて考える」で難局を乗り越えた
その時僕が行なっていたのは、「問題を切り分ける」ということです。動かなくなったサービスを動かすために、すべての要素を分解して考えるようにしていました。
まず、「アクセスが増えると何でサーバーが落ちるのか?」を考えると、「ネットワークの問題」と「プログラムの問題」の二つに分けられます(通信が遅いのか、プログラムが重いのかということです)。
そのうえで、もしネットワークに問題がなければ、どのプログラムに問題があるのか、もしくは、プログラムを使わなくてもいいところに無駄にプログラムを使ったせいで遅くなったのかなど、考えられる原因を分けていきます。
このように、要素をすべて分解し、一つひとつ問題がないかを確認していきながら、直すべき箇所を見つけ、そこに全員の力を集決して直していきます。
もちろん思いついたやり方を一つずつ試していってもよいのですが、それだと時間がかかりますし、失敗したら取り返しがつかなくなります。
毎日がトラブル続きで、要素を切り分けて問題があるところを発見して直す。そんな日常が3年程度は続いたと思います。そのせいで、気がつけば「分けて『問題』を見つける」という思考が習慣になっていました。
売上を20倍にしたアイデア
「問題を切り分ける」ことで、「一番大事な問題」を見つけ、解決のための手を打つ。
この「思考」は、その後独立したときにも、役に立ちました。
ある時、僕は数億円だった売上を数百億円にまで成長させる必要に迫られたことがあります。数億円の企業しか経営したことがない人が、いきなり数百億円を目指す。普通に考えて、とても無理そうですし、これといったアイデアも浮かんできません。