สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing

Share on facebook
Share on twitter
Share on linkedin

วันนี้แอดมินเพิ่งเรียนจบคอร์ส Google Cloud Platform Big Data and Machine Learning Fundamentals บน Coursera มาสด ๆ ร้อน ๆ ก็เลยเอามาเล่าให้ฟังกันครับ

ใครยังไม่รู้จัก Google Cloud อ่านเพิ่มเติมได้ที่ Cloud Computing คืออะไร? มีประโยชน์กับ Data Scientist อย่างเรายังไง

คอร์สที่แอดเรียนเป็นคอร์สของทีม Google Cloud เองเลย ซึ่งปกติต้องเสียเงินเรียน แต่แอดโชคดีว่าทำงานในบริษัทที่เป็น Partner ของ Google เลยได้เรียนฟรี (จริง ๆ ถ้าไม่ฟรี บริษัทก็จ่ายให้)

คอร์สนี้ปูพื้นฐานเทคโนโลยีต่าง ๆ ที่ Google Cloud Platform เตรียมมาไว้ให้สำหรับงานด้าน Big Data และ Machine Learning โดยเฉพาะ ซึ่งแอดเรียนคอร์สนี้เพราะเป็นหนึ่งในคอร์สของ Pathway: Professional Data Engineer Certification นั่นเองครับ

ใครอยากรู้เพิ่มเติมเรื่อง Certification ทิ้งคำถามไว้ได้ในคอมเม้นท์ใต้บทความนี้ครับ เดี๋ยวแอดจะรวบรวมมาตอบในบทความในอนาคต

Google Cloud Platform คืออะไร? ทำไมเราถึงต้องใช้

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 1

Google Cloud Platform หรือเรียกย่อ ๆ ว่า GCP เกิดมาตั้งแต่ปี 2008 โน่นเลยครับ โดยตอนแรกออกมาแค่ App Engine (เดี๋ยวเราจะมาแนะนำกันต่อไปว่า App Engine คืออะไร) แล้วก็ค่อย ๆ ปล่อยบริการใหม่ออกมาเรื่อย ๆ จนตอนนี้มีประมาณ 30+ บริการแล้ว

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 2
จะเห็นว่า GCP มีออกบริการใหม่มาทุกปีเลยทีเดียว – ข้อมูลจาก Wikipedia

บริการต่าง ๆ ของ GCP ก็จะเน้นเรื่องโครงสร้างพื้นฐาน 3 อย่าง นั่นคือ:

  • Compute – การประมวลผล ทั้งในรูปแบบ Virtual Machine และ Serverless
  • Storage – บริการเก็บไฟล์ และฐานข้อมูลแบบต่าง ๆ รวมไปถึง Data Warehouse (BigQuery)
  • Network – สำหรับเชื่อม Compute และ Storage เข้าด้วยกัน

ด้วยความที่ Google เป็นบริษัทที่เน้นทำด้าน Data อยู่แล้ว ตัว GCP เลยมีบริการที่เน้นสำหรับ ทำ Data Engineer, Data Science, และ Machine Learning มาให้โดยเฉพาะ

ประกอบกับตัว User Interface ของ Google ที่ออกแบบมาให้เราใช้ได้ง่าย (แอดชอบมากที่เค้ามี Terminal มาให้เราใช้ใน Browser เลย เรียกว่า Cloud Shell คิดมาดีมาก) ทำให้ GCP ถือเป็น Cloud ที่เหมาะมากสำหรับผู้ที่เริ่มต้นใหม่ครับ

มารู้จักกับบริการต่าง ๆ ของ Google Cloud สำหรับทำ Big Data และ Machine Learning กันเลย

Compute – บริการ GCP สำหรับการประมวลผล

Compute Engine = บริการให้เช่าคอมประกอบ

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 3

