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

Amazon AuroraのデータをリアルタイムにGoogle BigQueryに連携してみた / Realtime data linkage from Amazon Aurora to 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. Amazon AuroraのデータをリアルタイムにGoogle
    BigQueryに連携してみた

    株式会社ZOZOテクノロジーズ

    SRE部

    塩崎 健弘
    Copyright © ZOZO Technologies, Inc.

    View Slide

  2. © ZOZO Technologies, Inc.
    株式会社ZOZOテクノロジーズ

    SRE部

    塩崎 健弘

    2年前にRedshiftをBigQueryにマイグレーションしたことが
    きっかけで、データ基盤を整備する人になった。

    リモートワーク中に服を着ているかどうかは五分五分。


    2

    View Slide

  3. © ZOZO Technologies, Inc.
    https://zozo.jp/

    ● 日本最大級のファッション通販サイト

    ● 1,300以上のショップ、7,900以上のブランドの取り扱い(ともに2020年6
    月末時点)

    ● 常時83万点以上の商品アイテム数と毎日平均3,000点以上の新着 商
    品を掲載

    ● 即日配送サービス

    ● ギフトラッピングサービス

    ● ツケ払い など

    3

    View Slide

  4. © ZOZO Technologies, Inc.
    https://wear.jp/

    ● 日本最大級のファッションコーディネートアプリ

    ● 1,400万ダウンロード突破、コーディネート投稿総数は1,000万件以上(と
    もに2020年6月末時点)

    ● App Store / Google Playが利用可能な一部の国と地域でもダウンロー
    ドが可能

    ● 等身大の着こなしが支持を集め、200万人以上のフォロワーを持ち
    WEARISTAに認定された一般ユーザーも誕生

    4

    View Slide

  5. © ZOZO Technologies, Inc.
    5
    https://zozo.jp/multisize/


    ● 身長と体重を選択するだけで理想のサイズの商品が見つかる新しい洋
    服の買い方

    ● 2019年秋冬アイテムから、人気ブランドのマルチサイズアイテムを販売
    開始

    【参加企業】

     株式会社アーバンリサーチ、株式会社ストライプインターナショナル、

     株式会社デイトナ・インターナショナル、株式会社パル、株式会社ビームス、

     株式会社ベイクルーズ、MARK STYLER株式会社、リーバイ・ストラウス ジャパン株式会社  など


    View Slide

  6. © ZOZO Technologies, Inc.
    6
    https://zozo.jp/zozomat/


    ● お客様の足を3Dで計測するために開発された計測用マット

    ● 計測情報をもとに、靴の推奨サイズを提案

    ● 2020年春よりNIKEやCONVERSEなどの約100アイテムに対応(対象商
    品は順次拡充予定)


    View Slide

  7. © ZOZO Technologies, Inc.
    7
    https://fbz.zozo.com/


    ● ZOZOTOWN出店企業の自社ECのフルフィルメント支援サービス

    ● 自社EC運営のための撮影・採寸・梱包・配送などの各種フルフィルメン
    ト業務を、ZOZOTOWNの物流センター「ZOZOBASE」が受託

    ● 設備投資・人件費・在庫保管料などの負担なしで、自社ECの運営が可
    能

    ● 各販売チャネル(自社EC・店舗・ZOZOTOWN)の在庫連携が可能。これ
    により、商品欠品による販売機会の損失を最小化


    View Slide

  8. © ZOZO Technologies, Inc.
    目次

    ● ZOZOのAI活用事例紹介

    ● AI案件が成功すると起こること

    ● リアルタイム連携基盤の運用の辛さ

    ● 運用が楽なリアルタイム連携基盤の構築

    ● まとめ

    8

    View Slide

  9. © ZOZO Technologies, Inc.
    ZOZOでのAI活用事例紹介1

    ● 検索結果パーソナライズ

    ● ユーザー毎に以下を計算

    ○ 新着商品に対する感度

    ○ セール商品に対する感度

    ○ etc.

    ● 上記の特徴量と商品情報を組み合わせることで、

    ユーザー毎のおすすめ順を生成

    ● 紹介記事:

    ZOZOTOWNのおすすめ順を支える検索パーソナライズ基盤

    https://techblog.zozo.com/entry/zozotown-search-personalize

    9

    View Slide

  10. © 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

    View Slide

  11. © ZOZO Technologies, Inc.
    AI案件が成功すると…

    ● より高度なAIを開発したくなる → データ品質を上げる必要が出る

    ● データ品質とは

    ○ 意図にあう内容のデータか(正確性・妥当性・有効性)

    ○ 欠損のないデータか(完全性)

    ○ データ間の関係に矛盾がないか(一貫性)

    ○ 最新のデータか(適時性)

    ○ 適切な参照権限が付与されたデータか

    ○ 出典: ゆずたそ はせりょ(2020) データマネジメントが30分でわかる本

    ● 今回のテーマは「適時性」

    11

    View Slide

  12. © ZOZO Technologies, Inc.
    1日1回では遅すぎる

    ● 多くのデータ基盤では1日1回〜数回のバッチでデータ同期

    ○ 日次・月次のレポート作成ではこの頻度で十分

    ● だが、AI案件が入ってくると話が変わる

    ○ 可能な限りリアルタイムのデータがデータ基盤に欲しい

    ● 注: リアルタイム連携は難易度高め

    ○ 必要性が不明なまま作ると地獄

    12

    View Slide

  13. © 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

    View Slide

  14. © ZOZO Technologies, Inc.
    もっと楽に作れないだろうか

    ● 運用課題

    ○ 連携対象テーブルの追加・スキーマ変更の時にオペレーションが必要

    ○ Dataflowのコードはちょっと癖がある

    ○ 大量のデータ更新があった時にDataflowのスケールが間に合わない

    ○ Fluentdの冗長化に気をつける必要がある

    ● DWHからRDBのデータを直接参照できれば楽


    14

    View Slide

  15. © 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

    View Slide

  16. © ZOZO Technologies, Inc.
    マルチクラウドは?

    ● AuroraからBigQueryへFederationできる?

    ● 流石に直接はムリ



    16
    BigQuery
    Aurora

    View Slide

  17. © ZOZO Technologies, Inc.
    作戦

    ● Aurora→Cloud SQL→BigQuery

    ● Cloud SQLはGCP外部のDBをプライマリとしてレプリカを作れる

    ● レプリを設定するためにネットワークの理解が必要不可欠



    17
    Replication Federation

    View Slide

  18. © 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

    View Slide

  19. © 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

    View Slide

  20. © 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

    View Slide

  21. © ZOZO Technologies, Inc.
    この記事に助けられました

    ● GCPでマルチクラウドなネットワークを構成するときの必読記事

    ● GCP の細かすぎて伝わらないハイブリッドネットワーキング

    ● https://medium.com/google-cloud-jp/gcp-の細かすぎて伝わらないハイブリッドネットワーキング-14ed12ebe84d

    21

    View Slide

  22. © 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

    View Slide

  23. © ZOZO Technologies, Inc.
    他のハマったポイント2

    ● レプリケーション開始時にダンプデータを用意する必要あり

    ○ GTIDなしのダンプデータはロードに失敗する

    23
    Primary
    Read
    Replica
    mysqldump
    mysqldump
    with GTID
    without GTID ❌
    Load
    Load

    View Slide

  24. © ZOZO Technologies, Inc.
    あとはConnector作るだけ

    24
    ● Cloud SQLが以下を満たしていればConnectorを作れる

    ○ BigQueryと同一のリージョン

    ○ External IPの付与

    ● より詳細な手順:

    ○ インターナル通信でAurora MySQLからCloud SQLへレプリケーションする方法

    ○ https://qiita.com/katsuyan/items/262598a606e46743e3ce

    Federation

    View Slide

  25. © ZOZO Technologies, Inc.
    運用上の注意点1

    ● EXTERNAL_QUERYは毎回クエリをCloud SQLで実行する

    ○ 重いクエリには不向き

    ○ 実行計画を確認

    ● 何回も参照するテーブルの場合はWorkflowの先頭でキャッシュ

    ○ BigQueryのテーブルに変換すればスピードアップ

    ○ リアルタイム性と実行速度のトレードオフ

    25
    Federation

    View Slide

  26. © ZOZO Technologies, Inc.
    運用上の注意点2

    ● High Availability構成

    ● Cloud SQLが死んだ場合には

    ○ mysqldumpでAuroraからダンプを取得必要あり

    ○ データ量次第では復旧時間が数時間になることもある

    ● 異なるゾーンにHot Standbyを用意

    26
    Replication Federation
    Federation(Standby)

    View Slide

  27. © ZOZO Technologies, Inc.
    まとめ

    ● AI案件が成功すると1日1回のバッチでのデータ連携では遅くなる

    ● リアルタイム連携基盤も作ったけど、運用を楽にしたい

    ● マルチクラウドでは素直にFederationできない

    ○ Aurora→Cloud SQLのレプリケーションしてからFederation

    ○ ネットワーク周りの設定が「肝」

    ● We’re Hiring

    ○ 弊社のデータエンジニアの守備範囲は広いです

    ○ データを集めるためなら、ネットワークからフロントエンドまでやる「なんでも屋」

    27

    View Slide

  28. View Slide