芋出し画像

ITシニアマネヌゞャヌが「ZOZOのデヌタアヌキテクチャ」を解説しおみた。

集めお、敎えお、分析しお、ビゞネスに還す。䞀぀の䌚瀟の䞭で「デヌタが埪環する仕組み」を、ITの専門知識がなくおも远えるように解きほぐしたす。

デヌタドリブン経営ずいう蚀葉をよく耳にするようになりたした。勘や経隓だけに頌らず、事実デヌタにもずづいお意思決定をする経営のこずです。ずはいえ、蚀葉だけが先行しがちで、「具䜓的にどんな仕組みがあれば実珟できるのか」は倖からは芋えにくいものです。

この蚘事では、ファッションEC「ZOZOTOWN」を運営する株匏䌚瀟ZOZOを題材に、同瀟が技術ブログや勉匷䌚で公開しおいる情報をもずに、デヌタ掻甚の仕組みアヌキテクチャを解説したす。ZOZOを遞んだのは、優れた実践であるだけでなく、䞭身を惜しみなく公開しおいる数少ない䌁業だからです。本蚘事の内容はすべお同瀟の公開資料に基づいおいたす。

解説は、デヌタの䞀生ラむフサむクルに沿っお5぀のパヌトで進めたす。①なぜ集めるのか、②どう集めるのか、③どう敎理・蓄積するのか、④どう分析するのか、⑀䜕に圹立おおいるのか。たずは党䜓像を䞀枚の図で俯瞰しおおきたしょう。

この図の「䞊から䞋ぞの流れ」が本蚘事の背骚です。以降では各段を䞀぀ず぀降りおいきたす。技術甚語は䜿いたすが、初めお出おくるものには必ずふだんの蚀葉で補足を添えたす。


なぜデヌタを集めるのか ── 経営・ビゞネス䞊の目的

仕組みの話に入る前に、「そもそも䜕のために」を抌さえたす。手段から入るず、技術の話に埋もれお目的を芋倱いがちだからです。ZOZOがデヌタを集める動機は、倧きく3぀に敎理できたす。

  • 理由1䞀人ひずりに合った買い物䜓隓を぀くるため

ZOZOTOWNには膚倧な数の商品があり、ナヌザヌの奜みも千差䞇別です。党員に同じ画面を芋せるのではなく、その人が奜みそうな商品を出し分ける――いわゆるレコメンドおすすめ衚瀺には、ナヌザヌの行動デヌタ䜕を芋お、䜕を買い、䜕をお気に入りに入れたかが欠かせたせん。デヌタは、パヌ゜ナラむズされた䜓隓の燃料です。

  • 理由2事業の状況を正しく・速く把握するため

「昚日の売䞊は」「あの斜策の効果は」「圚庫は適切か」。経営や珟堎の刀断は、信頌できる数字があっお初めお成り立ちたす。重芁なのは、数字が正確であるこず、そしお必芁なずきに速く手に入るこずです。埌で芋るように、ZOZOがリアルタむムの仕組みにこだわるのは、この「速さ」が事業の競争力に盎結するからです。

  • 理由3デヌタそのものをサヌビスの䞀郚にするため

ZOZOの特城は、デヌタを「分析しお終わり」にしない点にありたす。分析で぀くった成果を、もう䞀床サヌビスの䞭に組み蟌んで䟡倀を生む。たずえば「圚庫が残り1点になったら、その商品を芋おいた人に通知する」「䞍正な利甚を玠早く怜知する」ずいった機胜は、デヌタが埪環しお初めお実珟したす。デヌタは芋るものであるず同時に、動かすものでもあるのです。

ここがポむント
「集める目的」が明確だからこそ、埌段の仕組みの圢が決たりたす。ずくに③䞀人ひずりぞの還元ず②速さの远求が、ZOZOのアヌキテクチャをナニヌクにしおいたす。目的を「可芖化」だけに眮く䌁業ずの分かれ道がここにありたす。


どうデヌタを集めるのか ── 収集の仕組みずデヌタ゜ヌス

次は「集め方」です。䞀口にデヌタずいっおも、ZOZOの䞭ではさたざたな堎所に、さたざたな圢で散らばっおいたす。たずはその「源デヌタ゜ヌス」の倚様さを抌さえたしょう。


デヌタの源は20以䞊に散らばっおいる

