Screenshot 2019-09-14 12.11.57

ผมมักจะเจอคำถามบ่อยๆว่าจะทำโปรเจ็ค Big Data  ควรจะใช้เทคโนโลยีอะไรดี เลือกซื้อจากรายไหนดี จริงๆแล้วการจะตอบคำถามนี้คงจะต้องพิจารณาจากหลายปัจจัยตั้งแต่คำถามว่า

  1. ต้องการนำมาใช้ในโครงการใด Use Caseใด ซึ่งคำตอบนี้จะมีผลต่อสถาปัตยกรรมที่ต้องมาพิจารณาในการออกแบบ ตัวอย่างเช่น
    • ข้อมูลมี Volume มากเพียงใด เพราะหากมีขนาดมากกว่า 100 TB ก็อาจเป็นปัญหา
    • ข้อมูลมี Velocity ที่จะเข้าเท่าไร เพราะถ้ามีขนาดต่ำกว่า 100 K ต่อวินาทีก็อาจรองรับไหว
    • ข้อมูลมี Variety เพียงใด มีทั้ง Structure หรือมี semi-structured และ Unstructured ด้วย
    • ต้องการประมวลผลแบบใด Batch หรือ Realtime
  2. เราต้องการจะออกติดตั้ง Big Data Platform ที่ใด
    • Cloud หรือ  Data Center
  3. เราจะเลือกสถาปัตยกรรมแบบใด
    • ติดตั้งเอง หรือ PaaS  ที่เป็น Big Data as a Service
    • ค่าจ่ายแบบ Pay as you go หรือ Fix
    • ระบบแบบ Couple หรือ Decouple
  4. เราได้สื่อสารแผนงานของเราชัดเจนเพียงใด
  5. เราได้วิเคราะห์อุปสรรคต่างๆได้ดีเพียงพอแค่ไหน

Screenshot 2019-09-14 13.02.40รูปที่ 1 องค์ประกอบของสถาปัตยกรรมระบบ Big Data

สถาปัตยกรรมระบบ Big Data ส่วนใหญ่ก็จะประกอบไปด้วยองค์ประกอบ 4 อย่างก็คือ

  • Ingestion คือส่วนที่นำข้อมูลเข้าที่อาจเป็นแบบ Batch หรือ Streaming
  • Storage คือส่วนที่เก็บข้อมูลทั้งนี้คืออยู่กับขนาดและชนิดของข้อมูลที่ต้องการเก็บ
  • Processing คือส่วนในการประมวลผลต่างๆทั้งการทำ Data Cleanising, การทำ Modelling  หรือ การทำ Data Science ซึ่งการประมวลผลมีทั้งแบบ Batch หรือRealtime
  • Visualisation คือส่วนในการแสดงผลข้อมูล

ในปัจจุบันก็มีเทคโนโลยีด้าน Big Data หลากหลายที่สามารถนำมาใช้ได้ (ดังแสดงในรูปที่ 2) แต่ละเทคโนโลยีมีความเหมาะสมที่แตกต่างกันทั้งนี้ขึ้นกับ Use Case ของโครงการที่ Big Data จะนำไปใช้ โดยต้องวิเคราะห์ถึงขนาดของข้อมูล ความถี่ของข้อมูล ความต้องการประมวลผล ความปลอดภัยของข้อมูล และงบประมาณ

70461936_561279104613554_3942196441996328960_nรูปที่ 2 ตัวอย่างเทคโนโลยีด้าน Big Data

ทั้งนี้การเลือกใช้เทคโนโลยี Big Data มีหลักการที่สำคัญสองประเด็น

  • ควรจะสร้างระบบที่แยก (Decoupled) กันระหว่างระบบ Storage และ Processing ซึ่งอาจต้องใช้เครื่อง Server Cluster ที่ต่างกัน
  • การเลือกใช้เทคโนโลยี Big Data ถ้าต้องติดตั้งใน Data Center เองก็ไม่ควรเกิน 4 เทคโนโลยี แต่ถ้าเป็นบริการบน Cloud ก็ไม่ควรเกิน 7 เทคโนโลยีทั้งนี้ก็เพื่อง่ายต่อการบำรุงรักษา และลดความซับซ้อนของระบบ

เพื่อให้เห็นวิธีการเลือกสถาปัตยกรรม ผมขอยกตัวอย่างกรณีศึกษาของลูกค้ารายหนึ่งที่ทางทีมงานของ IMC Institute เข้าไปดำเนินการให้ โดยมีวิธีคิดดังนี้

