Slide 1

Slide 1 text

merpay DataPlatform @syucream Microservices ♥ Data Pipeline

Slide 2

Slide 2 text

2 whoami Copyright © Merpay, Inc. All Rights Reserved. @syucream DataPlatform team at Merpay

Slide 3

Slide 3 text

3 マイクロサービスとデータのユースケース 01 Agenda 02 ● アプリケーションとデータの分離 ● メルペイにおけるデータのユースケース merpay DataPipeline 概要 ● batch と steam のデータ転送のサポート ● データの転送先 Copyright © Merpay, Inc. All Rights Reserved. 03 パイプラインのプロトタイプ実装 ● GCP を利用したパイプラインの構成 ● 課題など

Slide 4

Slide 4 text

マイクロサービスと データのユースケース

Slide 5

Slide 5 text

Microservices in merpay ServiceA ServiceB ServiceC App App App

Slide 6

Slide 6 text

Microservices in merpay ServiceA ServiceB ServiceC App App App 1. 分離されたアプリケーション 2. 分離された DB (無い場合もある) 3. 独立したマイクロサービスチーム

Slide 7

Slide 7 text

Data sources vs usecases D-service B-service A-service C-service KPI Analytics Fraud Detection Credit Scoring Funnel Analytics ML system Customer Support

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

merpay DataPipeline 概要

Slide 10

Slide 10 text

microservice -A microservice -B microservice -C Data Pipeline datauser -A datauser-B BigQuery BigQuery Event Log Event Log Event Log DB DB DB batch transfer stream transfer batch transfer batch transfer stream transfer stream transfer BqLoad Tool Cloud Storage ToGCS Tool? Cloud Dataflow BqLoad Tool Publish message Subscribe message merpay DataPipeline

Slide 11

Slide 11 text

microservice -A microservice -B microservice -C Data Pipeline datauser -A datauser-B BigQuery BigQuery Event Log Event Log Event Log DB DB DB batch transfer stream transfer batch transfer batch transfer stream transfer stream transfer BqLoad Tool Cloud Storage ToGCS Tool? Cloud Dataflow BqLoad Tool Publish message Subscribe message merpay DataPipeline 1. マイクロサービスは DataPipeline へ配送 2. データ利用者は DataPipeline から受け取り

Slide 12

Slide 12 text

batch vs stream? ● どちらもサポート! ○ データソースや用途に応じて使い分ける ○ 現状は DB は batch で、イベントログは stream で配信予定 ● 将来的には stream のみなどに舵切りするのもアリ?

Slide 13

Slide 13 text

destinations? ● Data Lake: GCS ○ Pipeline に流れてきたデータをひたすら蓄積 ● Data Warehouse: BigQuery ○ 主に分析用に BigQuery に書き出す ● Message Queue: Cloud Pub/Sub ○ ニアリアルタイム処理のために後続キューに転送 ● Any others…? ○ 必要であれば他になにか考えるかも

Slide 14

Slide 14 text

パイプラインのプロトタイプ実装

Slide 15

Slide 15 text

batch microservice-B merpay-dataplatform Data User - A microservice-A Cloud Pub/Sub BigQuery Cloud Functions data mart change notification Pub/Sub trigger (BqLoad path) BqLoad Cloud SQL data lake Cloud Storage Cloud Spanner microservice-C Cloud Datastore Data Pipeline

Slide 16

Slide 16 text

stream Microservice platform team Kubernetes cluster A-service B-service merpay-dataplatform Logging Cloud Pub/Sub Cloud Dataflow BigQuery stdout via logging library Sink to Pub/Sub Subscribe Data User - A BigQuery DWH Streaming Insert

Slide 17

Slide 17 text

Schema Registory ● ProtocolBuffer でログのスキーマを予め定義 ○ マイクロサービスの IDL として社内利用実績多し! ○ protoc plugin で各言語ライブラリやドキュメントが得られる ● GitHub で .proto ファイルを管理

Slide 18

Slide 18 text

Remaining issues ● batch ○ スケーラビリティ ● stream ○ Stackdriver Logging のコストと他のログが混ざることの複雑さ++ ● Schema Registory ○ 誰がスキーマを定義していくのか問題 ○ スキーマ事前定義するのが面倒くさいよ問題 ● 他の性質の課題 ○ スマホアプリのイベントログはどうしようか?など 個別のコンポーネントはまだまだ検討が必要

Slide 19

Slide 19 text

まとめ

Slide 20

Slide 20 text

Summary ● merpay DataPlatform Team の設立から現在の経緯 ○ マイクロサービスの世界で発生した課題 ○ merpay DataPipeline ○ プロトタイプ実装

Slide 21

Slide 21 text

We are hiring!!! merpay DataPlatform Team ではプロダクト開発に寄り添えるデータ収集基盤を構築して います。 全体構成や組織としての課題、 GCP ベースのコンポーネントの実装、セキュリティなど など挑戦的な取り組みが多々あります! 少しでも興味を持って頂けたなら、merpay 採用ページもしくは Twitter で @syu_cream まで!

Slide 22

Slide 22 text

Q&A