メニュー

公開日:
6 min read
エンジニアリング

サーバー増強ゼロで負荷を100分の1にした話【後編】- メールが生んだ逆転の発想

サーバー増強ゼロで負荷を100分の1にした話【後編】- メールが生んだ逆転の発想のイメージ

よくある質問 (FAQ)

結局、何をしてサーバー負荷を減らしたのですか?

判定処理中に、登録した全大学の結果をメールで送信しました。23時から1時までの判定処理中、DBから結果を取り出しながら順次メールを送信し、受験生は午前1時を待たずに全ての判定結果を受け取れるようにしたのです。

この解決策が効果的だった理由は?

午前1時の「針のような鋭いピーク」が消滅し、Web公開時のアクセスが激減しました。メールという枯れた技術でスケーラビリティ問題を回避でき、サーバー購入費ゼロで問題を解決できたのです。「そもそもアクセスさせなければいい」という逆転の発想が功を奏しました。

「サーバーを買えば解決する」と嘘をつかなかった理由は?

正直に「来年は?再来年は?生徒数が増えたら?」という未来の不確実性を伝えたからです。もし「大丈夫です!サーバー買えば完璧です!」と嘘をついていたら、この解決策は生まれなかったでしょう。正直であることが、最高の解決策を生んだのです。

この経験が20年後のサーバーレス愛につながった理由は?

サーバーのスケーリングや処理能力の見積もりにトラウマを抱えたからです。AzureでもKubernetesでも、結局は見積もり地獄が待っていました。サーバーレスはアクセスが来たら勝手にスケールし、来なければゼロ、見積もり不要という点で、20年前のトラウマからようやく解放された感覚を得たのです。

この経験から得られる教訓は?

制約が創造性を生むということです。「サーバーを買えない」という制約が「アクセスさせない」という逆転の発想を生みました。また、技術の進化を素直に信じられなくなった経験も、20年の経験がもたらした「財産」と言えるかもしれません。

サーバー増強ゼロで負荷を100分の1にした話【後編】

前編では、センター試験合否判定システムの負荷問題を、サーバー増強なしで解決した話をお伝えしました。 後編では、その裏側と20年後への影響について語ります。

そして、40度の熱

その翌年、私は40度の熱を出して寝込んでいた。

クライアントからの電話。 「お大事に」の一言はなく、「システムは大丈夫ですか?」とだけ。

20年前、リモートワークなんて言葉もない時代。 それでも、解熱剤を飲み、ベッドの中でノートPCを開いた。 オフィスとSkypeで接続し、学生スタッフからの報告や指示要請に答えながら、VPN経由でサーバーに接続して状況を監視した。

冷たいと思うだろうか。 でも、向こうも休みなしで働いている。 センター試験直後の塾は戦場だ。 保護者からの問い合わせが殺到し、職員全員が不眠不休。 お互い、限界状態での戦いだった。

本当のエンジニアリング

「サーバーを買えば解決する」

これは半分正解で、半分間違いだ。 確かに一時的には解決する。 でも、来年は?再来年は?生徒数が増えたら?

正直に「分かりません」と答えたことで、別の道を探すしかなくなった。

制約が創造性を生むとはこのことだ。

まとめ - タイトルは釣りである

さて、ここでネタばらしをしよう。 タイトルは釣りだ。

正確に言えば:

  • サーバーの負荷は確かに激減した ✓
  • でも「100分の1」は…まあ、盛った
  • 実際は「DBへのアクセスを避けた」が正しい

何をしたか?

**判定処理中に、登録した全大学の結果をメールで送信した。 **

たったそれだけ。

23時から1時までの判定処理中、DBから結果を取り出しながら、順次メールを送信。 受験生は午前1時を待たずに、メールで全ての判定結果を受け取れる。

ルールベースエンジンが複雑な配点方式で計算した結果 - 「英語と国語の高い方で計算したA判定」「数学400点換算でのB判定」- が、全てメールに記載される。

結果:

  • 午前1時の「針のような鋭いピーク」が消滅
  • Web公開時のアクセスが激減
  • サーバー購入費ゼロ
  • 500万円のロードバランサーは結局使わなかった

枯れた技術「メール」で、スケーラビリティ問題を回避した。

もしあの時「大丈夫です!サーバー買えば完璧です!」と嘘をついていたら、この解決策は生まれなかった。

**正直であることが、最高の解決策を生んだ。 **

サーバーの性能を100倍にする方法?簡単だ。 **そもそもアクセスさせなければいい。 **

これが、商業プログラミングの真髄。 これが、本物のエンジニアリング。

エピローグ - 20年後の答え

だから、サーバーのスケーリングとか処理能力の見積もりは、私にはトラウマだ。

Azureが出たとき、Microsoftは「クラウドがそれを解決してくれる」と喧伝していた。 騙された。 結局、何台のVMが必要で、どのスペックで、ピーク時にはいくつまでスケールして…という見積もり地獄は変わらなかった。

その後、コンテナ技術やオーケストレーションが実装された。 Dockerはまだいい。 でも、Kubernetesを使うことには、どうしても心理的抵抗があった。

「またAzureみたいに騙されるのではないか…」

ノードは何台必要?ポッドのリソース制限は?HPA(Horizontal Pod Autoscaler)の閾値は?結局、見積もり地獄は形を変えただけじゃないか。

この問題を本当に解決したのは、サーバーレスだ。

アクセスが来たら勝手にスケール。 来なければゼロ。 見積もり不要。 考えなくていい。 ノードもポッドも知らなくていい。

だから、今ではCloudflareが大好きだ。 20年前のトラウマから、ようやく解放された。


追記:あの時、「サーバーを買えない」という制約が、「アクセスさせない」という逆転の発想を生んだ。 今思えば、それが今のサーバーレス愛につながっている。 制約は時に、最高の教師となる。

そして、技術の進化を素直に信じられなくなった自分がいる。 「これで解決!」と言われても、「本当に?」と疑ってしまう。 それもまた、20年の経験がもたらした「財産」なのかもしれない。