Business Use Case มีข้อกำหนดต่างๆดังนี้

  • ลูกค้าต้องการรวบรวมข้อมูลจากแผนกและหน่วยงานต่างๆที่มีมาตั้งแต่ปี 2553  ที่ปัจจุบันเป็นแบบ Siloให้อยู่ในรูปแบบของ Data Lake เพื่อใช้ในการวิเคราะห์ข้อมูลทั้งแบบ Descriptive และ Predictive
  • Volume: ข้อมูลมีขนาดประมาณ 1 TB และมีจำนวนประมาณ 1,000 ล้านเรคอร์ด
  • Velocity: จะมีข้อมูลที่นำเข้าใหม่ในเพียงเดือนละครั้งจำนวนประมาณ 5 ล้านเรคอร์ด
  • Variety: ข้อมูลมีหลากหลายรูปแบบทั้งที่เป็น Database, CSV, SPSS หรือ ข้อความ
  • Processing: ข้อกำหนดในการประมวลผลไม่ได้เป็นแบบ Realtime แต่ขอให้สามารถแสดงผลข้อมูลหลายร้อยล้านเรคอร์ดได้ภายในไม่เกินหนึ่งนาที
  • งบประมาณ:  ลูกค้ามีงบประมาณจำกัดต่ำกว่า 8 ล้านบาท

Technology:  ทีมงานได้ตัดสินใจเลือกตามเงื่อนไขต่างๆดังนี้

  • Infrastructure:  เมื่อเปรียบเทียบระหว่างการทำระบบ On-Premise หรือ Private Cloud บน Data Center กับการใช้  Big Data as a Service ของ Public Cloud รายต่างๆแล้ว ทีมงานเลือกใช้ Google Cloud Platform (GCP) ด้วยเหตุผลเรื่องค่าใช้จ่ายที่ถูกกว่า ความคุ้นเคยของทีมงาน ความง่ายต่อการใช้งาน และสามารถเริ่มทำได้ทันทีเพราะค่าใช้จ่ายเริ่มต้นต่ำ
  • Ingestion: เนื่องจากการนำเข้าข้อมูลเป็นแบบ Batch ข้อมูลมีขนาดเล็กและไม่มีความซับซ้อนมากนัก ทีมงานก็เลยเลือกที่จะใช้วิธี Upload ผ่าน Command Line  ของ GCP
  • Storage:  ทีมงานเลือกใช้ Google Cloud Storage แบบ Multi-Regional ในการเก็บข้อมูลที่หลากหลาย เนื่องจากราคาถูกและสามารถ Scale ได้ง่าย โดยจะแบ่งข้อมูลออกเป็นสามโซนคือ Raw Zone, Trusted Zone และ Refined Zone นอกจากนี้ยังใช้ Google BigQuery ในการเก็บข้อมูล Structure ที่ผ่านการ Cleansing จาก Raw Zone มาแล้วเพื่อความรวดเร็วในการประมวลผล
  • Processing: ทีมงานเลือกใช้ Google DataProc ที่เป็น Hadoop as a Service มาใช้ในการประมวลผล โดยจะสร้าง Cluster เมื่อมีการประมวลผล และค่าใช้จ่ายจะเป็นแบบ Pay as you go ทำให้ประหยัดค่าใช้จ่าย โดยใช้เทคโนโลยีต่างๆในการประมวลผลดังนี้
    • Data Cleansing: การประมวลผลข้อมูลใน Raw Zone เลือกใช้ Spark จาก DataProc โดยเลือกเขียนโปรแกรมเป็นภาษา Python
    • Data Transformation: การแปลงข้อมูลหรือการสร้าง Table ใหม่ ทีมงานเลือกใช้ Hive และ Spark จาก DataProc
    • Machine Learning: ในการทำ Predictive Analytics ทีมงานเลือกใช้ Spark MLlib
    • Query: สำหรับการ Query ข้อมูลขนาดหลายร้อยเรคอร์ดและเชื่อมโยงกับ Visualisation Tool ทีมงานเลือกใช้ Google BigQuery ที่มีความรวดเร็วในการประมวลผล
  • Visualisation: ทีมงานเลือกใช้ Power BI ด้วยเหตุผลเรื่องงบประมาณและความสวยงามของกราฟที่ได้

จากตัวอย่างที่ยกมาจะพบว่าการออกแบบ Big Data Archicture และการเลือกใช้เทคโนโลยี ความสำคัญอยู่ที่ต้องเริ่มต้นจาก Business Use Case ไม่ใช่เริ่มจากเทคโนโลยี

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

IMC Institute

เอกสารอ้างอิง

1.) AWS Big Data Demystified #1.2 | Big Data architecture lessons learned

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s