Compute Engine เหมือนกับคอมพิวเตอร์เครื่องหนึ่ง ที่เราสามารถกำหนด Spec ที่ต้องการได้ว่าจะเอา CPU เท่าไหร่ RAM เท่าไหร่ อยากลงอะไรก็ได้ แล้วจ่ายเงินให้ Google ตามจำนวนชั่วโมงที่เราเช่าใช้เครื่องนี้

ข้อดีของ Compute Engine คือ เราสามารถปู้ยี่ปู้ยำคอมพิวเตอร์เครื่องนี้ยังไงก็ได้ แล้วแต่เรา

ข้อเสียของ Compute Engine คือ ถ้าเราทำ Environment พัง เราก็ต้องซ่อมเอง ทีม GCP ไม่มาดูให้เรานะ

App Engine = บริการให้เช่าคอมที่มีโปรแกรมสำเร็จรูป

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 4

จากปัญหาของ Compute Engine ที่คนทำต้องมาเสียเวลาดูแล Infrastructure เอง ทาง GCP ก็เลยมีทางเลือกให้สำหรับคนที่อยากได้บริการที่ไม่ต้องคิดเยอะ แค่โยนโค้ดให้ไปรันก็พอ นั่นก็คือ App Engine ครับ

App Engine เป็นบริการที่เราเรียกว่า Fully Managed & Serverless & Scalable:

  • Fully Managed = ทีม GCP ดูแลระบบให้ ไม่ต้องห่วงว่า Infrastructure จะมีปัญหา (แต่ไม่ดูแลให้ถ้าโค้ดเรามีปัญหานะครับ)
  • Serverless = เราไม่ต้องคิดมากว่า Server เบื้องหลังเป็นยังไง ทำงานยังไง ตั้งอยู่ที่ไหน
  • Scalable = สามารถปรับขนาด Server ให้เล็ก -ใหญ่ได้ตามความต้องการ เหมาะมากกับธุรกิจที่กำลังเปิดใหม่ แล้วยังไม่รู้ว่าจะมีคนใช้เยอะน้อยแค่ไหน ซึ่งอันนี้แก้จุดด้อยของ Hosting ทั่วไปที่ไม่สามารถ Scale ได้

(สำหรับใครสนใจอยากเรียนรู้เรื่อง Serverless เพิ่ม อ่านได้ที่บทความ Serverless คืออะไร ครับ)

นอกจากนั้น App Engine ยังทำให้เราสามารถเปลี่ยนเวอร์ชั่นไปมา ถ้าโค้ดใหม่มีปัญหา เราก็ย้อนกลับไปเวอร์ชั่นเก่าได้ตลอดครับ

App Engine เคยมีปัญหาเล็กน้อย นั่นคือ สามารถรันได้เฉพาะบางภาษาเท่านั้นครับ

แต่ในปัจจุบัน GCP ได้เปิดตัวบริการใหม่มาเสริม ได้แก่ App Engine Flex และ Container Engine ที่ทำให้ผู้ใช้สามารถติดตั้ง Environment ที่ต้องการเองได้แล้ว ยกมาเป็น Docker Container เลยก็ยังได้

สำหรับใครที่สนใจอยากเรียนรู้ความแตกต่างของ Compute Engine, Container Engine, App Engine ให้ชัดเจนมากขึ้น แอดแนะนำวีดิโอนี้จากงาน Google Cloud Next ครับผม:

ป.ล. App Engine ถือว่าไม่เกี่ยวกับ Data โดยตรง และไม่มีใน Data Engineer Certificate ครับ เพราะปกติจะเอาไว้ใช้กับงาน Web / App มากกว่า แต่แอดว่าควรรู้ไว้เพราะว่าถ้าจะนำ Data มาแสดงผลให้เท่ ๆ ยังไงเราก็ต้องทำแอพ / เว็บสักวันอยู่ดีครับ

Dataproc = บริการประมวลผลข้อมูลขนาดใหญ่ด้วย Hadoop

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 5

