บทความด้าน Big Data Architecture

ผมได้เขียนบทความ Big Data Architecture มาทั้งหมด 6 ตอนเพื่อให้ได้อ่านกัน จะได้เข้าใจได้ว่า การออกแบบสถาปัตยกรรม Big Data ควรต้องใช้เทคโนโลยีอย่างไรบ้าง โดยผมมองระบบ Big Data เหมือนระบบไอทีทั้วไปที่จะต้องมี

  • Input ซึ่งในที่นี้คือ Big Data ที่มีคุณลักษณะ 4V คือ Volume, Velocity, Variety และ Veracity
  • Process/System ซึ่งในที่นี้คือ Big Data Pipeline หรือ Big Data Architecture
  • Output ซึ่งในที่นี้ก็คือผลลัพธ์ที่ได้จากการวิเคราะห์ Big Data ซึ่งอาจเป็นแบบ Business Intelligence หรือ Data Science

ทั้งนี้ Architecture อาจจะเปลี่ยนแปลงไปขึ้นอยู่กับคุณลักษณะของข้อมูลและผลลัพธ์ที่ต้องการ บทความที่ผมเขียนต้องการสรุปให้ทุกคนเข้าใจและตอบคำถามต่างๆได้อาทิเช่น

  • อะไรคือความแตกต่างระหว่าง Data Warehouse และ Data Lake
  • การออกแบบ Big Data Architecture จำเป็นต้องการ Hadoop หรือไม่
  • การออกแบบสถาปัตยกรรมโดยใช้ Public Cloud Services ต้องใช้บริการอะไรบ้าง
  • สถาปัตยกรรมในการวิเคราะห์ข้อมูลแบบ Streaming เป็นอย่างไร

ซึ่งบทความของผมมีทั้งหมด 6 ตอนโดยมีหัวข้อต่างๆดังนี้

ส่วนผู้ที่สนใจอยากศึกษาเพิ่มเติมทสง IMC Institute ก็มีบันทึกวิดีโอรายการย้อนหลังรายตอนที่เกี่ยวข้องกับ Big Data architecture โดยเผยแพร่ไว้ที่ YouTube channel ของ IMC Institiute

ธนชาติ นุ่มนนท์

IMC Institute

Big Data Architecture #6: สถาปัตยกรรม Cloud Data platform สำหรับประมวลผลข้อมูลทั้งแบบ Batch และ Streaming

ในตอนที่แล้วผมได้เขียนบทความให้เห็นว่าหากเราต้องการทำการประมวลผลข้อมูลแบบ Streaming เราอาจต้องปรับสถาปัตยกรรม Big data ให้เป็นแบบ Lambda หรือ Kappa และถ้าจะทำบนระบบ On-premise เราอาจต้องใช้เทคโนโลยีอย่าง Apache Kafka ที่มีทั้งการทำ Ingestion, Fast storage และ Real-time processing

รูปที่ 1 Big Data Pipeline บน Cloud Platform

และเมื่อพิจารณาถึงการทำสถาปัตยกรรมบน Cloud เราอาจจะเห็นได้ว่าขั้นตอน Big Data Pipeline ที่เคยระบุว่ามี 5 อย่างคือ Ingestion, Storage, Processing, Analytics และ Visualisation เมื่อต้องการออกแบบให้ประมวลผลทั้งแบบ Bacth และ Streaming จะมีความซับซ้อนขึ้น โดยอาจต้องมี Storage, Processing และ Analytics ที่ใช้กับข้อมูลทั้งสองแบบคือ Batch และ Streaming รวมถึงอาจต้องมี Pipeline ที่ใช้ในการเก็บข้อมูลสำหรับ Serving layer โดยจะมีสถาปัตยกรรมดังรูปที่ 1 ที่มีองค์ประกอบต่างๆดังนี้

  • Ingestion ที่จะนำข้อมูลเข้ามาทั้งแบบ Batch และ Streaming
  • Storage ในการเก็บข้อมูลที่อาจแบ่งเป็น Fast storage สำหรับข้อมูลแบบ Streaming และ Data Lake สำหรับข้อมูลแบบ Batch
  • Processing/Analytics ในการประมวลและวิเคราะห์ข้อมูลที่อาจแบ่งเป็น Batch Processing/Analytics และ Real-time Processing/Analytics
  • Serving layer ที่อาจเป็น Data Warehouse หรือ No SQL ที่จะทำหน้าที่เก็บผลลัพธ์ของการประมวลผลข้อมูลทั้งสองแบบ
  • Visualisation ส่วนที่เป็นการแสดงผลที่อาจจะดึงมาจาก Serving layer

จากสถาปัตยกรรมข้างต้นนี้ หากไปเปรียบเทียบกับสถาปัตยกรรม Data Platform เดิมที่อยู่บน Cloud ซึ่งผมเคยได้สรุปไว้ในบทความ Big Data Architecture #4: สถาปัตยกรรม Data platform บน Public cloud จะพบว่ามีบริการที่อาจต้องนำเพิ่มขึ้นมาดังนี้

  • Fast storage อย่าง อย่าง Azure Event Hub, Google Cloud Pub/Sub หรือ AWS Kinesis เพื่อทำหน้าที่เป็น Storage หลักในการเก็บข้อมูล Streaming
  • Real-time processing อย่าง Azure Stream Analytics, Google Cloud DataFlow หรือ AWS Kinesis Stream Analytics