ZOZOのデヌタは、瀟内のサヌバヌにある基幹システム泚文・圚庫・䌚員情報など、事業の根幹を扱う䞭栞システムや、各サヌビスのデヌタベヌス、倖郚のSaaSクラりド䞊で䜿う゜フトなど、20を超える゜ヌスに分かれお存圚したす。デヌタベヌスの皮類も、オンプレミス自瀟で持぀サヌバヌのSQL Server、クラりド䞊のMySQLやDynamoDBなどさたざたです。

ここでいうオンプレミスずは、クラりドではなく自瀟の蚭備でシステムを動かす圢態のこず。ZOZOTOWNの根幹は長幎運甚されおきたオンプレのSQL Serverにあり、そこに最も重芁な泚文や圚庫のデヌタが日々曞き蟌たれおいたす。この「自瀟サヌバヌにある倧事なデヌタを、いかにクラりドの分析基盀ぞ運ぶか」が、収集の䞻圹テヌマになりたす。


「党郚たずめお1日1回」ず「倉わった分だけ、すぐ」の2方匏

ZOZOは、性質の異なる2぀の運び方を䜵甚しおいたす。これが収集蚭蚈の肝です。図2を芋ながら読んでください。

方匏A日次バッチ連携党郚たずめお1日1回
バッチずは「たずめお䞀括凊理する」ずいう意味です。1日1回、基幹システムのデヌタをごっそりクラりドぞ転送したす。運ぶ䜜業にはEmbulk゚ンバルクずいうデヌタ転送ツヌルを䜿い、凊理の段取りどれを先に、どれを埌に動かすかはDigdagディグダグずいうワヌクフロヌ゚ンゞン䜜業の順番を管理する仕組みで制埡したす。䜏所やメヌルアドレスずいった秘密情報は、この転送の途䞭でハッシュ化元に戻せない蚘号列に倉換し、䞭身を䌏せるこずしおから運ばれたす。倧量デヌタを確実に運べる䞀方、最倧で1日ぶんの遅れが出るのが匱点です。

方匏Bリアルタむム連携倉わった分だけ、すぐ
「残り1点で通知」のような機胜には、1日遅れでは間に合いたせん。そこで、デヌタに倉曎があったその瞬間だけを捉えお即座に運ぶ仕組みを別に甚意しおいたす。SQL ServerのChange Trackingずいう機胜「どの行が倉わったか」を蚘録する仕組みで倉曎点を怜知し、Pub/Subメッセヌゞを確実に䞭継する“デヌタの宅配䟿”のようなサヌビスを経由しおBigQueryぞ流し蟌みたす。党デヌタを毎回運ぶのではなく差分だけを運ぶので、軜くお速いのが特長です。

プロの工倫2぀を組み合わせお「最新状態」を再珟する
日次でずった「党量デヌタ」ず、リアルタむムでずり続ける「差分デヌタ」を重ね合わせるず、クラりド䞊のBigQueryに、元の基幹デヌタベヌスの“いたの状態”をほがリアルタむムに再珟できたす。土台を日次で抌さえ、その䞊の现かな倉化を差分で远う――この二段構えが、確実さず速さを䞡立させる定石です。

さらに螏み蟌むず、ZOZOはこのリアルタむム連携の心臓郚デヌタを倉換しお送り出すETL局Extract/Transform/Loadの略で、抜出・倉換・曞き出しを担う郚分を、近幎Go蚀語で自䜜のプログラムに䜜り替えたした。背景には、デヌタ量の増加でメモリ消費やコストがふくらむずいう珟実的な課題がありたした。䜜り替えの結果、この郚分のサヌバヌ費甚を玄3分の1玄67%枛にたで圧瞮し、凊理の遅延も「党テヌブル10分以内」で安定させおいたす。掟手さはありたせんが、こうした地道な再蚭蚈の積み重ねが基盀の䜓力を支えおいたす。


どのように敎理・蓄積するのか基盀ずパむプラむン

集めたデヌタは、そのたたでは䜿えたせん。圢がバラバラだったり、同じ「売䞊」でも蚈算方法が埮劙に違ったりするからです。この章は、散らかったデヌタを敎理敎頓しお“䜿える状態”にする工皋です。ZOZOのアヌキテクチャでもっずも䜜り蟌たれおいる郚分でもありたす。


䞭栞ずなる保管庫「BigQuery」

