第20話 クラウドの動く城
広告で、血を流した。
だが、私はまだ折れていなかった。
広告は止めた。
出血は止まった。
すると、不思議なことが起きた。
数ヶ月経つと、有料アプリの売上が、少しずつ安定してきたのである。
爆発はしない。
バズりもしない。
世界も来ない。
ジョニーも来ない。
だが、毎日、ぽつぽつと売れる。
一日、数本。
少ない。
だが、ゼロではない。
月にすると、だいたい2万円。
私は画面を見つめた。
安定。
なんて甘い言葉だろう。
広告費を燃やさなくても、毎月少しずつお金が入ってくる。
これはもう、事業である。
小さな事業である。
小さな事業は、育てれば大きくなる。
問題は、何か。
私は考えた。
私のアプリは。
——「ちゃんと」していないのではないか。
次は、もっと本物のサービスを作るべきではないか。
アプリ単体ではない。
クラウドで動くアプリである。
私は、音楽用のレビューアプリを作ることにした。
アーティストをお気に入りする。
聴いたアルバムを記録する。
曲ごとに感想を書く。
星をつける。
お気に入りを保存する。
他の人のレビューも見られる。
ランキングもある。
世界中の音楽好きが、自分だけの名盤を語り合う。
これは、もはやアプリではない。
文化である。
音楽レビューの、世界的プラットフォームである。
私は思った。
これなら、クラウドがいる。
レビューは端末に閉じ込めてはいけない。
感想は、世界へ放たれるべきである。
名盤は、共有されるべきである。
そして、私にはひそかな憧れがあった。
インフラである。
会社では、インフラは別のチームの仕事だった。サーバーを立て、本番環境を守る。選ばれた者の領域だった。
私はアプリを書くだけの人間で、本番のサーバーに入るには、申請がいり、偉い人の承認がいった。
私はずっと、あの向こう側に憧れていた。
そして、今。私は一人である。
承認する偉い人は、いない。申請も、いらない。
しかも安定したアプリ収入があり、インフラ費用を賄える。
私はついに、インフラをこの手で触れる。
私は武者震いした。
これは、もう仕事ではない。——夢である。ドリームである。
プロジェクトDである。
私は調べた。
AWS。
Amazon Web Services。世界中の本物のサービスが使っている、クラウドである。
私はアカウントを作った。そして、画面を見た。
——サービスが、200個あった。
EC2。S3。RDS。Lambda。DynamoDB。CloudFront。ロードバランサー。
——呪文である。
何が何だか、わからない。EC2。S3。RDSは聞いたことがある。
だが、わからない、ということは。——全部、私は吸収して成長できるということである。無限である。♾️である。
私はそう解釈した。
本物のサービスは、これを全部使っているのだ。ならば、私も使う。
もはや事業だ。
私はAI Agentに頼んだ。
「スケールする、本格的な、構成にして」
スケール。本格的。良い響きである。
AI Agentは、嬉々として組み始めた。
サーバーは、一台では心配である。落ちたら、困る。だから、複数台。オートスケール。アクセスが増えたら、自動で増える。増えたら困るので、負荷分散。データベースは、壊れたら困る。だから、二重化。マルチAZ。バックアップも、自動。キャッシュも、入れる。CDNで、世界中に配信。
そして、私は自分でも盛れるところを盛った。
インスタンスの大きさ。micro。small。medium。large。
——large、だ。
私のサービスは、本格的である。microなんて、おもちゃのサイズだ。
私は、largeを選んだ。
考えてみてほしい。今は、ユーザーが数人でも。明日、数千人が、一斉にインストールするかもしれない。
そのとき、microでは。——耐えられない。サーバーが落ちる。せっかく来た数千人が、去っていく。
それは。——機会損失である。
機会損失。私はその言葉だけは知っていた。ビジネス書で読んだ。来るはずの客を、取り逃がす損失。
数千人を、サーバーダウンで逃す。それに比べれば、サーバー代など、安いものである。
だから、large、である。
備えあれば、憂いなし。
私はいつ、数千人が来てもいいように、万全の態勢を整えた。
そして、私は思い出した。
本物の現場には、本番環境と。——開発環境がある。
dev環境である。
いきなり本番をいじるのは、プロではない。まず、dev環境で試す。お作法である。
私は、本番とまったく同じ構成を、もうひとつ用意した。
——70億人が来ても、大丈夫な構成である。
本番の前にdev環境で試せて安全でもある。
私はジョニーを思い出した。
今度こそ。世界中のジョニーが来ても、私のサーバーは耐える。びくともしない。
私は本物のエンジニアになった。クラウドアーキテクトである。
私は構成図を眺めた。
美しい。複雑で、堅牢で、美しい。これが、本物のサービスである。
私はそれをデプロイした。
世界中のジョニーを待つ城が、完成した。
私はワクワクしながらアクセスを待った。
審査も通った。
ユーザーは相変わらず、70億人は、来なかった。
来たのは、いつもの数人だった。
だが、私は焦っていなかった。
今は、まだ数人。
一年後には、数万人かもしれない。
私は、世界中のジョニーに耐える城を、24時間稼働させていた。
サーバーは眠らない。誰も来なくても、回り続ける。
オートスケールは、増えるものがないので、最小のまま。だが、最小でも、複数台。二重化。マルチAZ。全部、動いている。
誰もいない城で、明かりだけが、煌々とついていた。
月末。
AWSから、請求が来た。
私は開いた。
——7万円。
7万円。一ヶ月のサーバー代。誰も使っていない、サーバーの代金。
私は固まった。
7万円。それは、私が最初の4ヶ月かけて、血の出るような思いで稼いだ、あの7万円と。——同じ額だった。
4ヶ月の稼ぎが、サーバー代、一ヶ月で消えた。
私のアプリの、月の売上は、2万円。サーバー代は、7万円。差し引き。——マイナス、5万円。
毎月。何もしなくても。5万円ずつ、消えていく。
私は気づいた。
広告は、止めれば止まった。血は、止まった。
だが、サーバーは、止められない。止めたら、サービスが死ぬ。
これは、出血ではない。——固定費である。
毎月、確実に訪れる。
私は、月額の出血を、自分で契約していた。
私は構成図を、もう一度見た。
70億人に耐える、城。そこに住んでいるのは、数十人と、毎月7万円の請求書だった。
私は、世界一立派な城を建てて、世界一、家賃に苦しむ城主になった。
私はサーバーを縮小しようとした。
だが、構成は複雑すぎて、どれを消すと何が壊れるのか、わからなかった。
AI Agentに頼んで建てた城は、私にはもう、管理できなかった。
私は、自分が建てた城の間取りすら、把握できていなかった。
煌々と明かりのついた、無人の城。
その電気代を、私は今日も払っている。
誰も、来ない。
だが、サーバーは、回っている。
——今、この、瞬間も。