พอเรามีข้อมูลมหาศาลมาก ๆ ระบบประมวลผลข้อมูลทั่วไปที่เราทำกันมาช้านาน (เช่น Excel) ก็จะรับไม่ไหว ซึ่งหนึ่งในวิธีที่ได้รับความนิยมมากสำหรับประมวลผล Big Data ก็คือ Hadoop นั่นเองครับ

เพื่อให้เห็นภาพว่าการประมวลผลข้อมูลขนาดใหญ่คืออะไร ลองคิดตามตัวอย่างนี้ครับ:

  • สมมติเรามีโจทย์ว่าอยากนับจำนวนโปรแกรมเมอร์ในประเทศไทย ต้องทำยังไงถึงจะได้ผลลัพธ์เร็วที่สุด?
  • ถ้าเราใช้วิธีเดินไปถามทีละคน กว่าจะครบ 60 ล้านคนก็ใช้เวลาหลายปี
  • แต่ถ้าเราให้เจ้าหน้าที่ในแต่ละจังหวัดไปนับมาว่าโปรแกรมเมอร์ในจังหวัดมีกี่คน แล้วเราเอาผลมารวมทีเดียว ก็จะทำให้ได้คำตอบไวขึ้นหลายเท่า

อันนี้เป็น Concept ของ MapReduce บน Hadoop ในการประมวลผลข้อมูลขนาดใหญ่นั่นเองครับ

Hadoop เป็นระบบสำหรับประมวลผลข้อมูลขนาดใหญ่ ซึ่งพัฒนามาจากไอเดียของระบบภายในของ Google ชื่อว่า MapReduce และ Google File System จากในเปเปอร์ที่ทาง Google ปล่อยออกมา

ด้วยความที่การประมวลผลข้อมูลแบบ Scale out (ใช้เครื่องคอมเล็ก ๆ หลาย ๆ ตัวมาช่วยกันประมวลผล = ประหยัดค่าใช้จ่ายกว่าการ Scale up) ทำได้ยาก พอมี Hadoop ที่ทำ Scale out ได้ดี แถมเป็นของฟรี เลยทำให้คนหันมาสนใจใช้กัน

อย่างไรก็ตาม การเซ็ตอัพ Hadoop ขึ้นมาเองตั้งแต่ศูนย์นั้นใช้เวลาเยอะ ไม่ต้องพูดถึงบริการเพื่อนบ้านอย่าง Pig, Hive, Spark และปัญหาที่ตามมาจากการแก้ไข Requirement ของลูกค้าผู้น่ารัก

แปลว่าการเซ็ตอัพ Hadoop เองตั้งแต่ต้น ต้องใช้พลังเยอะพอสมควร นี่เป็นเหตุผลหนึ่งว่า ทำไม Data Engineer ถึงเป็นที่ต้องการมากกว่า Data Scientist

GCP เลยออกบริการชื่อ Dataproc ขึ้นมา เรียกง่าย ๆ ว่าเป็น Hadoop ให้เช่า ผู้ใช้แค่มากด ๆ ว่าอยากได้สเปคแบบไหน ใช้เวลาเซ็ตอัพไม่ถึง 2 นาที (อันนี้ทาง Google เคลมไว้ในคอร์ส)

แถมใช้งาน Dataproc เสร็จเมื่อไหร่ก็ปิดไปได้เลย ไม่ต้องจ่ายตอนไม่ใช้ ไม่ต้องกังวลว่าจะใช้ไม่คุ้ม

สำหรับใครสนใจเรื่องการโยกย้าย Spark / Hadoop Cluster ของตัวเองมาไว้บน Google Cloud ลองดูวีดิโอนี้จากงาน Google Cloud Next เลยครับ:

Dataflow = บริการประมวลผลข้อมูลขนาดใหญ่ ที่รองรับทั้ง Batch & Stream

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 6