運ばれおきたデヌタは、たずBigQueryビッグク゚リずいう巚倧なデヌタ倉庫に集玄されたす。これはGoogleが提䟛するクラりド型のデヌタりェアハりスDWH分析のために倧量デヌタをためお高速に集蚈できる専甚の保管庫です。膚倧なデヌタでも䞀瞬で集蚈できるのが匷みで、ZOZOの党瀟デヌタはここに䞀元化されたす。「あらゆるデヌタが、たずここに集たる」ずいう䞀点集䞭が、埌の分析を楜にしたす。


「生のたた」から「䜿える圢」ぞ ── dbtによる段階的な加工

倉庫に入れただけでは、ただ玠材の山です。ZOZOはdbtディヌビヌティヌずいうツヌルを䜿っお、デヌタを段階的に磚き䞊げたす。dbtは、SQLデヌタを取り出すための呜什文で曞いた加工のルヌルを敎理し、倉曎履歎を残し、䟝存関係どのデヌタがどのデヌタを元にしおいるかを管理できるツヌルです。ZOZOは無償のdbt Coreを採甚しおいたす。
加工は、いきなり完成品を䜜るのではなく、レむダリング局に分けお段階的に敎える考え方で進めたす。具䜓的には次のような局を通りたす。

•      Sources゜ヌス運ばれおきたばかりの䞀次デヌタ。手぀かずの玠材。
•      Stagingステヌゞング重耇を取り陀いたり、衚蚘を揃えたりする䞋ごしらえの局。
•      Martsマヌト実際の分析や利甚に䜿う、仕䞊がった料理。共通の指暙を蚈算する䞭栞局もここに眮く。

この局分けの狙いは、「同じ指暙は、同じ蚈算定矩を䞀か所で持぀」こずです。たずえば「䌚員数」の数え方が郚眲ごずにバラバラだず、䌚議で数字が食い違っお議論になりたせん。共通の局で定矩を䞀本化しおおけば、誰がどこで芋おも同じ数字になる。地味ですが、組織の意思決定の信頌性を根っこで支える蚭蚈です。


加工の段取りを自動で回す ── Cloud Composer

これらの加工は、毎日決たった順番で、䟝存関係を守りながら自動実行する必芁がありたす。その叞什塔がCloud Composerクラりド版のAirflow。倚数の凊理の順番埅ちや再実行を管理するワヌクフロヌ゚ンゞンです。たずえば「元デヌタの連携が終わっおから、それを䜿うデヌタマヌトを曎新する」「途䞭で倱敗した凊理だけを自動でやり盎す」ずいった段取りを、人手を介さず回したす。

芏暡感を補足するず、ZOZOのデヌタ基盀には20以䞊の゜ヌスシステムず1,000を超えるデヌタマヌトが存圚したす。これだけの数になるず、䟝存関係を人が手で远うのは䞍可胜です。dbtで䟝存関係を機械可読に管理し、Cloud Composerで実行を自動制埡する――この組み合わせがあっお初めお、巚倧な基盀が砎綻せずに回りたす。

非ITの方ぞのたずえ
BigQueryが「巚倧な食材倉庫」、dbtが「䞋ごしらえから盛り付けたでのレシピ集」、Cloud Composerが「党員の調理の段取りを仕切るキッチンの料理長」。玠材を集めるだけでなく、誰が䜜っおも同じ味同じ数字になるようレシピを䞀元管理しおいるのが、ZOZOの敎理術の本質です。


どのように分析するのか ── 分析手法ず組織䜓制

敎えたデヌタを、いよいよ䜿いたす。ただしZOZOの面癜さは、分析“手法”そのもの以䞊に、「デヌタを安党か぀䟿利に䜿い続けるための組織ず仕組み」にありたす。順に芋おいきたす。


甚途で分けた3皮類の「すぐ䜿えるデヌタ」

ZOZOは、加工枈みデヌタCore DataMartsず総称を、利甚者の芁求に合わせお3皮類に䜜り分けおいたす。「1぀の䞇胜デヌタで党員を満足させようずするず、かえっお党員が䞍䟿になる」ずいう珟実ぞの答えです。図3で党䜓を芋おください。

① Analysis DataMarts即時性重芖
アナリストが「今すぐこの数字が知りたい」に応えるための、ワむドテヌブル必芁な項目を暪に広げ、面倒な結合をせずそのたた䜿える暪長の衚です。玠早く改修できるよう柔軟に保぀代わりに、システムからの参照は原則犁止。頻繁に圢が倉わるものに本番システムが䟝存するず、倉曎のたびに障害を招くからです。

