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