orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

スケールする技術

f:id:orangeitems:20200619150243j:plain

 

世の中いろいろ技術はありますが、一番価値が高いのはスケールする技術だと思っています。

スケールするというのは、規模を大きくしたり小さくすること、という意味です。

 

business-career.jp

「スケールする」は「拡大する、縮小する」という意味で用いられます。

事業規模や利益率などが拡大・増大する場合は「スケールする」、逆に縮小・減少する場合は「スケールしない」を使います。

また、IT業界では映像や画像を拡大・縮小したり、ソフトウェアの処理能力を増大・減少させる場合に「スケールする」を用います。

 

最近思うんですが、0を1にするのって、そんなに難しいことではないんですよ。

何もないところから何かを生み出す。結構もてはやされるのですが、0を1にするぐらいなら努力と深謀を重ねれば、形は整えられる。

あとは続けるだけであり、無茶しなければそれなりの「1」で完結すると思うのです。

難しいのは、「1を10にすること」だと。100になるかもしれないし、10000になるかもしれない。もしくは100まで行ったけど、一時期70くらいに縮めなければいけない。冒頭のスケールする、という言葉そのものです。

はじめは規模が小さいので、結構感覚で設計するんですよ。まあPDCAだと。始めてみて考えようと。小さいので小回りが利くから、どんどん形を変えていきます。こういうことができるので急成長しやすいという理由にもなります。

一定程度大きくなったとします。次にこう考えるでしょう。もっとたくさんの人に広げたい。成長していきたい、と。

だいたいのベンチャーや新規事業はここまでは来ます。来ないとしたら、よほどビジョンが的外れだったんだということです。むしろそこで止めるのが正解。なぜなら中途半端に大きくなると止めるのも大変だからです。

で、多くの人がここで大きなミスを犯します。成功した1と同じ仕組みをそのまま広げていこうとするのです。

例えばWEB + DBというシンプルなシステムがあるとします。

WEBサーバー1つでは足りないので、WEBサーバー2つにしましょう。DBサーバーは気軽に2つにはできないので、性能を上げようと。

ここまでは普通。そしてサービスがヒットする。アクセスが2倍、5倍と増えていく。

当初のシステムはきっと限界を迎えます。なぜならDBの性能アップも限界を迎えるからです。

1を100倍すれば100になる、という勘違いこそ、これが難しい理由です。

そもそも、1を作るときに、100を想定してシステムを設計していなければいけない。

例えば、1つのシステムにすべての100を任せるのは大変危険です。止まった時に当初の100倍の影響が出てしまう。そうではなくて、1を100個並べ、同時にトラブルが起きないような工夫が必要になります。

逆のパターンもあります。サービスは大成功で成長の連続。前年比2倍3倍。これならということでどんどん設備投資する計画を組み途中までは絶好調でした。

しかし、今回のコロナ禍のようなことが起き急に需要が急減したとします。その場合に、100を一時的に30、50と小さくしなければいけない状況に迫られます。さて、当該システムは、100を30に急にできる作りでしょうか。

また、困難が過ぎ去ったら、また100に戻れる仕組みでしょうか。もしくは割り切って貯金を切り崩して困難が過ぎ去るのを待つのでしょうか。

0が1になり、1が100になるとき、まず0を1にした人が大威張りし、先見の明を誇るでしょう。それは1つだけの面です。1を100にするには、規模が小さいうちに、100になっても動くような工夫が必要です。そして、急に小さくすることもできなければいけません。

 

こういう、スケールする技術、IT業界においても実はあまり持っている人は少ない。1つのシステムをかっちり作れる人はたくさんいるんです。しかし、一回作ったものを改修し、大きくしたり小さくしたりすることを、安全にできる人、これは希少人材。巨大システムは割合として市場には少なく、実際に体験した人が少ない、というのもあります。また、小さい段階で、100倍になった時のことを会話しにくい、ということもあります。

企業においても0から1にするまでは社長はプレイングマネージャーですが、そこからは優秀な人材を雇い入れ、指示していくことが重要です。そこで社長がスケールする才覚がないと、何か無茶な企画を急に思いついて実行に移させてしまったり、外から優秀っぽい人材を引っ張ってきては、初めからいた人が評価されず、内部崩壊してしまったりと言うことが起こります。

まあ、オチとしては、こんなことを考えているのは、下記のニュースを目にしたからです。

 

www.nikkei.com

システム開発のTISは18日、障害のために停止していたテレワーク向けクラウドサービス「RemoteWorks(リモートワークス)」を9月末で終了すると発表した。アプリケーションの不具合によるセキュリティーリスクが内在しており、その解消に大がかりなシステム修正が必要になると判断したため。約400社の利用企業に対して、代替手段の提供やサービス終了の手続きを既に進めており、現状では大半が解約済みだという。

 

この例も、当初はこんなに使われる想定では作られなかったはず。

対照的に語られているのは下記の例。

 

www.sankeibiz.jp

新型コロナウイルスの流行を機に、NTT東日本が開発し無償提供しているテレワークシステムが好評だ。自宅のパソコンから安全に職場のネットワークに入れるシステムで、利用者はすでに3万2000人を超えたが、驚くべきはこのシステムがわずか2週間で開発された点だ。携わったのは同社が4月にヘッドハンティングした登大遊さん(35)。業界では名の知れた天才プログラマーだ。

 

はじめから、スケールできる1にする。言うは易く行うは難し。

アメリカ人がスケールするのが非常に上手なのは、はじめから世界中でビジネスしようと思っているからなのかもしれませんね。

もし、身の回りにスケールする技術を持っている人がいたら、重宝してあげてください。