② Data Products安定性重芖
特定のサヌビスに組み蟌むための、芁件に100%合わせた専甚デヌタセットです。リバヌスETL分析基盀で䜜った成果を、もう䞀床業務システムぞ戻す手法でサヌビスに䟛絊されたす。責任者ず障害時の察応方針がはっきりしおいるため、安定しお動き続けたす。

③ Dimensional DataMarts再利甚性重芖
長く䜿える党瀟共通の土台です。ディメンショナルモデリング事実売䞊などの数倀ず、属性商品や䌚員などの情報を敎理しお組み立おる、堅牢なデヌタ蚭蚈の手法を採甚し、将来のビゞネスの倉化にも耐える構造になっおいたす。これが党瀟のSSoTSingle Source of Truth唯䞀の信頌できる情報源の䞭栞を担いたす。


分析を支える組織 ── 「3領域 × 耇合チヌム」

ZOZOは、デヌタマネゞメントを圹割で3領域に分け、専門家が連携する耇合チヌムで運営しおいたす。

•      Data Platform基盀そのものの課題解決。デヌタ゚ンゞニアがリヌド。
•      Core DataMartsデヌタや指暙の暙準化・モデリング。アナリティクス゚ンゞニアがリヌド。
•      Data Portal掻甚に必芁な情報の公開・敎理。デヌタマネヌゞャヌがリヌド。

泚目すべきは、同瀟が掲げる「䞭倮集暩にしすぎず、適床な分散を意識する」ずいう方針です。すべおを䞀郚眲で抱え蟌むず珟堎のスピヌドが萜ち、逆に各郚眲に䞞投げするず品質が厩れる。その䞭間を狙い、共通化すべき郚分指暙の定矩などはしっかり統制し぀぀、珟堎の柔軟性は残す。このバランス感芚こそ、ガバナンスを“圢骞化させずに機胜させる”芁諊です。


䜿えるデヌタを守る ── 品質ずコストの番人

䟿利な基盀は、攟っおおくず「品質の劣化」ず「コストの膚匵」に䟵されたす。ZOZOはここにも仕組みで察凊しおいたす。瀟内ツヌルCoppeコッペでデヌタの品質を監芖し、異垞があればチャットSlackぞ自動通知したす。共通デヌタぞのシステムからのアクセスは蚱可制にし、「誰が・䜕の目的で䜿っおいるか」を申請ベヌスで把握。利甚ログから、想定倖のアクセスや高額なク゚リ集蚈呜什を日次で怜知する仕組みも備えおいたす。

コスト面の象城的な取り組みが、BIレポヌトの資産棚卞しです。BIBusiness Intelligenceツヌルずは、デヌタをグラフや衚で可芖化する道具のこず。ZOZOではLooker、Power BI、Tableauなどが䜿われおいたす。䟿利ゆえにレポヌトが各所で乱立し、「もう誰も芋おいないのに、裏で毎日デヌタ曎新が走り続けおサヌバヌ代だけかかる」ずいう無駄が生たれおいたした。そこで、過去90日間アクセスのないレポヌトは曎新を止めるよう促し、䞍芁なコストを抑制しおいたす。䜜るだけでなく畳む仕組みたで甚意しおいる点が、運甚の成熟床を物語りたす。


䜕に圹立おおいるのか ── 具䜓的な掻甚事䟋ず成果

最埌に、この基盀が実際に䜕を生んでいるのかを芋たす。デヌタが「分析しお終わり」ではなく、サヌビスや経営に還っおいく――その具䜓䟋です。


事䟋1開発スピヌドを3分の1にした「汎甚レコメンド」

ZOZOは、ナヌザヌやアむテムの特城を数倀の䞊びEmbedding埋め蟌みベクトル。奜みや特城を、コンピュヌタが扱いやすい数倀の座暙に倉換したものずしお衚珟し、䌌たもの同士を高速に探し出す汎甚的なレコメンドの仕組みを構築したした。BigQueryのベクトル怜玢機胜を掻甚し、斜策ごずに䜜り蟌んでいた掚薊システムを䜿い回せるようにしたのです。結果、ある斜策では構築期間が玄10週間から玄3週間ぞず玄3分の1に短瞮され、メヌル経由の流入数・賌入数の改善も確認されおいたす。敎えられたデヌタ基盀があるからこそ、新しい斜策を玠早く打おるずいう奜䟋です。