สำหรับคนที่ต้องการประมวลผลข้อมูลขนาดใหญ่ และอยากประมวลผลทั้งข้อมูลแบบ Batch (นาน ๆ ครั้งรวมมาทีเดียว ไม่ถี่) และ Stream (มาแบบเรื่อย ๆ ตลอดเวลา) แต่ไม่จำเป็นต้องใช้ Hadoop เราก็สามารถใช้ Dataflow แทนได้ครับ

ใน Dataproc เวลาเราอยากส่งงานประมวลผลไปที่ระบบ เราก็ต้องเขียนด้วย MapReduce หรือ Spark ซึ่งทำให้เราไม่สามารถยกไปใช้กับระบบรันงาน (Job Runner) ตัวอื่นได้ ใน Dataflow เลยมาเขียนงานด้วย Apache Beam ซึ่งเป็นระบบที่ทำให้เราสามารถนำโค้ดไปใช้กับ Job Runner ตัวอื่น ๆ ได้ง่ายขึ้นนั่นเอง

ความเก่งของ Dataflow คือ เราเขียนโค้ดสำหรับประมวลผลข้อมูลทีเดียว แล้วจะเอาไปใช้กับงานแบบ Batch หรือ Stream ก็ได้ ซึ่งถ้าเป็น Hadoop / Spark ต้องแก้โค้ดกันหน้าไหม้เลยทีเดียวครับ (แอดเคยแล้ว) ถือว่าประหยัดเวลาได้เยอะมาก

นอกจากนั้น Dataflow ยังเป็น Serverless (Dataproc ยังไม่ใช่) แปลว่าถ้าใช้เราไม่ต้องไปสนใจเรื่องการดูแลรักษา Cluster อะไรเลย แถมถ้างานเยอะแค่ไหนก็ Scale เองได้ เรามีหน้าที่แค่กรอกบัตรเครดิตแล้วใช้ไปอย่างสบายใจจนกว่าบิลจะมาก็พอ

แถมวีดิโอสอนใช้ Cloud Dataflow จากงาน Google Next เผื่อใครสนใจไปศึกษาต่อนะครับ:

Cloud Composer = บริการจัดการ Workflow ด้วย Airflow

สรุป Google Cloud Platform สำหรับทำ Big Data และ Machine Learning: ตอน 1) Computing 7

เหนือฟ้ายังมีฟ้า เหนือ Dataflow ก็ยังมี Cloud Composer

(ตอนแรกว่าจะไม่เขียนถึงแล้วครับ เพราะข้อสอบ GCP Professional Data Engineer ตัวเก่ายังไม่มีสอน Cloud Composer (เค้าเพิ่งออกกลางปี 2018) แต่ไหน ๆ ก็ลากยาวมาขนาดนี้แล้ว และข้อสอบ GCP ที่เค้ากำลังจะปรับใหม่ก็จะมี Cloud Composer ด้วย ก็เลยขอเขียนถึงอีกหน่อยละกัน)

เวลาประมวลผลข้อมูลที่รายละเอียดเยอะ ๆ บางทีเราก็จะมีการวาง Workflow ที่ซับซ้อนมาก ๆ หรืออยากได้ฟีเจอร์แปลก ๆ ซึ่ง Dataproc กับ Dataflow อาจจะไม่ถูกใจวัยรุ่น เลยทำให้ Cloud Composer เกิดขึ้นมาครับ

Cloud Composer สร้างขึ้นมาจาก Apache Airflow ซึ่งเป็นโปรแกรม Open Source ที่ได้รับความนิยมอย่างมากสำหรับการทำ Workflow จัดการข้อมูล

Airflow เขียน Workflow แบบเป็นกราฟ DAG (Directed Acyclic Graph = กราฟที่มีหัวลูกศรจากจุดหนึ่งไปอีกจุดหนึ่ง โดยไม่สามารถวนกลับมาที่จุดเดิมได้) ด้วย Python ทำให้ง่ายต่อการแก้ไขในโปรเจคที่ซับซ้อน เพราะ Workflow ของเราเป็นโค้ดหมดแล้ว (Workflow as code)

