Why-Your-CEO-Should-Be-Awake-Every-Night-Because-Of-Big-Data
บ่อยครั้งจะพบว่า developer และ architect หลายๆ คน
บอกว่า ฉันทำ Big Data Project อยู่นะ
ซึ่งฟังดูแล้วเรารู้สึกว่าเป็น project ที่แจ่ม สุดยอดมากๆ

แต่เมื่อลงไปสัมผัสกับ project เหล่านั้นกลับพบว่า มันไม่ได้เป็นสิ่งที่แจ่มดังที่ฟังมา !!

ดังนั้น คำถามแรก ที่ต้องถามก่อนคือ
คุณเชื่อว่า project ที่ทำอยู่คือ Big Data จริงหรือไม่ ?

ขั้นตอนการทำงานปกติ

สิ่งที่ developer หรือคนทาง IT มักจะถามเกี่ยวกับ Big Data ก็คือ
เราจะทำการติดตั้ง …. อย่างไร ?
แล้วก็ลงมือติดตั้ง ซื้อ hardware และอื่นๆ อีกมากมาย

จากนั้นจึงเริ่มพูดคุยกับทาง business เพื่อทำความเข้าใจกับปัญหา
ว่าต้องการอะไร ไปทำไม ?
แล้วคุณจะเข้าใจว่าข้อมูลมีขั้นตอนเป็นมาอย่างไร
เมื่อมองไปที่ปริมาณของข้อมูลแล้ว
มักจะพบอีกว่าปริมาณข้อมูลมันไม่ได้ Big ดั่งที่คาดหวัง
สุดท้ายการ implement ระบบจริงๆ ก็ไปใช้ technology อื่น
ที่ไม่ใช่สิ่งที่ทางทีม IT เตรียมไว้ ….. เอะมันยังกันนะ …
แบบนี้ทางทีม IT ก็เสียทั้งเวลา และ ค่าใช้จ่ายไปแล้วสิ ?

ดังนั้น ถ้ากลัวเสียหน้า ก็ต้องใช้สิ่งที่เตรียมไว้แล้ว
มันคือ การขี่ช้างจับตั๊กแตนมากๆ
แต่ไม่ใช้ก็กะไรอยู่…. ผลที่ตามมามันคืออะไรกันล่ะ ?

เราควรที่จะใช้สิ่งที่เหมาะสมมาพัฒนาดีกว่า ว่าไหมครับ ?

แก้ไขปัญหาจากการทำงานนี้อย่างไรล่ะ ?

1. ให้เริ่มต้นต้นจากถามก่อนว่าด้วยคำว่า Why ? ก่อนที่จะถามหา How ?

แล้วจึงเริ่มทำการ implement ระบบขึ้นมา

ผมเชื่อว่าในระบบของบริษัทที่เรียกตัวเองว่า Enterprise
มักจะเรียกต่างๆ เป็น Big Data Project ทั้งหมด ..

แต่สิ่งสำคัญมันอยู่ตรงที่ว่า คุณเข้าใจปัญหาของระบบงานนั้นๆ แล้วหรือยัง ?
ซึ่งในตอนเริ่มต้นนั้น ปัญหา มันไม่ใช่ technical ต่างๆ นะครับ
แต่ให้คุณสนใจไปที่คนทางฝั่ง business เพื่อให้เราเข้าใจปัญหา
เพื่อที่จะช่วยเหลือ business ได้อย่างถูกต้องและเหมาะสม
ดังนั้น เรื่องคำถามที่คุณถามไปทาง business จะสำคัญมากๆ
เนื่องจากมันจะนำทางคุณไปสู่รูปแบบของ input และ ขั้นตอนการประมวลผลข้อมูลต่อไป

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

2. ได้เวลาพูดถึง How แล้วนะ

แต่ไม่ใช่การเลือกเครื่องมือ
แต่ไม่ใช่การติดตั้งเครื่องมือนะ

