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

日経におけるデータエンジニアリングの取り組み ~ NIKKEI Tech Talk #2

htamakos
December 09, 2022

日経におけるデータエンジニアリングの取り組み ~ NIKKEI Tech Talk #2

htamakos

December 09, 2022
Tweet

More Decks by htamakos

Other Decks in Technology

Transcript

  1. 1
    NIKKEI Tech Talk #2
    日本経済新聞社
    プラットフォーム推進室
    データインテリジェンスグループ
    2022年12月08日
    日経における
    データエンジニアリングの取り組み

    View full-size slide

  2. 2
    自己紹介:玉越 敬典(たまこし ひろのり)
    ● 名古屋市出身
    ● 子育て(息子現在11か月)に奮闘中
    ● データエンジニア2年目
    (前職はコンサルタント)
    ● Google Cloud
    Professional Data Engineer 保有

    View full-size slide

  3. 3
    データエンジニアリング
    とは

    View full-size slide

  4. 4
    Professional Data Engineer は、データを収集、変換、公開して、データに基づいて
    意思決定できるようにします。
    Data Engineer には、セキュリティとコンプライアンス、スケーラビリティと効率性、
    信頼性と忠実性、柔軟性とポータビリティに特に重点を置いて、データ処理システムの設計、
    構築、運用化、保護、モニタリングを行う能力が必要です。
    また、既存の機械学習モデルの活用、デプロイ、継続的なトレーニングができなければなりません。
    https://cloud.google.com/certification/guides/data-engineer?hl=ja
    Google Cloud Professional Data Enginner の説明

    View full-size slide

  5. 5
    データエンジニアリングとは...?
    ● データに基づいて意思決定できるようにデータを収集、変換、公開する技術
    ● データエンジニアリングを行うエンジニアには少なくとも以下の要素が求められる
    ○ データ処理システムの設計、構築、運用
    ○ モニタリング
    ○ スケーラビリティ、効率性、信頼性
    ○ 柔軟性とポータビリティ
    ○ セキュリティ
    ○ コンプライアンス
    ○ …etc
    ソフトウェアやインフラストラクチャ、セキュリティ等
    幅広い知識が求められそうなものはわかるが...
    データエンジニアリングに必要な要素の体系的な知識領域を整理したものはないのか?

    View full-size slide

  6. 6
    DAMA-DMBOK(データマネジメント知識体系ガイド)
    ● Data Management Body Of Knowledge
    ● DAMA インターナショナルという
    国際的な非営利組織によって整理されたデータ
    マネジメントに関する知識体系本
    ● プロジェクトマネジメントに関する
    知識体系本 PMBOK のデータ版
    ● “データマネジメントプロフェッショナルにとって
    有益な資料かつ指針となることを目指し、デー
    タ管理のもっとも信頼できる入門書となるよう編
    集されています”
    https://www.dama-japan.org/Introduction.html#DMBOK

    View full-size slide

  7. 7
    DAMA ホイール図
    ● DMBOK において説明される
    データマネジメントの知識体系領域を 11 の領域で表
    したもの
    ● ホイール(=車輪)という言葉の通り、
    Data Driven な経営を車の運転に例えたときに
    安全、安心、快適な車の運転を支えるものとして
    位置づけられている
    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture

    View full-size slide

  8. 8
    データエンジニアリングとは
    DMBOK で整理されているようなデータ管理に
    必要な知識領域について、
    ソフトウェアエンジニアリングによって課題解決するこ
    ともしくはそこで必要な技術のこと
    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture
    セキュリティ
    データ処理システムの
    設計、構築、運用
    モニタリング
    コンプライアンス
    スケーラビリティ、
    効率性、信頼性
    柔軟性、ポータビリティ

    View full-size slide

  9. 9
    日経におけるデータエンジニアリングの取り組み
    日経においても DAMA ホイール図に表す各領域についてエンジニアリングしている
    その一部についてご紹介
    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture
    Atlas データ基盤改善
    Atlas Datahub
    GitOps x Atlas Technical
    Support

    View full-size slide

  10. 10
    Atlas: データ基盤改

    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture

    View full-size slide

  11. 11
    日経のデータ基盤: Atlas と IMS
    Atlas と IMS という2つのシステムに別れる
    ● Atlas: 行動接触記録(行動ログ)の収集、蓄積、分析を担う[SoE からのデータ連携]
    ● IMS: 契約情報や課金情報、会員情報などを扱う [SoR からのデータ連携]
    会員情報
    課金履歴
    法人契約
    CMS
    AWS
    SoR
    SoE
    S3 Redshift
    日経電子版
    日経Asia
    日経転職版
    …etc
    AWS GCP
    データ収集
    エンドポイント
    リアルタイム連携
    バッチ連携
    データ
    ストア
    BigQuery
    Atlas
    IMS
    バッチ連携
    (一部のデータ)

    View full-size slide

  12. 12
    Atlas のアーキテクチャ概要
    Endpoint によって収集されたデータが、エンリッチメントによって拡充され、
    Consumer によって目的別に応じて用意されたデータストアにデータが連携される
    AWS GCP
    Endpoint
    Web, Android, iOS ..etc の
    SDK から送られてくる
    ビーコンを収集する
    REST API サーバ
    Enrichment
    会員情報や地理情報等
    Endpoint から送られてくる
    データに拡張データを付与する
    Consumer
    各種データストアへの連携や
    MA 連携、他システムへの
    リアルタイム連携を行う
    MA 連携、
    他システムへ
    の連携

    View full-size slide

  13. 13
    Atlas の目的別のデータストア
    1秒未満 1,2時間程度
    Latency
    Single Store
    (memSQL)
    BigQuery
    数秒〜数分
    Elasticsearch
    カラムナー カラムナー
    データ構造 JSONドキュメント
    SQL SQL
    クエリー Lucene
    新しいフィールドは
    テーブル定義の更新が必要
    新しいフィールドは
    テーブル定義の更新が必要
    一部JSON関数に頼ることも可
    運用
    新しいフィールドは自動で追加される
    Kibanaで扱うにはKibanaのインデックス更
    新をすればOK

    View full-size slide

  14. 14
    Atlas のデータ流量
    約 40 億リクエスト
    per Month
    + 約 15 TB per
    Month

    View full-size slide

  15. 15
    Atlas データ基盤改善:
    BigQuery ニアリアルタイム連携
    概要
    Atlas の BigQuery への連携をバッチ処理からストリーミング処理に変更して、
    レイテンシを1 - 2 時間から数秒 - 数分までに短縮する
    数秒 ~ 数分
    Atlas 目的別のデータストア

    View full-size slide

  16. 16
    Atlas データ基盤改善:
    BigQuery ニアリアルタイム連携
    旧来の連携方法
    行動ログテーブル
    行動ログテーブル(重複あり )

    View full-size slide

  17. 17
    Atlas データ基盤改善:
    BigQuery ニアリアルタイム連携
    旧来の連携方法の課題
    ● KCL の不具合によりデプロイ時に Kinesis のシャード読み込みのチェックポイント情報で不整
    合が生じストリームの再読み込み作業が発生する場合がある
    ● BigQuery のテーブル新規カラム追加の実装/作業が煩雑
    ● データパイプラインを流れるデータの整合性の検証が不十分

    View full-size slide

  18. 18
    Atlas における最近の取り組み:
    BigQuery ニアリアルタイム連携
    アーキテクチャ
    JSON
    Protobuf
    A
    Protobuf
    A
    Protobuf
    B
    JSON から
    Protobuf に
    変換して GCP
    に連携する
    処理に失敗した
    レコードを保持する
    Protobuf のデータを
    BigQuery のテーブルの形の
    Protobuf に変換する
    JSON
    Protobuf
    A
    Protobuf
    B
    Enrichment から送られてくるデータ。各種
    フィールドはネストされている。
    Enrichment から送られてくるデータを
    ネストしたままの状態で Protobuf 化したもの
    Protobuf A のネストしたフィールドをフラットにして、
    BigQuery
    のテーブルのフィールドと一致させた Protobuf のデータ
    Storage WRITE API
    で BigQuery に
    ストリーミングインサートする
    Protobuf を JSON に変換し
    て GCS にバックアップ
    データ転送 x スケジュールクエリで
    MERGE 文を実行
    メイン
    データパイプライン
    バックアップ
    データパイプライン

    View full-size slide

  19. 19
    Atlas における最近の取り組み:
    BigQuery ニアリアルタイム連携
    重複排除のしくみ
    Atlas のデータパイプライン上には AWS SQS や AWS Kinesis 等セマンティクスが At Least Once、つまり
    「必ず 1 回以上はデータは送信するけど、重複してデータを送信する可能性がある」という性質を持つサービスを利用するため、重複排
    除が必要
    Storage WRITE API
    で BigQuery に
    ストリーミングインサートする
    Protobuf を JSON に変換し
    て GCS にバックアップ
    データ転送 x スケジュールクエリで
    MERGE 文を実行
    Apache Beam の DeDepulicate トランスフォームの利用
    ● ETL 処理中に特定のキーや値を一定期間保持して重複するものを除外する
    ● Atlas では request_id という一意なキーが存在するため、そのキーを指定
    BigQuery Storage WRITE API (with Exactly Once) の利用
    Exactly Once というセマンティクスで BigQuery に書き込むことができる。つまり、「必ず一
    回だけ書き込む」ことが保証されるため、重複排除されたレコードが
    必ず一回だけ書き込まれる。
    参考: https://cloud.google.com/bigquery/docs/write-api?hl=ja
    それでも重複するケースを取り除くためにスケジュールクエリで
    定期的に重複排除するクエリを実行する

    View full-size slide

  20. 20
    Atlas における最近の取り組み:
    BigQuery ニアリアルタイム連携
    スキーマ駆動開発
    Enrichment 用の
    Protobuf スキーマ
    optional string er_bot_bot_name = 5 [
    (source_enrichement_options) =
    "enriched.bot.bot_name",
    (gen_bq_schema.bigquery) = {
    require: false
    description: "xxxx"
    type_override: "string"
    }
    ]
    BigQuery テーブル用の
    Protobuf スキーマ
    Enrichment 用の Protobuf の
    Java コード
    BigQuery テーブル用の
    Protobuf の Java コード
    A から B に変換するための
    Java コード
    BigQuery スキーマファイル
    (JSON)
    protoc
    protoc
    (*) https://github.com/GoogleCloudPlatform/protoc-gen-bq-schema
    Pluggable Annotaion
    Processing を利用した
    Java コードの自動生成
    テーブルのスキーマを
    変更する PR を自動作成
    PR マージ後
    Dataflow Job のデプロイ
    protoc-gen-bq-schema(*)
    protobuf の
    スキーマファイルから自動生成
    protobuf の定義ファイルに
    カスタムのオプションを設定
    JSON

    View full-size slide

  21. 21
    技術的詳細はアドベントカレンダーにて説明します
    https://hack.nikkei.com/advent_calendar/2022/

    View full-size slide

  22. 22
    GitOps x Atlas
    Technical Support
    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture

    View full-size slide

  23. 23
    Atlas のデータガバナンス
    テーブル定義やスケジュールクエリ、データ転送、アカウント等データ管理に関わる
    大部分を terraform で管理し、変更適用は(ほぼ)すべて Github 経由で行う
    TF
    test_ds/test_table.json
    [
    { “name”: “col1”, “type”: “STRING”, “mode”: “REQUIRED” },

    ]
    variable tables {
    default = }
    “test_ds.test_table” = { description = “テスト表” }
    ….
    }
    }
    テーブルを管理する用の terraform ファイル
    テーブル定義用の JSON ファイル

    View full-size slide

  24. 24
    Atlas Technical Support
    多種多様なデータ基盤への依頼の窓口を統一し、依頼の記載内容の抜け漏れをなくし、
    コミュニケーションコスト/タスク管理のコストの削減、属人化の排除が実現

    View full-size slide

  25. 25
    Atlas Datahub
    Data
    Modeling
    & Design
    Data
    Storage
    & Operations
    Data
    Security
    Data Integration
    & Interoperability
    Document
    & Content
    Management
    Reference
    &
    Master Data
    DWH & BI
    Metadata
    Data
    Governance
    Data
    Quality
    Data
    Achitecture

    View full-size slide

  26. 26
    メタデータ管理/ドキュメンテーションの課題
    ● ドキュメンテーションシステムはあったが、(歴史的経緯によって)
    複数に分かれており、どれを参照するべきか利用者が迷ってしまっていた
    ● テーブル定義を検索する仕組みはあったが、Google Cloud の Data Catalog API を
    叩いて検索する仕組みになっており検索速度に難があった
    ● なぜこのテーブルが作られたのかや、データ連携の仕組み、過去の障害による
    テーブルへの影響等各テーブルの詳細情報を記述する仕組みがない

    View full-size slide

  27. 27
    Atlas Datahub とは
    Atlas の BigQuery のテーブル定義やデータパイプラインについて検索したり、
    各種ドキュメントを参照できる内製ドキュメントシステム
    ● 快適な検索(バックエンド等に対するリクエストなしで検索できる仕組みを用意)
    ● ばらばらだったドキュメンテーションシステムを統一
    ● 各種テーブルに対する自由記述ドキュメントを簡単に記述、参照できる

    View full-size slide

  28. 28
    Atlas Datahub 仕組み
    ● Atlas のテーブル定義等がすべて terraform で管理されているため、それらの情報を加工して
    検索表示しやすいように SSG (Static Site Generator) で HTML を生成
    ● 生成された HTML を表示する nginx コンテナを CloudRun にデプロイして
    サーバレスで利用者にWebサイトを提供
    JSON
    TF
    md
    JSON
    hcl2json
    remark.js HTML
    JSON
    テーブル定義やデータセットなど
    の情報を集約して
    検索可能な情報として整理する
    HTML
    SSG
    Build
    Container
    Image
    HTML
    Deploy
    TF, JSON, MD ファイルが Github リポジトリにコミットされると Github
    Action で自動的にリリースされる

    View full-size slide

  29. 29
    Atlas Datahub 機能 1/2
    Document Pipeline Catalog
    Atlas の利用方法や関連するツールの使い方等
    Atlas にまつわるあらゆるドキュメントを参照できる
    データ転送、スケジュールクエリなどの
    データパイプラインのメタデータが検索ができる

    View full-size slide

  30. 30
    Atlas Datahub 機能 2/2
    Data Catalog テーブル詳細
    BigQuery のテーブル、ビュー、マテリアライズド・ビュー、
    データセット、関数のメタデータを
    検索できる
    マークダウンで記載されたテーブルの任意の情報を
    参照できる。主にテーブルを作成した経緯や
    テーブルで発生したトラブルの歴史等について書かれている

    View full-size slide

  31. 32
    まとめ
    ● データエンジニアリングとは DAMA ホイール図で表される知識領域に対して
    エンジニアリングによって課題解決すること
    ● 日経におけるデータエンジニアリングにおいても上記の領域において
    様々な取り組みをしている
    ● その中で今回は特に以下の取り組みについて説明
    ○ Atlas データ基盤の改善: BigQuery へのニアリアルタイム連携
    ○ GitOps x Atlas Technical Support
    ○ Atlas Datahub

    View full-size slide

  32. 33
    We are hiring
    【世界最大級の経済ニュースサービス】
    450GB/日の大規模データの分析環境を開発・運用し、
    データドリブンを牽引するデータエンジニアを絶賛募集中!
    https://hack.nikkei.com/jobs/data_driven

    View full-size slide