นอกจากนั้น Cloud Composer ยังสร้างขึ้นมาเพื่อประมวลผลข้อมูลจากหลายแหล่งข้อมูล ไม่ว่าจะเป็นจากเซิร์ฟเวอร์ในบริษัทลูกค้า หรือจาก Cloud Provider เจ้าอื่น ๆ เช่น AWS Redshift

ป.ล. ไปถามเทพ GCP ที่บริษัทมาแล้ว เค้าบอกว่าเราสามารถใช้ Cloud Composer สั่งรัน Dataflow Job ได้อีกด้วย

สำหรับใครอยากรู้เรื่อง Cloud Composer เพิ่ม ดูได้ในวีดิโอของ Google OnAir เลยครับ:

แถมท้าย: สรุปบริการ GCP ด้านการประมวลผลข้อมูล ใช้ตัวไหนดี

จากที่แนะนำกันไปหลากหลายบริการด้านบนอาจจะหนัก ๆ หัวอยู่บ้างก็ไม่ใช่เรื่องแปลกครับ ตอนที่แอดเรียนเรื่อง Cloud ครั้งแรกก็ใช้เวลาเกือบเดือนกว่าจะได้ Certificate จาก AWS มา เพราะเค้ามี Product เยอะมากจริง ๆ

มาสรุปกันว่าควรใช้บริการด้าน Compute ตัวไหน ตอนไหนดี:

  • ถ้าเราอยากได้ VM เปล่า ๆ ที่จัดการเองได้ทั้งหมด และเราดูแลเป็น เลือก Compute Engine
  • ถ้าเราอยากเอาโค้ดไปรันเฉย ๆ ไม่ได้อยากจัดการเซิร์ฟเวอร์ เลือก App Engine
  • ถ้าเราอยากเอาโค้ดไปรันพร้อม Environment ที่เราเตรียมไว้เอง เลือก Container Engine
  • ถ้าเรามี Hadoop Cluster แล้วอยากยกขึ้นไปบน Cloud เลือก Dataproc
  • ถ้าเราอยากรันทั้ง Batch & Stream Data แต่ไม่อยากเขียนโค้ดเยอะ เลือก Dataflow
  • ถ้าเราอยากเขียน Workflow แบบซับซ้อน และชอบความ Workflow as code เลือก Cloud Composer

แน่นอนว่าในโปรเจคจริงเราไม่ได้เลือกใช้ตัวใดตัวนึงครับ แต่เราใช้พวกนี้มาผสมกันเพื่อให้เกิดเป็น Solution ของธุรกิจของเรา อันนี้แหละคือความซับซ้อนของการใช้ Cloud ครับ ว่าเราควรรู้จักหลาย ๆ บริการเพื่อนำมาใช้ร่วมกัน

ในบทความตอนต่อไป (ถ้ามีคนเม้นท์ว่าอยากอ่าน) เราจะมาดูเรื่องบริการด้าน Storage กันบ้างครับ นอกจากการเก็บไฟล์แล้ว บริการฐานข้อมูลของ GCP ก็มีหลากหลายมาก ตั้งแต่ SQL, NoSQL, ไปจนถึง Data Warehouse ชื่อดังอย่าง BigQuery

ถ้าอยากให้แอดเอาเรื่องอะไรมาเล่าต่อก็กระซิบมาบอกกันได้ในคอมเม้นท์ใต้โพสนี้ หรือในเพจก็ได้ครับ

บทความนี้ Proof read โดยน้องฝน GCP Professional Data Engineer ถ้ามีข้อมูลส่วนไหนที่อยากเสริม หรือแก้ไข มาคุยกันที่เพจ Data Science ชิลชิล ของเรากันได้ตลอดนะครับ

Leave a comment

อ่านจบแล้วอยากพูดคุยต่อ? พิมพ์ไว้ตรงนี้ได้เลย แอดมาอ่านทุกอันครับ