โดย Cloud Data Platgorm สำหรับผู้ให้บริการ Cloud สามรายหลักคือ Microsoft Azure, Google Cloud Platform และ AWS จะได้ได้ Block diagram ดังรูปที่ 2 – 4

รูปที่ 2 Big data architecture แบบ Data Platform สำหรับข้อมูลแบบ Batch & Streaming บน Azure
รูปที่ 3 Big data architecture แบบ Data Platform สำหรับข้อมูลแบบ Batch & Streaming บน AWS (Icon version ใหม่)
รูปที่ 4 Big data architecture แบบ Data Platform สำหรับข้อมูลแบบ Batch & Streaming บน GCP

ธนชาติ นุ่มนนท์

IMC Institute

Big Data Architecture #5: สถาปัตยกรรม Data platform สำหรับประมวลผลข้อมูลแบบ Streaming

สถาปัตยกรรม Data platform ที่ผมได้อธิบายในตอนที่ผ่านๆมาออกมาเน้นที่การประมวลผลแบบ Batch แม้ข้อมูลที่นำเข้ามาจะสองประเภทคือทั้งแบบ Batch และ Streaming แต่ข้อมูลทั้งสองประเภทจะถูกนำมาเก็บใน Storage ชุดเดียวกันที่ทำหน้าที่เป็น Data Lake แล้วนำไปประมวลผลและวิเคราะห์ข้อมูลในลักษณะที่เป็นแบบ Batch เท่านั้น

ในกรณีที่เราต้องการจะประมวลผลข้อมูล streaming แบบ real-time หรือ Near real time ได้นั้น รูปแบบสถาปัตยกรรมที่ผ่านมาอาจไม่สามารถตอบโจทย์ได้ ดังนั้นจึงจำเป็นจะต้องออกแบบสถาปัตยกรรมในรูปแบบอื่น ซึ่งโดยทั่วไปจะมีอยู่สองรูปแบบคือ Lambda architecture และ Kappa architecture

  • Lambda architecture จะเป็นสถาปัตยกรรมดังรูปที่ 1 ที่แบ่งออกเป็น 3 Layer คือ Batch layer ที่จะเป็นการประมวลผลข้อมูลแบบ Batch ที่อยู่ใน Data Lake โดยมี Speed layer ที่จะเป็นการประมวลผลข้อมูล Streaming แบบ Realtime และ สุดท้ายจะเอาผลลัพธ์ของการประมวลผลทั้งสองมารวบรวมไว้ที่ Serving layer เพื่อนำมาแสดงผลต่อไป
รูปที่ 1 Lambda architecture จาก https://luminousmen.com/post/modern-big-data-architectures-lambda-kappa/
  • Kappa architecture จะเป็นสถาปัตยกรรมดังรูปที่ 2 ที่มีเพียง 2 Layer Ffpจะมองข้อมูลทุกประเภทเป็นแบบ Streaming แม้แต่ข้อมูลในอดีตที่เป็นแบบ Batch ก็จะถูกป้อนเข้ามาแบบ Streaming แล้วประมวลผลไว้ที่ Speed layer จากนั้นจึงเก็บผลลัพธ์ไว้ที่ Serving layer จุดเด่นของการใช้สถาปัตยกรรมแบบนี้คือเราสามารถเขียนโปรแกรมทั้งหมดได้ใน Speed layer ไม่จำเป็นต้องแยกโปรแกรมออกมาสองชุดแบบสถาปัตยกรรม Lambda
รูปที่ 2 Kappa architecture จาก https://luminousmen.com/post/modern-big-data-architectures-lambda-kappa/

ทั้งนี้เทคโนโลยีที่จะนำมาใช้ในกy[สถาปัตยกรรมทั้งสองแบบนี้ในระบบ On-premise โดยทั่วไปมักจะเป็นเทคโนโลยี Hadoop และ Kafka ดังแสดงในรูปที่ 3

รูปที่ 3 Data Platform สำหรับสถาปัตยกรรมในการประมวลผลข้อมูลแบบ Streaming

โดยเราสามารถที่จะเลือกใช้เทคโนโลยีต่างๆในแต่ละ Layer ได้ดังนี้

  • Batch Layer: ข้อมูล Streaming ที่เข้ามาอาจดึงเข้ามาด้วย KafKa แล้วเก็บไว้ใน Data Lake อย่าง HDFS และประมวลผลด้วย Hive, Spark
  • Speed Layer: ข้อมูล Streaming ที่เข้ามาอาจดึงเข้ามาด้วย KafKa แล้วเก็บไว้ใน Fast Storage อย่าง KafKa storage และประมวลผลแบบ Realtime ด้วย Spark Streaming, KafKa Streaming, KSQL
  • Serving Layer: ผลลัพธ์ของการประมวลในแต่ละ Layer อาจนำมาเก็บใน Data Warehouse ที่อาจเป็น NoSQL หรือ RDBMS อย่าง Cassandra, HBase, Oracle, MySQl

ทั้งนี้ในกรณีของ Lambda architecture ก็จะเน้นใช้เทคโนโลยีทั้งหมดในรูป แต่กรณีของ Kappa architecture จะไม่บล็อกของการประมวลผลแบบ Batch แต่จะป้อนข้อมูลดิบจาก Data Lake ไปประมวลผลผ่าน Fast storage และ Realtime processong/analytics

ธนชาติ นุ่มนนท์

IMC institute