こんにちは!開発者なら誰もが一度は耳にしたことがある「真理」があります。
> 「モノリシック(Monolithic)は古くてダサいもの、マイクロサービス(MSA)は洗練されていて完璧なもの。」
ところが、この信念を打ち砕く事件が発生しました。それは、クラウドの創始者でありMSAの先駆者であるアマゾン(Amazon Prime Video)チームが、自らMSAを捨ててモノリシックに回帰した事件です。その結果は衝撃的でした。コストをなんと90%も削減したのです。
一体何が起こったのでしょうか?アマゾン プライム ビデオ チームの事例を通して、「MSA無用論」の実体を非常に詳細に掘り下げてみましょう。🕵️♂️📉

1. MSAの幻想: 「細かく分割すれば無条件に良い?」 🔪
アマゾン プライム ビデオには「映像品質モニタリングサービス(VQA)」というものがあります。顧客が見る映像に途切れや乱れがないかリアルタイムで監視するツールです。
初期には、このシステムを「教科書的なMSA」の形で設計しました。
- AWS Step Functionsをオーケストレーターとして使用
- AWS Lambda (サーバーレス)を利用して機能を細かく分割
- 各機能がデータをS3に保存し、読み込む構造
理論上は完璧でした。拡張性も高く、管理も楽に見えました。しかし、現実は地獄でした。🔥
2. 問題の発生: 「本末転倒」 💸
サービスを運営するうちに、深刻な二つの問題が発生しました。
- オーバーヘッドの地獄: 各機能をマイクロサービス(Lambda)に分割したため、それらが互いに通信するのにかかるコストが莫大でした。データを処理する時間よりもデータを「やり取りする時間」の方が長くかかる状況が発生したのです。
- コスト爆弾 (Step Functions): 数千のビデオストリームを秒単位で監視するため、マイクロサービスのステータスを管理する「Step Functions」の料金が指数関数的に増加しました。
簡単に言えば、「ラーメンを一杯作るのに(映像処理)、お湯を沸かす人、麺を入れる人、スープを入れる人が皆別々にいて、互いに電話で連絡を取り合うために料金爆弾を食らったようなもの」でした。📞💸
3. 決断: 「再び一つにまとめよう!」 (Monolithic Transformation) 🔄
アマゾンチームは大胆な決断を下します。「分散されたマイクロサービスを一つのプロセス(Monolith)に統合しよう!」
- Lambda & Step Functionsの削除: 細かく分割されたラムダ関数を一つの巨大なアプリケーションコードに統合しました。
- メモリ通信: データをS3やネットワークでやり取りする代わりに、同じメモリ内で変数としてやり取りするように変更しました。(速度が比較にならないほど速くなりました🚀)
- EC2/ECSへの移行: サーバーレスを捨て、堅牢なEC2インスタンス(コンテナ)上で一つの大きな塊として実行させました。
4. 結果: コスト90%削減の奇跡 📉💰
結果は驚くべきものでした。
- コスト90%削減: インフラコストが10分の1に減少しました。
- システム複雑度の解消: 数百のラムダとパイプラインを管理する苦痛から解放されました。
- 性能向上: ネットワークを介さずメモリで直接処理するため、処理速度もはるかに速くなりました。
アマゾン エンジニアリング ブログは次のように結論付けています。
> 「高いスループットが必要なシステムでは、マイクロサービスアーキテクチャはむしろ毒になる可能性がある。」
5. なぜMSAは失敗したのか? (教訓) 🎓
この事件が与える教訓は「MSAはゴミだ」ではありません。「MSAは万能の鍵ではない」という点です。
- 誤った分離: 互いに非常に密接に関連している(Tightly Coupled)機能を無理に引き裂くと、通信コスト(ネットワーク、シリアル化)のために効率が破壊されます。
- 分散システムの罠: 「ネットワーク呼び出しは無料ではない」という第一原則を忘れてはなりません。
- 適正技術(Right Sizing): スタートアップや特定のワークロード(大量のデータ高速処理)には、複雑なMSAよりも単純なモノリシックの方がはるかに強力で安価である可能性があります。
📝 結論: 流行を追わず「本質」を見よう
開発者の間で「モノリシックで組む」と言うと嘲笑された時代がありました。しかし、アマゾンのこの事例は私たちに「謙虚さ」を教えてくれます。
GoogleやNetflixがMSAを採用しているからといって、私たちの会社もMSAを採用しなければならないわけではありません。時には、素朴に見える「一つの大きな塊(Monolith)」が最も速く、最も安く、最も賢明な正解であることがあります。
あなたのプロジェクトは今、「必要によるMSA」ですか、それとも「流行を追うMSA」ですか?一度点検してみる時期です。🤔⏱️
コメントを残す