- แพลตฟอร์ม customer engagement แบบโอเพนซอร์สที่ขับเคลื่อนด้วย AI ช่วยให้สามารถใช้ข้อมูลเพื่อออกแบบเส้นทางผู้ใช้แบบเฉพาะบุคคลในวงกว้างได้
- ทางเลือกโอเพนซอร์สแทน Customer.io
- ปัญหาของเครื่องมือเดิม: ค่าใช้จ่ายสูง และมีความยากในการต้องเปลี่ยน communication stack เดิมทั้งหมด
- LimeJourney ถูกออกแบบโดยยึดตามหลักการ 2 ข้อดังนี้:
- การเข้าถึงแบบโอเพนซอร์ส: นักพัฒนาและทีมขนาดเล็กสามารถใช้งานได้ฟรี หากต้องการโซลูชันแบบ managed ก็มีเวอร์ชันคลาวด์ให้ด้วย
- รองรับการเชื่อมต่อกับของเดิม (BYOI): รองรับการเชื่อมต่อกับเครื่องมือเดิม โดยไม่จำเป็นต้องเปลี่ยนทั้งสแตก
ฟีเจอร์หลัก
- ข้อมูลเชิงลึกจาก AI: ใช้โมเดล AI เพื่อช่วยทำความเข้าใจลูกค้า
- Visual Journey Builder: สร้างเส้นทางผู้ใช้ที่ซับซ้อนได้ด้วยอินเทอร์เฟซ drag-and-drop ที่ใช้งานง่าย
- การแบ่งเซกเมนต์แบบไดนามิก: สามารถสร้างเซกเมนต์ตามอีเวนต์หรือคุณสมบัติของผู้ใช้ได้
- ตัวอย่าง: "ผู้ใช้ที่ไม่ได้ซื้อสินค้าในช่วง 30 วันที่ผ่านมา"
- ความสามารถด้านการเชื่อมต่อ: เชื่อมต่อกับเครื่องมือและบริการเดิมได้ และกำลังเพิ่มความสามารถด้านการเชื่อมต่อสำหรับการเก็บข้อมูลอย่างต่อเนื่อง
เทคโนโลยีสแตกของ LimeJourney
- แอปพลิเคชันแบบ full-stack monorepo (เขียนด้วย TypeScript)
- เทคโนโลยีหลัก:
- Turbo: จัดการ monorepo
- Next.js: พัฒนาเว็บแอป
- TailwindCSS: จัดการสไตล์
- Express: พัฒนา API
- TSOA: สร้างเส้นทาง API และเอกสาร OpenAPI
- PostgreSQL: ที่เก็บข้อมูลหลัก
- Redis: ที่เก็บข้อมูลแบบ KV สำหรับจัดการการแมป Journey-Trigger
- ClickHouse: จัดการข้อมูล event/entity ขนาดใหญ่และการแบ่งเซกเมนต์แบบเรียลไทม์
- Temporal: รันเส้นทางที่สร้างจาก Visual Journey Builder
- Kafka: event bus ส่วนกลาง (โฮสต์บน Upstash)
สถาปัตยกรรมแบ็กเอนด์
องค์ประกอบหลัก
- แกนหลักสำหรับ event streaming (บน Kafka)
- ประมวลผลอีเวนต์ของผู้ใช้และระบบได้อย่างรวดเร็ว
- รองรับการสื่อสารแบบอะซิงโครนัสระหว่างโมดูลภายในระบบ
- มอบความสอดคล้องของข้อมูลและความสามารถในการเล่นซ้ำผ่าน event sourcing
- เอนจินการแบ่งเซกเมนต์แบบเรียลไทม์
- ใช้ความสามารถด้านคิวรีประสิทธิภาพสูงของ ClickHouse
- สร้างเซกเมนต์แบบไดนามิกตามคุณสมบัติและพฤติกรรมของผู้ใช้
- คำนวณเซกเมนต์ได้รวดเร็วแม้ในสเกลขนาดใหญ่
- Journey orchestration
- จัดการเส้นทางผู้ใช้ที่ซับซ้อนด้วย Temporal
- รับประกันความน่าเชื่อถือของเวิร์กโฟลว์ และกู้คืนได้เมื่อเกิดความล้มเหลว
- รองรับการหยุดชั่วคราว ดำเนินการต่อ และแก้ไขเส้นทาง
- การจัดการเอนทิตี
- จัดการโปรไฟล์ผู้ใช้และคุณสมบัติต่าง ๆ
- เผยแพร่อีเวนต์เมื่อมีการเปลี่ยนแปลงเอนทิตี
- ให้ข้อมูลผู้ใช้แบบรวมศูนย์ที่ใช้ร่วมกันได้ทั้งแพลตฟอร์ม
การไหลของข้อมูลและการทำงานร่วมกัน
- พฤติกรรมของผู้ใช้ (เช่น การดูหน้าเว็บ การซื้อ) จะสร้างอีเวนต์และส่งไปยัง Kafka
- อีเวนต์จะถูกจัดเก็บใน ClickHouse เพื่อรองรับการวิเคราะห์ข้อมูลขนาดใหญ่
- เอนจินการแบ่งเซกเมนต์จะอัปเดตเซกเมนต์ผู้ใช้แบบเรียลไทม์โดยอิงจากอีเวนต์และข้อมูลล่าสุด
- การเปลี่ยนแปลงของเซกเมนต์หรืออีเวนต์บางประเภทจะทริกเกอร์ journey orchestration
- Temporal จะจัดการเส้นทางและดำเนินงานดังต่อไปนี้:
- เรียกดูข้อมูลผู้ใช้และประวัติอีเวนต์
- ตรวจสอบสถานะการแบ่งเซกเมนต์ปัจจุบัน
- ทริกเกอร์งานภายนอก (เช่น ส่งอีเมล ส่งการแจ้งเตือนแบบพุช)
- เมื่อมีงานสำคัญหรือสถานะเปลี่ยนแปลง จะสร้างอีเวนต์ใหม่และส่งกลับเข้าสู่ระบบอีกครั้ง
2 ความคิดเห็น
kafka เหมาะกับอีเวนต์ปริมาณมากแบบนี้ไหม?
เพราะใช้เนื่องจากต้องการการประมวลผลแบบอะซิงโครนัส แบบนี้ก็น่าจะเหมาะสมไม่ใช่หรือ?