ข้ามไปที่เนื้อหา
ผลงานทั้งหมด

Buzzebees, Data platform

Customer Data Platform

รับข้อมูล เก็บประวัติ รวมตัวตน และเผยแพร่ ให้ลูกค้าหนึ่งคนมีโปรไฟล์เดียว พร้อมใช้ทั้งงานวิเคราะห์และ Journey

เส้นทางของระบบ

  1. 1ไฟล์ ฐานข้อมูล feed
  2. 2S3 landing
  3. 3Typed history
  4. 4คุณภาพข้อมูล
  5. 5Identity matching
  6. 6โปรไฟล์ใน ClickHouse
  7. 7Audience ของ Journey

โจทย์

ข้อมูลลูกค้า การซื้อ และแต้ม มาจากไฟล์ ฐานข้อมูลระบบงาน snapshot ย้อนหลัง และ feed รายวัน คนคนเดียวปรากฏหลายครั้งด้วยคีย์ต่างกัน จนไม่มีทีมไหนเชื่อตัวเลขจำนวนลูกค้าได้

บทบาทของผม

ออกแบบและสร้างทั้งระบบตั้งแต่ต้นจนจบ ทั้ง infrastructure as code, worker รับข้อมูล, typed history, กฎคุณภาพข้อมูล, identity matching, การเผยแพร่เข้า ClickHouse และ control API ที่ Journey Builder ใช้

วิธีการทำงาน

ทุกแหล่งข้อมูลลง S3 ก่อน แล้วย้ายเข้า typed history ใน PostgreSQL ที่แยก schema เป็น raw, quality, identity และ control การ matching แยกเป็น service ของตัวเองและเขียนผ่าน outbox ทำให้การเผยแพร่เข้า ClickHouse เล่นซ้ำได้ ข้อมูลย้อนหลังผ่านเส้นทาง standardization แยกพร้อมใบยืนยัน เพื่อไม่ให้แหล่งที่เพิ่ง restore ถูกนับว่าเสร็จแล้ว

ผลลัพธ์

มุมมองโปรไฟล์ การซื้อ และแต้ม ที่งานวิเคราะห์และระบบการตลาดอัตโนมัติอ่านได้โดยตรง พร้อม audience snapshot ที่แก้ไขไม่ได้ ทำให้ Journey ทำงานกับรายชื่อที่อนุมัติไว้เป๊ะๆ

สิ่งที่ได้เรียนรู้

  • Identity เป็นการตัดสินใจเชิงโปรดักต์ก่อนจะเป็นอัลกอริทึม ต้องเขียนกฎ matching ร่วมกับฝั่งธุรกิจก่อน
  • ทำให้ทุกการเผยแพร่เล่นซ้ำได้ เพราะต้องสร้างตารางโปรไฟล์ใหม่เร็วกว่าที่คิด
  • ติดตามสถานะเสร็จอย่างชัดเจน "restore แล้ว" กับ "เผยแพร่แล้ว" เป็นคนละสถานะกัน

เครื่องมือ

  • AWS CDK
  • S3
  • AWS Glue
  • Fargate
  • Step Functions
  • PostgreSQL
  • ClickHouse
  • Elasticsearch
  • Kafka
  • Temporal
ถัดไปBrand Health Intelligence