Amazon AuroraのデータをリアルタイムにGoogle BigQueryに連携してみた / Realtime data linkage from Amazon Aurora to Google BigQuery
by
Takehiro Shiozaki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Amazon AuroraのデータをリアルタイムにGoogle BigQueryに連携してみた 株式会社ZOZOテクノロジーズ SRE部 塩崎 健弘 Copyright © ZOZO Technologies, Inc.
Slide 2
Slide 2 text
© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ SRE部 塩崎 健弘 2年前にRedshiftをBigQueryにマイグレーションしたことが きっかけで、データ基盤を整備する人になった。 リモートワーク中に服を着ているかどうかは五分五分。 2
Slide 3
Slide 3 text
© ZOZO Technologies, Inc. https://zozo.jp/ ● 日本最大級のファッション通販サイト ● 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに2020年6 月末時点) ● 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商 品を掲載 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など 3
Slide 4
Slide 4 text
© ZOZO Technologies, Inc. https://wear.jp/ ● 日本最大級のファッションコーディネートアプリ ● 1,400万ダウンロード突破、コーディネート投稿総数は1,000万件以上(と もに2020年6月末時点) ● App Store / Google Playが利用可能な一部の国と地域でもダウンロー ドが可能 ● 等身大の着こなしが支持を集め、200万人以上のフォロワーを持ち WEARISTAに認定された一般ユーザーも誕生 4
Slide 5
Slide 5 text
© ZOZO Technologies, Inc. 5 https://zozo.jp/multisize/ ● 身長と体重を選択するだけで理想のサイズの商品が見つかる新しい洋 服の買い方 ● 2019年秋冬アイテムから、人気ブランドのマルチサイズアイテムを販売 開始 【参加企業】 株式会社アーバンリサーチ、株式会社ストライプインターナショナル、 株式会社デイトナ・インターナショナル、株式会社パル、株式会社ビームス、 株式会社ベイクルーズ、MARK STYLER株式会社、リーバイ・ストラウス ジャパン株式会社 など
Slide 6
Slide 6 text
© ZOZO Technologies, Inc. 6 https://zozo.jp/zozomat/ ● お客様の足を3Dで計測するために開発された計測用マット ● 計測情報をもとに、靴の推奨サイズを提案 ● 2020年春よりNIKEやCONVERSEなどの約100アイテムに対応(対象商 品は順次拡充予定)
Slide 7
Slide 7 text
© ZOZO Technologies, Inc. 7 https://fbz.zozo.com/ ● ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス ● 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメン ト業務を、ZOZOTOWNの物流センター「ZOZOBASE」が受託 ● 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可 能 ● 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能。これ により、商品欠品による販売機会の損失を最小化
Slide 8
Slide 8 text
© ZOZO Technologies, Inc. 目次 ● ZOZOのAI活用事例紹介 ● AI案件が成功すると起こること ● リアルタイム連携基盤の運用の辛さ ● 運用が楽なリアルタイム連携基盤の構築 ● まとめ 8
Slide 9
Slide 9 text
© ZOZO Technologies, Inc. ZOZOでのAI活用事例紹介1 ● 検索結果パーソナライズ ● ユーザー毎に以下を計算 ○ 新着商品に対する感度 ○ セール商品に対する感度 ○ etc. ● 上記の特徴量と商品情報を組み合わせることで、 ユーザー毎のおすすめ順を生成 ● 紹介記事: ZOZOTOWNのおすすめ順を支える検索パーソナライズ基盤 https://techblog.zozo.com/entry/zozotown-search-personalize 9
Slide 10
Slide 10 text
© ZOZO Technologies, Inc. ZOZOでのAI活用事例紹介2 ● おすすめアイテム ● 以下のロジックを競わせている ○ Recommendations AI (GCP) ○ ZOZO研究所独自開発のAI ● 紹介記事 ○ ZOZOTOWN「おすすめアイテム」を支える推薦システム基盤 ○ https://techblog.zozo.com/entry/zozotown-item-recommend-infra-arch ○ 『ZOZOTOWN「おすすめアイテム」を支える推薦システム基盤』 を支えるKubeflow実験基盤の構築と改善 ○ https://techblog.zozo.com/entry/kubeflow-experiments 10
Slide 11
Slide 11 text
© ZOZO Technologies, Inc. AI案件が成功すると… ● より高度なAIを開発したくなる → データ品質を上げる必要が出る ● データ品質とは ○ 意図にあう内容のデータか(正確性・妥当性・有効性) ○ 欠損のないデータか(完全性) ○ データ間の関係に矛盾がないか(一貫性) ○ 最新のデータか(適時性) ○ 適切な参照権限が付与されたデータか ○ 出典: ゆずたそ はせりょ(2020) データマネジメントが30分でわかる本 ● 今回のテーマは「適時性」 11
Slide 12
Slide 12 text
© ZOZO Technologies, Inc. 1日1回では遅すぎる ● 多くのデータ基盤では1日1回〜数回のバッチでデータ同期 ○ 日次・月次のレポート作成ではこの頻度で十分 ● だが、AI案件が入ってくると話が変わる ○ 可能な限りリアルタイムのデータがデータ基盤に欲しい ● 注: リアルタイム連携は難易度高め ○ 必要性が不明なまま作ると地獄 12
Slide 13
Slide 13 text
© ZOZO Technologies, Inc. リアルタイム連携も作りました ● SQL ServerのChange Tracking機能(CDC的な機能)を活用 ● Fluentd→Cloud Pub/Sub→Cloud Dataflow→BigQuery ● 遅延時間: 平均数十秒 ● 紹介記事 ○ ZOZOTOWNを支えるリアルタイムデータ連携基盤 ○ https://techblog.zozo.com/entry/real-time-data-linkage-infrastructure 13
Slide 14
Slide 14 text
© ZOZO Technologies, Inc. もっと楽に作れないだろうか ● 運用課題 ○ 連携対象テーブルの追加・スキーマ変更の時にオペレーションが必要 ○ Dataflowのコードはちょっと癖がある ○ 大量のデータ更新があった時にDataflowのスケールが間に合わない ○ Fluentdの冗長化に気をつける必要がある ● DWHからRDBのデータを直接参照できれば楽 14
Slide 15
Slide 15 text
© ZOZO Technologies, Inc. 同一クラウドなら楽できる ● RedshiftのFederation機能 ○ RDS(MySQL or PostgreSQL)のテーブルを参照できる ○ ※MySQLとの連携は2021/01/28時点ではPreview ○ https://docs.aws.amazon.com/redshift/latest/dg/federated-overview.html ● BigQueryのFederation機能 ○ Cloud SQL(MySQL or PostgreSQL)にクエリを実行できる ○ https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries 15 Redshift RDS BigQuery Cloud SQL
Slide 16
Slide 16 text
© ZOZO Technologies, Inc. マルチクラウドは? ● AuroraからBigQueryへFederationできる? ● 流石に直接はムリ 16 BigQuery Aurora ❌
Slide 17
Slide 17 text
© ZOZO Technologies, Inc. 作戦 ● Aurora→Cloud SQL→BigQuery ● Cloud SQLはGCP外部のDBをプライマリとしてレプリカを作れる ● レプリを設定するためにネットワークの理解が必要不可欠 17 Replication Federation
Slide 18
Slide 18 text
© ZOZO Technologies, Inc. AWSとGCPのネットワーク 18 ● AWS: DBインスタンスは自分たちのVPCの「中」に配置 ● GCP: DBインスタンスは自分たちVPCの「外」に配置 ○ Google ManagedなVPCに配置され、VPC間がピア接続される ● つまり、AuroraのVPCとCloud SQLのVPCは直接接続されていない AWS VPC VPN or 専用線 GCP VPC (Customer) GCP VPC (Google Managed) VPC Peering
Slide 19
Slide 19 text
© ZOZO Technologies, Inc. AWSとGCPのネットワーク 19 ● VPC間で交換している経路情報はデフォルトでは伝搬しない AWS VPC GCP VPC (Customer) GCP VPC (Google Managed) AWS VPCのCIDR GCP VPC(Customer)のCIDR GCP VPC(Customer)のCIDR GCP VPC(Google Managed)のCIDR
Slide 20
Slide 20 text
© ZOZO Technologies, Inc. AWSとGCPのネットワーク 20 ● ルートを伝搬させる ○ VPC Peeringのexport custom routesをON ○ Cloud RouterのCustom route advertisements AWS VPC GCP VPC (Customer) GCP VPC (Google Managed) AWS VPCのCIDR GCP VPC(Customer)のCIDR AWS VPCのCIDR GCP VPC(Customer)のCIDR GCP VPC(Google Managed)のCIDR GCP VPC(Google Managed)のCIDR
Slide 21
Slide 21 text
© ZOZO Technologies, Inc. この記事に助けられました ● GCPでマルチクラウドなネットワークを構成するときの必読記事 ● GCP の細かすぎて伝わらないハイブリッドネットワーキング ● https://medium.com/google-cloud-jp/gcp-の細かすぎて伝わらないハイブリッドネットワーキング-14ed12ebe84d 21
Slide 22
Slide 22 text
© ZOZO Technologies, Inc. 他のハマったポイント1 ● プライマリインスタンスのホスト名60文字制限 ○ If you use a DNS address, it can contain up to 60 characters. ○ https://cloud.google.com/sql/docs/mysql/replication/replication-from-external#setup-source-instance ● Route 53に短い名前をCNAMEで登録して解決 22 very-long-name.rds.amazonaws.com CNAME short-name.example.com very-long-name.rds.amazon.com SOURCE HOST: short-name.example.com 名前解決 Connect
Slide 23
Slide 23 text
© ZOZO Technologies, Inc. 他のハマったポイント2 ● レプリケーション開始時にダンプデータを用意する必要あり ○ GTIDなしのダンプデータはロードに失敗する 23 Primary Read Replica mysqldump mysqldump with GTID without GTID ❌ Load Load
Slide 24
Slide 24 text
© ZOZO Technologies, Inc. あとはConnector作るだけ 24 ● Cloud SQLが以下を満たしていればConnectorを作れる ○ BigQueryと同一のリージョン ○ External IPの付与 ● より詳細な手順: ○ インターナル通信でAurora MySQLからCloud SQLへレプリケーションする方法 ○ https://qiita.com/katsuyan/items/262598a606e46743e3ce Federation
Slide 25
Slide 25 text
© ZOZO Technologies, Inc. 運用上の注意点1 ● EXTERNAL_QUERYは毎回クエリをCloud SQLで実行する ○ 重いクエリには不向き ○ 実行計画を確認 ● 何回も参照するテーブルの場合はWorkflowの先頭でキャッシュ ○ BigQueryのテーブルに変換すればスピードアップ ○ リアルタイム性と実行速度のトレードオフ 25 Federation
Slide 26
Slide 26 text
© ZOZO Technologies, Inc. 運用上の注意点2 ● High Availability構成 ● Cloud SQLが死んだ場合には ○ mysqldumpでAuroraからダンプを取得必要あり ○ データ量次第では復旧時間が数時間になることもある ● 異なるゾーンにHot Standbyを用意 26 Replication Federation Federation(Standby)
Slide 27
Slide 27 text
© ZOZO Technologies, Inc. まとめ ● AI案件が成功すると1日1回のバッチでのデータ連携では遅くなる ● リアルタイム連携基盤も作ったけど、運用を楽にしたい ● マルチクラウドでは素直にFederationできない ○ Aurora→Cloud SQLのレプリケーションしてからFederation ○ ネットワーク周りの設定が「肝」 ● We’re Hiring ○ 弊社のデータエンジニアの守備範囲は広いです ○ データを集めるためなら、ネットワークからフロントエンドまでやる「なんでも屋」 27
Slide 28
Slide 28 text
No content