AWS Lambdaという「魔法」:昔作ったサービスが止まったらしい
昨日、少し面白い話を聞いた。
昔、自分が立ち上げたサービスがある。
私はとっくの昔にその現場を離れているのだが、どうやらその後の改修でサービスが一時停止したらしい。
まあ、それ自体は別に珍しい話ではない。
システムなんて生き物みたいなものだ。長く運用していれば壊れることもある。
面白かったのは、その理由だ。
どうやら「コスト削減」のためにAWS Lambdaへ移行したらしい。
そして、止まった。
なんというか、実に現代的な話である。
死人に口なし
さらに面白いのは、その過程で私がちょっとした悪者になっているらしいことだ。
曰く、
「昔の設計が悪かった」
「EC2なんか使っているからコストが高い」
「最初からサーバーレスにしておけば良かった」
らしい。
なるほど。
死人に口なし。
退場した設計者は反論できないので便利である。
エンジニア業界ではよくある。
プロジェクトが炎上したら前任者のせい。
売上が落ちたら前任者のせい。
システムが遅いのも前任者のせい。
便利な存在だ。
私も散々やってきたので、お互い様である。
そこは文句はない。
Lambdaは魔法の杖ではない
ただ、話を聞く限り、どうも気になる。
Lambdaを魔法の杖だと思った人がいたのではないか。
AWSの営業資料を見る。
Lambdaは安い。
Lambdaは自動でスケールする。
Lambdaはサーバ管理不要。
確かに全部正しい。
だが、その説明を聞いて、
「じゃあ全部Lambdaにすればいいじゃん」
と考えた瞬間に事故は始まる。
当時、そのサービスはアクセスが多かった。
しかもアクセスパターンが素直ではない。
イベントが始まると一気にアクセスが来る。
テレビやSNSで紹介されると急激に跳ねる。
典型的なスパイク型だ。
だから常時起動を選んだ。
コストはかかる。
だが、待たせないことを優先した。
それだけの話である。
技術を信仰し始めると
最近の技術者を見ていて時々思う。
技術そのものを信仰し始める人がいる。
マイクロサービス教が流行ったことがある。
Kubernetes教も一気に勢力を拡大した。
今回担当した人はLambda教だったのかもしれない。
教義は単純だ。
「モダンだから正しい」
である。
実にわかりやすい。
考えなくて済む。
しかし現実はそんなに甘くない。
Lambdaにはコールドスタートがある。
同時実行数の問題もある。
サービス制限もある。
ステートフルな設計との相性もある。
当然だ。
どんな技術にも得意不得意がある。
問題は、それを理解せずに導入することだ。
ハンマーを買ったら世の中が全部釘に見える人がいる。
Lambdaを覚えたら世の中のシステムが全部Lambda向きに見える人もいる。
だいたい同じ現象である。
本当に面白いのはここからだ。
もしサービスが成功していたら、
「我々のLambda移行が成功した」
になる。
失敗したら、
「昔の設計が悪かった」
になる。
どちらに転んでも現在の担当者は無傷だ。
素晴らしい。
無敵の理論である。
なぜ、この人はそう作ったのか
別に私は自分の設計が完璧だったとは思っていない。
今なら違う構成も考える。
もっと安くできた部分もあるだろう。
でも少なくとも、その設計には理由があった。
アクセス数を見た。
負荷を見た。
Lambdaの導入も検討はした。
その結果として選んだ。
それだけだ。
技術というのは流行る。
数年ごとに救世主が現れる。
サーバーレス。
コンテナ。
Kubernetes。
AI。
毎回世界が変わるらしい。
だが不思議なことに、20年以上この仕事をしていると毎回同じものを見る。
「新技術で全て解決できる」
と信じた人たちが、数年後に同じ壁にぶつかる姿だ。
まあ、私を悪者にすることで現場の空気が良くなるなら安いものだ。
どうぞ好きなだけ戦犯にしてほしい。
ただ、一つだけ。
もし次に誰かの設計を馬鹿にしたくなったら、その前に考えてみるといい。
「なぜ、この人はそう作ったのか?」
と。
その問いを飛ばしてしまった瞬間、エンジニアリングは終わりで、ただの宗教になる。