ZOZOのリプレイスプロジェクトで得られる唯一無二の経験。大規模サービスを進化させるやりがいとは
サービス開発は止めない。ZOZOならではのリプレイスプロジェクト
——ZOZOTOWNリプレイスプロジェクトの歩みについて教えてください。
半澤:現在のリプレイスプロジェクトは2017年に始まりました。サービスが急成長を続ける中で、ZOZOもレガシーな技術と向き合い続けてきたんです。
2004年のサービス誕生時、ZOZOTOWNは「年商500億円規模のトランザクションに耐えうるサイト」として構築されました。しかし2014年頃には成長とともに従来のシステムアーキテクチャを温存したままトランザクションの増大に対処していくのは難しい状況に。そこでクラウドベースのマイクロサービス化への移行を決断し、2017年に大規模なリプレイスプロジェクトを立ち上げたんです。
以降は大規模システムのマイクロサービス化等に知見を持つエンジニアがどんどん加わり、クラウド移行を進めるとともに、リプレイス選任の新しいチームも発足しました。今後は2024年を一つのゴールとして、全社横断のリプレイスを完了させる計画です。
武井:ここまでの規模でリプレイスプロジェクトを進めている例は、他社にはなかなかないかもしれません。新規のサービス開発を完全に止め、1年ほどの期間をかけてリプレイスするケースは多いと思いますが、ZOZOは全体のサービス開発を止めずに、かつ途中であきらめることもなく、長期間リプレイスをやり続けています。
なぜなら、当社は“zozo.jp”をすべての土台として、この上に新しいサービスや機能を作っていくビジネスモデルだから。ドメインやサイト自体を分けていないので土台ごと新しく作ることは選択せず、それでも新規開発をしやすくするためのリプレイスは進めていかなければいけない。独特の難しさがあるプロジェクトだと思います。
後戻りできないところから「一気に変える」決断も
——半澤さんと武井さんは、それぞれどのようなミッションを持ってリプレイスに関わっているのでしょうか。
半澤:カートのリプレイスにはたくさんのフェーズがあり、障害につながりやすい高負荷な部分から対応を進めています。たとえばZOZOTOWNのサイト内で人気商品が発売されると、リクエストが集中してデータベースに負荷がかかり、影響がサイト全体に波及してしまうことも。リプレイスフェーズ1ではリクエストのキャパシティコントロールを実現し、エラー発生率を大幅に削減しました。
私自身はバックエンドのリーダーとして、アーキテクチャの検討や調整、成果物のレビューなどを担っています。カートのリプレイスではインフラ、アプリを含むフロントエンドはもちろん、BtoBサービスや基幹システムなど他部門との調整が必要な場面も多いですね。
武井:私が所属するフロントエンドチームでは、“zozo.jp”の全ページをリプレイスするミッションを持っています。これを進めていく上で、まず始めに2022年11月、お客さまに最初に訪れていただくホーム画面を置き換えました。
チーム内では「もっと影響の小さなところから進めるべきでは?」という議論もありましたが、大規模な数字を持つページでなければ検証できない部分もあります。そこで、あえて後戻りできないところから一気に変えていくという大きな決断をしたんです。
すでにお客さまに見える範囲でのリプレイスが実行されていて、たとえば「elove by ZOZO」というZOZOTOWN内に新しくオープンした常設コンテンツでは新しい基盤を使っており、レガシー技術の影響は一切ありません。今後のロードマップとしては全ページを置き換える前提で、カートやアイテム詳細、バックエンドなどを担当するチームとともにプロジェクトを進めていく予定です。
過去と向き合い、「変換能力」「設計能力」が磨かれる現場
——2人は、このリプレイスプロジェクトの課題や難しさをどのように感じていますか?
半澤:第一に、今の巨大なモノリスな既存システムのソースと難解な仕様を理解した上で、マイクロサービスへ分割し、開発言語を置き換えることです。ZOZOTOWNのバックエンドは元々VBScriptを使用しており、今でもシステムの大部分をVBScriptが支えています。これを、言語として息が長く業界に人材が豊富なJavaにリプレイスする予定です。約20年の歴史で継ぎ足してきたソースを改修する際には、既存のソースを知っている人でなければ対応しづらいという側面もあります。
武井:新しいシステムとこれまでのシステムでは、設計が根本から違いますよね。社内でもこれまでのシステムを知っている人は少なく、新しく加わったメンバーも、リプレイスするまでは両方理解する必要があります。
半澤:私は2013年に入社したのでこれまでの技術への対応にも苦労はありませんが、最近入ってきた人は苦戦することもあるかもしれませんね。率直に言って、ZOZOTOWNの仕様は一度や二度見ただけでは理解できないと思います。
——こうした苦労を踏まえて、リプレイスプロジェクトを経験することで得られるものとは?
武井:基本的には大変なことが多いのですが、「やればやるほど好奇心がくすぐられる」と感じています。実を言うと、私自身は入社当初、レガシーな技術を斜めから見ている面がありました。だけどレガシーな技術を知れば知るほどリスペクトの念に駆られていく自分がいたんです。今では、これまでのシステムを学べる機会は貴重だと考えるようになりました。新しい技術に当てはめるだけだと、言語やフレームワークに迎合して自分の頭で考えることが少ないのですが、この仕事ではこれまでの技術と向きあいながら「自分でどう変えていくか」を追求しなければいけないので。
半澤:むしろゼロイチのほうが簡単な場合もあるかもしれませんね。すでにあるものを新しく置き換えていく変換能力や、アーキテクチャの設計能力が磨かれることが、ZOZOのリプレイスプロジェクトに関わる意義だと思います。加えてZOZOは開発メンバーの裁量が大きく、トップダウンではなく、メンバー内で議論し提案してプロジェクトを動かしていくことも経験できます。
武井:それは強く実感しています。フロントエンドチームで「いきなりホーム画面から変えましょう」という提案も、チーム内で議論して私が提案書をまとめました。こうした起案の機会は本当にたくさんありますよね。
「ファッションの『こと』ならZOZO」の実現に向けて
——2人の今後の展望を教えてください。
半澤:現在取り組んでいるカートのリプレイスは佳境に入りつつあります。障害の減少など、目に見える成果も現れてきました。ただ、一つの課題を乗り越えてもまた新しい課題が見えてくるプロジェクトでもあります。全社で目指している「ファッションを『買う』ならZOZO」から、「ファッションの『こと』ならZOZO」への進化に向け、今後も他部門と連携し、さまざまな施策に耐えうるシステムを作っていきたいと思っています。
武井:リプレイスプロジェクトを通じて新たな基盤や土台を作っていくことは、ZOZOで働く仲間の仕事のあり方を変えることにもつながっていると感じています。もっともっと新規開発しやすい体制を目指して、私も事業サイドとの連携を強化しながら動いていきたいと考えています。やるべきことはたくさんあるし、学べることが本当に多い環境なので、好奇心旺盛な人、チャレンジ精神旺盛な人にどんどん仲間に加わってほしいですね。