ก่อนอื่นเราควรทำการวิเคราะห์ต่อก่อนด้วยคำถามเหล่านี้

  • โครงสร้างข้อมูลเป็นอย่างไร
  • ขนาดข้อมูลจริงๆ ใหญ่เท่าไร
  • อัตราการเติบโตของข้อมูลเป็นอย่างไร ต่อนาที ต่อชั่วโมง ต่อวัน

ในแต่ละคำถามนั้นช่วยทำให้คุณเข้าใจระบบงานมากขึ้นกว่าเดิม
และจะทำให้เรารู้ด้วยว่า project ที่ทำมันคือ Big Data จริงๆ หรือไม่

ดังนั้น จะทำให้รู้ว่าเครื่องมือ หรือ technology ที่นำมาใช้งานที่เมาะสมคืออะไร ?
เช่น คุณจำเป็นต้องใช้ Hadoop หรือไม่ ? เพื่อใช้เก็บ และ ประมวลผลข้อมูล

สิ่งที่คุณมักพบเจอ คือ เราสามารถใช้เครื่องมือนั้นได้นะ แต่ว่าเราไม่จำเป็นต้องใช้มัน !!!

เนื่องจากคุณสามารถหาอะไรด็ตามที่เล็กกว่า และง่ายต่อการเริ่มต้น
ตัวอย่างเช่น database อาจจะสามารถนำมาใช้ได้เช่นเดียวกัน
เช่น MongoDB, Elasticsearch เอาไว้สำหรับการเก็บข้อมูล
และนำ Apache Spark มาใช้สำหรับการประมวลผลข้อมูล
หรือถ้าต้องการใช้ Hadoop ต่อไป ใช้พวก connector tool มาช่วยก็ได้
เพื่อย้ายข้อมูลจากสิ่งที่คุณเริ่ม ไปยังสิ่งที่มันสามารถจัดการข้อมูลที่เพิ่มขึ้นสูงได้

แต่ผมมักจะชอบวิธีดังกล่าว เนื่องจาก

เราสามารถที่จะเริ่มต้นได้ง่าย
แต่เมื่อข้อมูลมีปริมาณที่สูงขึ้นมาก
ทำให้ที่จัดเก็บ และ การประมวลผลไม่สามารถรองรับได้
เราก็สามารถจะย้าย หรือ เปลี่ยนไปทำงานที่อื่นๆ ได้ง่าย
เช่น การย้ายจาก MongoDB ไปยัง Hadoop นั่นคือการเปลี่ยนแปลงที่จัดเก็บข้อมูล
ส่วนการประมวลผลข้อมูลยังเป็นเหมือนเดิม
หรือ
อาจจะใช้ MongoDB เช่นเดิม แต่ข้อมูลนั้นจัดเก็บใน HDFS(Hadoop Distributed File System) แทน

ด้วยแนวทางตัวอย่างเหล่านี้ มันทำให้เราเข้าใจรูปแบบข้อมูล
และการนำไปใช้งานให้เหมาะสมกับข้อมูลมากขึ้น

โดยสรุปแล้ว

ในการพัฒนาแต่ละระบบงาน ควรที่จะขับเคลื่อนไปด้วย business value หรือคุณค่าทางธุรกิจ
โดยมี technology ที่เหมาะสมเป็นตัวช่วยเหลือให้ business มันขับเคลื่อนได้
ซึ่งแน่นอนว่า ขาดอย่างใดอย่างหนึ่งไปไม่ได้เลย

ดังนั้น ก่อนที่จะเริ่มเลือกใช้เทคโนโลยีอะไร
ควรที่จะทำความเข้าใจกับปัญหาของ business ก่อน
และทำการหาข้อมูลที่สามารถช่วยแก้ไขปัญหาได้
เมื่อได้ทั้งปัญหา และ ข้อมูลแล้ว คุณจึงทำการเลือก technology ที่เหมาะสม
ซึ่ง technology ควรที่จะเริ่มต้นได้ง่าย
แล้วจะทำให้คุณสามารถขยายระบบเพื่อรองรับจำนวนข้อมูลที่สูงขึ้นได้ง่ายขึ้น

Simple is a KEY …