เรื่องราวการสร้างแพลตฟอร์มข้อมูลของ Financial Times
(medium.com)เรื่องราวการทรานส์ฟอร์มสู่ดิจิทัลของหนังสือพิมพ์อายุ 130 ปี
G1. 2008~2014 : มุ่งเน้นการแนะนำข่าวตามบทความที่ผู้อ่านอ่านแล้ว โดยใช้ SQL Server
G2. 2014~2016 : เริ่มนำ ETL มาใช้ เกิดการวิเคราะห์ข้อมูลขนาดใหญ่และคำถามใหม่ ๆ ปริมาณข้อมูลเพิ่มขึ้น
→ SQL Server กลายเป็นคอขวด จึงเปลี่ยนไปใช้ Redshift + ETL Framework
→ ทำระบบอัตโนมัติสำหรับตั้งเวลาให้รัน SQL วันละหลายครั้ง
→ รองรับโมเดลข้อมูลที่ซับซ้อนด้วย SQL + Python
G3. 2016~2018 : จุดเริ่มต้นของ Big Data@FT
→ ตั้งเป้าลด data latency ให้ต่ำที่สุด การนำเข้าข้อมูลทำได้วันละครั้ง (24h) จำเป็นต้องลดเวลานี้เพื่อให้ตอบสนองต่อเทรนด์ได้เร็วขึ้น
→ พัฒนาไลบรารีติดตามของตนเองที่สามารถส่ง interaction ของผู้อ่านได้ทั้งหมด
→ ทุกอีเวนต์ไหลผ่าน AWS SNS → SQS → Kinesis → Parquet → Redshift
→ สร้างเซิร์ฟเวอร์ NodeJS สำหรับประมวลผล raw event โดยผสานข้อมูลทั้งภายในและภายนอกเพื่อ enrich อีเวนต์ก่อนส่งขึ้น Kinesis
→ ใช้ Kinesis Firehose แปลงอีเวนต์เป็น CSV แล้วเก็บไว้ใน S3
→ มีสถานการณ์ที่เกิดอีเวนต์ซ้ำ จึงสร้าง Redshift cluster แยกต่างหากเพื่อจัดการเรื่องนี้ แต่กลับทำให้ latency ช้าลง
G4. 2019 : สร้างแพลตฟอร์มใหม่โดยเน้นการเพิ่มคุณค่าทางธุรกิจ
→ ต้องการเปลี่ยนแพลตฟอร์มข้อมูลให้เป็น PaaS
→ นำ Kubernetes มาใช้ ย้ายจาก ECS ไป EKS
→ นำ Airflow มาใช้
→ AWS SNS → SQS → Kinesis → Parquet → Airflow → Redshift
G5. 2020 : ถึงยุคของข้อมูลแบบเรียลไทม์แล้ว
→ G4 ดีขึ้นมาก แต่ก็ยังทำแบบเรียลไทม์ไม่ได้
→ เปลี่ยนจากการตั้งค่าที่ซับซ้อนของ SNS, SQS, Kinesis ไปใช้ Kafka (Amazon MSK)
→ แพลตฟอร์ม stream processing คือ Apache Spark
→ kafka → spark → parquet(delta lake, redshift) ↔ airflow
→ นำ Apache Avro มาใช้เพื่อการตรวจสอบข้อมูล : Data Contract
→ ใช้ Presto เพื่อ query Redshift, S3, Kafka เป็นต้น
แผนต่อจากนี้
→ ปัจจุบันข้อมูลเข้ามาจาก 3 คอมโพเนนต์คือ Airflow, Spark, Kafka และมีแผนจะเปลี่ยนเป็นแบบอิง CDC(Change Data Capture)
→ ปรับให้ทุกคนเข้าถึงข้อมูลแบบเรียลไทม์ได้ พร้อมยกระดับ Data UI ให้ทำ stream processing แบบ drag & drop ได้
4 ความคิดเห็น
โอ้ ชอบโพสต์บล็อกแบบนี้มากเลย มีทั้งประเด็นที่ต้องขบคิดของสถาปัตยกรรมแต่ละยุคอยู่ครบเลยนะ แม้แต่สำนักข่าวก็ยังออกแบบแพลตฟอร์มข้อมูลในระดับขนาดนี้กันด้วย
ว่าแต่เขาเชื่อมต่อกันแบบ SQS -> ลูป Nodejs -> Kinesis แบบนี้สินะครับ เลยสงสัยว่าใช้แค่ Kinesis ตัวเดียวให้จบไปเลยไม่ได้เหรอครับ ผมยังไม่ค่อยเชี่ยวชาญ AWS เท่าไหร่เลย ฮือ
ขอบคุณสำหรับการสรุปบทความดี ๆ ครับ!
หากต้องการดูคำอธิบายของคำศัพท์ที่กล่าวถึงที่นี่
โปรดอ้างอิงบทความด้านบนและวิดีโอ GeekNews YouTube เรื่อง "ทำความเข้าใจโครงสร้างพื้นฐานข้อมูลสมัยใหม่"
และขอให้ดูเรื่องราวของ The New York Times ซึ่งประสบความสำเร็จในการทำ Digital Transformation ในลักษณะคล้ายกันประกอบด้วย
The New York Times ที่ไม่ล้มเหลว - NYT ประสบความสำเร็จในการเปลี่ยนผ่านสู่ดิจิทัลได้อย่างไร
https://youtu.be/K2qiAFTzDLU
The New York Times (ที่ไม่ล้มเหลว) https://th.news.hada.io/topic?id=3172