「ZOZOTOWNカート・決済システムの大規模リプレイス 〜 モジュラモノリス設計で進めた現実的リプレイス戦略」を読んだ
#アプリケーションアーキテクチャ #思考法・原則
#共有する
ZOZOTOWNカート・決済システムの大規模リプレイス 〜 モジュラモノリス設計で進めた現実的リプレイス戦略 - ZOZO TECH BLOG
最近のZOZOさんのブログはアーキテクチャに関する良記事が多くて捗る。
大感謝。
ZOZO社カート・決済システム刷新:その概要と本質
この記事は、ZOZOTOWNの心臓部とも言えるカート・決済システムを、セール時などの高トラフィックに耐えられるよう、モジュラーモノリスというアーキテクチャへ刷新したプロジェクトの記録です。
単なる技術的な成功譚ではなく、その裏側にある厳しいビジネス上の制約と、それに対していかに現実的かつ効果的な設計判断を下したかという、生々しい思考プロセスが描かれています。
一言で意訳するならば、これは「理想論だけでは乗り越えられない『ビジネスの重力』に対し、アーキテクトが現実主義と創意工夫で立ち向かった物語」と言えるでしょう。
/icons/hr.icon
【意訳】記事の核心を読み解く3つのポイント
この記事の価値は以下の3点に集約されます。
1. 「完璧な設計」より「間に合わせる」現実主義:ビジネス価値を最大化する二段階戦略
高トラフィックによる在庫引き当てのボトルネックを解消するため、チームはイベント駆動アーキテクチャ(EDA)による非同期処理を選択します。しかし、彼らには「7ヶ月後のセールまでにシステムを稼働させる」という絶対的なビジネス上のデッドラインがありました 。
ここでZOZO社のチームが下した判断が、このプロジェクトの最も優れた点です。
フェーズ1(短期的な延命策): まず、既存のデータベース構造は維持したまま、在庫引き当て処理をキューイングで非同期化することに注力し、セールを乗り切るという最大のビジネス価値を確実に達成しました 。
フェーズ2(理想形への進化): その後、在庫データをより高速なKVS(Key-Value Store)に切り出し、アーキテクチャをさらに進化させるという、長期的な視点も持っていました 。
これは、アーキテクチャの理想形に固執するのではなく、「まず生き残り、事業を継続させる」という全体最適を優先した見事な意思決定です。理想と現実のギャップを認識し、意図的に戦術的負債を受け入れるという高度な判断の実例と言えます 。
2. 「結果整合性」をユーザー体験まで落とし込んだUI/UX設計
非同期アーキテクチャを導入すると、ユーザーがカートに商品を入れても、在庫が確保できたかどうかの結果がすぐには返ってきません。この技術的な帰結を、ZOZO社はシステム内部だけで解決しようとはしませんでした。
彼らは、この「結果整合性」という技術的制約を、「カート投入後にステータス表示が変わり、結果を待つ」という具体的なユーザー体験(UX)にまで落とし込んで設計しています 。
これは、アーキテクチャの制約をユーザーから隠蔽するのではなく、制約を前提としてサービス全体を再設計するという、極めて成熟したアプローチです。技術的な課題(How)の裏にある「ユーザーにどう価値を届けるか」という本質(Why/What)まで踏み込んで設計しており、アーキテクトが向き合うべきはコードだけでなく、その影響が及ぶ範囲すべてであることを示唆しています。
3. 「静的な設計」ではなく「動的な負荷分離」という運用の知恵
このプロジェクトのもう一つの慧眼は、負荷対策を静的なシステム設計だけで終わらせなかった点にあります。
ZOZO社は、セール時に特にアクセスが集中する「過熱商品」というドメイン固有の動的な事象に着目しました。そして、以下の仕組みを構築しました。
アクセスログから「過熱商品」のリストを動的にメンテナンスする。
過熱商品へのアクセスを識別し、それを専用のキューに振り分けることで、他の通常商品への影響を最小限に抑える。
これは、設計(Design)と運用(Operation)が一体となった、まさにDevOpsやSREの思想を体現しています。一度作って終わりではなく、観測されたデータ(ログ)に基づいてシステムの振る舞いを自律的に最適化していく。この「自己適応するシステム」という発想は、我々が目指すべき「変化に強い進化するアーキテクチャ」の一つの到達点を示していると言えるでしょう。
/icons/hr.icon
汲むべき教訓とインサイト
このZOZO社の事例は学びの宝庫です。
「技術的な理想論からの脱却」の最高のケーススタディ: これは、技術的な理想論から脱却し、ビジネスの厳しい現実の中でいかに価値を最大化するかという事例です。完璧なアーキテクチャを一足飛びに目指すのではなく、ビジネス価値、ユーザー体験、そして将来の進化可能性という複数の時間軸と制約の中で、最も費用対効果の高い「現実解」を選択し続けることの重要性を示しています。
「Why思考」と「必然性」の勝利: なぜ非同期化するのか?(性能問題の解決)。なぜ二段階に分けるのか?(納期という制約)。なぜUXまで変えるのか?(結果整合性という技術的帰結)。すべての設計判断が、明確な「Why」とビジネス上の「必然性」に基づいています。これは、「技術は目的達成の手段である」という思想 の力強い実践例です。
「センスメイキング」と「共創」のヒント: このレベルの設計判断は、エンジニアだけで完結するものではありません。アーキテクチャの制約がUXに影響を及ぼすことを、プロダクトマネージャーやデザイナー、そしてビジネスサイドのステークホルダーと共有し、共に解決策を模索する「共創」のプロセスが不可欠です。複雑な状況を関係者全員で理解し、納得感のある結論を導き出す(=センスメイキング )上で、アーキテクトがいかに重要な役割を果たすかを示唆しています。
この事例は、単一の技術記事としてではなく、変化の激しい現代においてアーキテクトがどう価値を発揮すべきかという、あなたのキャリアにおける問いへの一つの優れた回答として読み解くことができるでしょう。