Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon AuroraのデータをリアルタイムにGoogle BigQueryに連携してみた...

Amazon AuroraのデータをリアルタイムにGoogle BigQueryに連携してみた / Realtime data linkage from Amazon Aurora to Google BigQuery

Takehiro Shiozaki

January 28, 2021
Tweet

More Decks by Takehiro Shiozaki

Other Decks in Technology

Transcript

  1. © ZOZO Technologies, Inc. https://zozo.jp/
 • 日本最大級のファッション通販サイト
 • 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに2020年6 月末時点)


    • 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商 品を掲載
 • 即日配送サービス
 • ギフトラッピングサービス
 • ツケ払い など
 3
  2. © ZOZO Technologies, Inc. https://wear.jp/
 • 日本最大級のファッションコーディネートアプリ
 • 1,400万ダウンロード突破、コーディネート投稿総数は1,000万件以上(と もに2020年6月末時点)


    • App Store / Google Playが利用可能な一部の国と地域でもダウンロー ドが可能
 • 等身大の着こなしが支持を集め、200万人以上のフォロワーを持ち WEARISTAに認定された一般ユーザーも誕生
 4
  3. © ZOZO Technologies, Inc. 5 https://zozo.jp/multisize/
 
 • 身長と体重を選択するだけで理想のサイズの商品が見つかる新しい洋 服の買い方


    • 2019年秋冬アイテムから、人気ブランドのマルチサイズアイテムを販売 開始
 【参加企業】
  株式会社アーバンリサーチ、株式会社ストライプインターナショナル、
  株式会社デイトナ・インターナショナル、株式会社パル、株式会社ビームス、
  株式会社ベイクルーズ、MARK STYLER株式会社、リーバイ・ストラウス ジャパン株式会社  など

  4. © ZOZO Technologies, Inc. 6 https://zozo.jp/zozomat/
 
 • お客様の足を3Dで計測するために開発された計測用マット
 •

    計測情報をもとに、靴の推奨サイズを提案
 • 2020年春よりNIKEやCONVERSEなどの約100アイテムに対応(対象商 品は順次拡充予定)
 

  5. © ZOZO Technologies, Inc. 7 https://fbz.zozo.com/
 
 • ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス
 •

    自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメン ト業務を、ZOZOTOWNの物流センター「ZOZOBASE」が受託
 • 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可 能
 • 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能。これ により、商品欠品による販売機会の損失を最小化
 

  6. © ZOZO Technologies, Inc. 目次
 • ZOZOのAI活用事例紹介
 • AI案件が成功すると起こること
 •

    リアルタイム連携基盤の運用の辛さ
 • 運用が楽なリアルタイム連携基盤の構築
 • まとめ
 8
  7. © ZOZO Technologies, Inc. ZOZOでのAI活用事例紹介1
 • 検索結果パーソナライズ
 • ユーザー毎に以下を計算
 ◦

    新着商品に対する感度
 ◦ セール商品に対する感度
 ◦ etc.
 • 上記の特徴量と商品情報を組み合わせることで、
 ユーザー毎のおすすめ順を生成
 • 紹介記事:
 ZOZOTOWNのおすすめ順を支える検索パーソナライズ基盤
 https://techblog.zozo.com/entry/zozotown-search-personalize
 9
  8. © 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
  9. © ZOZO Technologies, Inc. AI案件が成功すると…
 • より高度なAIを開発したくなる → データ品質を上げる必要が出る
 •

    データ品質とは
 ◦ 意図にあう内容のデータか(正確性・妥当性・有効性)
 ◦ 欠損のないデータか(完全性)
 ◦ データ間の関係に矛盾がないか(一貫性)
 ◦ 最新のデータか(適時性)
 ◦ 適切な参照権限が付与されたデータか
 ◦ 出典: ゆずたそ はせりょ(2020) データマネジメントが30分でわかる本
 • 今回のテーマは「適時性」
 11
  10. © ZOZO Technologies, Inc. 1日1回では遅すぎる
 • 多くのデータ基盤では1日1回〜数回のバッチでデータ同期
 ◦ 日次・月次のレポート作成ではこの頻度で十分
 •

    だが、AI案件が入ってくると話が変わる
 ◦ 可能な限りリアルタイムのデータがデータ基盤に欲しい
 • 注: リアルタイム連携は難易度高め
 ◦ 必要性が不明なまま作ると地獄
 12
  11. © 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
  12. © ZOZO Technologies, Inc. もっと楽に作れないだろうか
 • 運用課題
 ◦ 連携対象テーブルの追加・スキーマ変更の時にオペレーションが必要
 ◦

    Dataflowのコードはちょっと癖がある
 ◦ 大量のデータ更新があった時にDataflowのスケールが間に合わない
 ◦ Fluentdの冗長化に気をつける必要がある
 • DWHからRDBのデータを直接参照できれば楽
 
 14
  13. © 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
  14. © ZOZO Technologies, Inc. 作戦
 • Aurora→Cloud SQL→BigQuery
 • Cloud

    SQLはGCP外部のDBをプライマリとしてレプリカを作れる
 • レプリを設定するためにネットワークの理解が必要不可欠
 
 
 17 Replication Federation
  15. © 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
  16. © 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
  17. © 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
  18. © 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
  19. © ZOZO Technologies, Inc. あとはConnector作るだけ
 24 • Cloud SQLが以下を満たしていればConnectorを作れる
 ◦

    BigQueryと同一のリージョン
 ◦ External IPの付与
 • より詳細な手順:
 ◦ インターナル通信でAurora MySQLからCloud SQLへレプリケーションする方法
 ◦ https://qiita.com/katsuyan/items/262598a606e46743e3ce
 Federation
  20. © ZOZO Technologies, Inc. 運用上の注意点1
 • EXTERNAL_QUERYは毎回クエリをCloud SQLで実行する
 ◦ 重いクエリには不向き


    ◦ 実行計画を確認
 • 何回も参照するテーブルの場合はWorkflowの先頭でキャッシュ
 ◦ BigQueryのテーブルに変換すればスピードアップ
 ◦ リアルタイム性と実行速度のトレードオフ
 25 Federation
  21. © ZOZO Technologies, Inc. 運用上の注意点2
 • High Availability構成
 • Cloud

    SQLが死んだ場合には
 ◦ mysqldumpでAuroraからダンプを取得必要あり
 ◦ データ量次第では復旧時間が数時間になることもある
 • 異なるゾーンにHot Standbyを用意
 26 Replication Federation Federation(Standby)
  22. © ZOZO Technologies, Inc. まとめ
 • AI案件が成功すると1日1回のバッチでのデータ連携では遅くなる
 • リアルタイム連携基盤も作ったけど、運用を楽にしたい
 •

    マルチクラウドでは素直にFederationできない
 ◦ Aurora→Cloud SQLのレプリケーションしてからFederation
 ◦ ネットワーク周りの設定が「肝」
 • We’re Hiring
 ◦ 弊社のデータエンジニアの守備範囲は広いです
 ◦ データを集めるためなら、ネットワークからフロントエンドまでやる「なんでも屋」
 27