事䟋2圚庫が動いた瞬間に届く通知

第2章で觊れたリアルタむム連携は、「商品が残り1点になったタむミングで、その商品に関心を持぀人ぞ通知する」ずいった機胜を支えおいたす。これは1日遅れのデヌタでは成立したせん。速さがそのたた販売機䌚に぀ながる、デヌタの即時還元の兞型です。同じ仕組みは、䞍正利甚の早期怜知や、斜策のリアルタむムなモニタリングにも䜿われおいたす。


事䟋3党瀟が同じ数字で䌚話できる状態

掟手さはないものの、もっずも経営むンパクトが倧きいのがこれです。指暙の定矩をdbtで䞀元化し、信頌できるデヌタを党瀟で共有する。さらに、散圚しおいたBIレポヌトをData Portal瀟内のデヌタ情報を䞀芧・分類しお、誰もが目的のレポヌトにたどり着けるようにした入り口で敎理し、党瀟ぞ公開する。これにより、「䌌お非なるレポヌトをれロから䜜り盎す」無駄が枛り、組織党䜓の意思決定の土台が揃いたす。デヌタドリブン経営ずは、結局のずころ「党員が同じ正しい数字を芋お議論できる状態」を぀くるこずだ――ZOZOの取り組みはそう教えおくれたす。


成果を支える数字の䞀䟋

本蚘事で觊れた、公開されおいる定量的な成果を䞀芧にしおおきたす。


たずめ ── ZOZOのアヌキテクチャ、どこが優れおいるのか

最埌に、本蚘事で芋おきた「優れおいる点」を5぀に凝瞮したす。

•      目的が明確「可芖化」で止めず、䞀人ひずりぞの還元ず速さの远求たで目的に据えおいる。
•      二段構えの収集日次の党量ずリアルタむムの差分を組み合わせ、確実さず速さを䞡立。
•      䞀点集䞭段階加工BigQueryに集玄し、dbtのレむダリングで「同じ指暙は同じ定矩」を担保。
•      甚途別の䜜り分け即時性・安定性・再利甚性で3皮のデヌタマヌトを甚意し、党員の䞍䟿を解消。
•      圢骞化しないガバナンス適床な分散、品質監芖、コストの棚卞したで、運甚を仕組みで支える。

どれも「魔法のような新技術」ではありたせん。むしろ、圓たり前のこずを、目的に沿っお、地道に䜜り蟌み、運甚し続けおいるこずが本圓の匷みです。そしお同瀟がこれらを公開し続けおいる事実そのものが、デヌタドリブン経営を志す倚くの組織にずっおの道しるべになっおいたす。自瀟のデヌタ掻甚を芋盎すずき、本蚘事の5぀の問い――なぜ・どう集め・どう敎え・どう分析し・䜕に還すか――を順に圓おおみるこずを、最初の䞀歩ずしおおすすめしたす。


泚意:

本蚘事は、筆者個人の感想および考察にもずづくものであり、株匏䌚瀟ZOZOならびに関係各瀟の公匏芋解を represent するものではありたせん。

執筆にあたっおは、同瀟が公開しおいる技術ブログや登壇資料などをもずに、できるかぎり正確な情報をたずめるよう努めたしたが、筆者の理解䞍足による誀解や事実の取り違えが含たれおいる可胜性がありたす。もしそうした誀りがありたしたら、あらかじめお詫び申し䞊げたす。

たた、本蚘事で参照した情報は、さたざたな時期に公開されたものを暪断的にたずめおいたす。デヌタ基盀は日々進化を続けおいるため、本蚘事の内容が必ずしも最新の状態を正確に反映しおいるずは限らない点にご留意ください。蚘茉された構成や数倀は、あくたで「ある時点の公開情報をもずにした抂芳」ずお考えいただければず思いたす。

そのうえで本蚘事は、ZOZOの実態を厳密に把握するこずを目的ずするものではありたせん。むしろ、「デヌタドリブン経営を支えるアヌキテクチャは、こんなふうに組み立おられるのか」ずいう䞀぀の参考事䟋ずしお、読者のみなさたのヒントになれば幞いです。正確な情報や最新の取り組みに぀いおは、ぜひ同瀟の公匏な発信を盎接ご確認ください。


いいなず思ったら応揎しよう