【新堀武司】究極のサービスは「失敗する前提」で作る
Photo by Pietro De Grandi on Unsplash
私の仕事は、システムの設計や、企業のIT戦略を考えることです。キャリアの初期にメガバンクの心臓部を担うシステムに携わったことで、私の思考回路には常に「堅牢性」、つまり「絶対に失敗しないこと」が深く刻み込まれています。
しかし、外資系コンサルティングファーム時代に学んだのは、その「失敗しないシステム」を作るための究極の戦略は、実は「失敗する前提で設計すること」だということです。これは矛盾しているように聞こえますが、スタートアップや新しいサービス開発においては、極めて重要な考え方です。
先日、あるスタートアップの経営者と話していて、そのことを痛感しました。彼らは斬新なユーザー体験を提供するアプリを開発中でした。技術者出身の彼は、完璧なコードと、無停止のサーバー構築を目指していました。彼の発言は、かつての私そのものでした。
私は彼に尋ねました。「あなたのサービスがリリース初日に大ヒットし、サーバーがパンクしたらどうしますか?」
彼は「そんなことのないように、事前にキャパシティを潤沢に用意します」と答えました。これは、昔ながらの「静的なシステム設計」の考え方です。
しかし、ビジネスの成長は予測不可能です。完璧な予測に頼って初期投資を積み上げると、もしサービスが当たらなかったとき、その投資は全て「負債」となってしまいます。
私が提案するのは、「フォールト・トレランス(耐障害性)」の考え方を、ビジネス全体に適用することです。
具体的には、「失敗しても大丈夫な設計」を最初から組み込むことです。サーバーがパンクしそうになったら、重要な機能だけは残し、それ以外の機能を意図的に一時停止する。注文が殺到したら、受付を一時的に停止し、「ごめんなさい、今大人気です!」というメッセージを出す。これは、ユーザーに一時的な不便を強いますが、サービス全体の崩壊を防ぎ、同時に「人気のあるサービスだ」というブランドイメージを付与するチャンスにもなります。
これは、メガバンク時代の私の経験から見れば、ありえない「手抜き」に見えるかもしれません。しかし、スタートアップという「資金と時間が限られた環境」においては、すべての失敗パターンに完璧に対応する時間はありません。
だからこそ、最も致命的な失敗(データ消失や金銭的な損失)だけは絶対に防ぎつつ、それ以外の「軽微な失敗」は、ユーザーに許容してもらいながら成長する戦略が必要です。
「失敗しない」ことを目指すのではなく、「失敗しても即座にリカバリーし、その失敗をサービス改善の糧にする」ことこそが、アジャイルな開発環境における究極の「堅牢性」なのです。
完璧主義は、時に新しい挑戦の足枷になります。もしあなたが今、「完璧なプロダクトを作ってから世に出したい」と悩んでいるなら、一度立ち止まって考えてみてください。
あなたのサービスが「失敗」したとき、それはビジネスを止めてしまう致命傷ですか? それとも、ユーザーとの新しいコミュニケーションを生む、成長のチャンスですか?
究極のサービスは、完璧なコードではなく、失敗を許容する柔軟な設計によって生まれると、私は信じています。