Case Study การสร้าง Data Pipeline ที่ GO-JEK: Startup ชื่อดังในเอเชีย

หลาย ๆ คนคงจะเคยได้ยินชื่อ GO-JEK แบรนด์ในธุรกิจ Delivery มาบ้าง และเรียกได้ว่าเป็นบริษัทสตาร์ตอัพแห่งแรกในประเทศอินโดนีเซีย ที่ประสบความสำเร็จในการพาแบรนด์ไปอยู่ในระดับยูนิคอร์นได้ในเวลาสั้นๆ แต่กว่าจะมาเป็น GO-JEK ที่ทุกคนรู้จักในทุกวันนี้นั้นก็ไม่ง่ายนัก

GO-JEK เริ่มเปิดตัวในปี 2012 ด้วยการเป็น call center คอยเป็นคนกลางในการจับคู่คนขับรถมอเตอร์ไซค์กับผู้โดยสาร แต่เมื่อเปิดบริการได้ระยะหนึ่งก็พบปัญหาในการใช้บริการ อีกทั้งยังต้องจ้างพนักงานมารับสายเพื่อให้พอกับจำนวนลูกค้าที่เพิ่มขึ้น จึงเริ่มนำเทคโนโลยีเข้ามาปรับใช้และเส้นทางแห่งสู่สตาร์ตอัพยูนิคอร์นก็เริ่มขึ้น

ในบทความนี้เราจะมาเล่าให้คุณฟังว่า GO-JEK ใช้เทคโนลยีจัดการกับระบบข้อมูลอย่างไร?

GO-JEK กับดาต้า

เมื่อเริ่มนำเทคโนโลยีเข้ามาปรับใช้ ก็ได้มีการออก Product เป็นแอปพลิเคชั่นที่หลายคนสามารถเข้าถึงได้ โดยมีบริการเริ่มแรกเป็นบริการเรียกรถมอเตอร์ไซค์และรถแท็กซี่ และมีบริการเสริม เช่น GoMart บริการไปซื้อของตามที่เราต้องการ GO-FOOD …

GO-JEK เริ่มมีข้อมูลจากการบริการมากขึ้น เนื่องจากมีคนขับให้บริการการเดินทางถึง 1 ล้านคน ลูกค้าใช้บริการกว่า 2.5 ล้านคน อีกทั้งยังมีการส่งข้อความให้กับคนขับทุก ๆ 10 วินาที ทำให้มีข้อมูลเพิ่มขี้นมาเรื่อยๆถึง 4TB – 5TB ต่อวัน และมีแนวโน้มที่จะเติบโตขึ้นเรื่อย ๆ ทุกวัน พร้อมกับการพัฒนาบริการอื่น ๆ 

เมื่อข้อมูลมากขึ้นเรื่อย ๆ เครื่องมือเดิมที่ใช้อยู่อย่าง PostgreSQL, Pentaho และ Python Script ก็เริ่มจะรับมือไม่ไหว 

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

และนั้นก็คือ GCP หรือ Google Cloud Platform โดยที่ GO-JEK สามารถลดการ maintenance รายวันจนถึงรายเดือน เพิ่มความเร็วในการ query ดึงข้อมูลในระบบ และสามารถแก้ปัญหาธุรกิจได้ทันเวลา

GO-JEK กับ GCP

GO-JEK เลือกใช้บริการของ GCP หลายบริการ ตั้งแต่ Operation Suites หรือแต่ก่อนเรียก Stack Driver ไว้ควบคุมและสังเกตุการณ์ log งานต่าง ๆ และ Machine ที่ใช้ เราสามารถติดตามแต่ละสเต็ปของการทำงานได้ 

มี Google Cloud Storage (GCS) เป็น Data Lake ไว้เก็บข้อมูลส่วนกลาง มี Google Big Query เป็นฐานข้อมูลขนาดใหญ่ สามารถ query ข้อมูลจากตารางออกมาวิเคราะห์ได้อย่างรวดเร็ว นอกจากนี้ยังมี Pub/Sub เป็นสื่อกลางในการสื่อสารข้อมูล คอยส่งข้อความไปยังบริการต่างๆ และ Cloud Dataflow ทำหน้าที่สำคัญในการทำ Data Pipeline ที่ประมวลผลข้อมูลขนาดใหญ่ได้ทั้งแบบ Batch และ Stream ซึ่ง Stream ทำให้เรารันงานแบบ Real time ได้

โครงสร้าง Data Pipeline ที่ GO-JEK ใช้

จุดมุ่งหมายของ GO-JEK คือการเพิ่มจำนวนการจอง (Total Booking) การจับคู่คนขับรถกับผู้โดยสารให้ได้ โดยคำนึงถึง Supply และ Demand และลดอัตรายกเลิกการจอง รวมถึงการเห็นภาพความเป็นไปของในแบบ RealT-ime

ทีม Engineering จึงได้มีการพัฒนา Data Pipeline ด้านล่างนี้ ซึ่ง Architecture มีหน้าตาเป็นแบบนี้ค่ะ

ตัวอย่าง Data Pipeline ของ GO-JEK จากงาน Google Next 2018

จะเห็นได้ว่าโครงสร้างนั้นประกอบไปด้วย Data Pipeline หลักสามอัน มี Stream Booking Count Pipeline, Dimension Pipeline และ Stream Driver Location Pipeline 

Stream Booking Count Pipeline เป็น Pipeline สำหรับการนับจำนวนการจองทั้งหมด โดยเริ่มจากการรับข้อความการจองจากลูกค้า สร้างโมเดลขึ้นมา แล้วนับเฉพาะที่เพิ่งสร้างขึ้นมาเท่านั้น

Dimension Pipeline เป็น Pipeline ที่ Query ข้อมูลจากตาราง ตำแหน่ง Location, พื้นที่ให้บริการ และ โปรไฟล์คนขับ สร้างเป็นโมเดลของแต่ละอัน แล้วนำมารวมกัน

Stream Driver Location Pipeline เป็น Pipeline ที่รับข้อมูลตำแหน่งของคนขับ โดยรับทุกๆ 10 วินาที นำมาสร้างเป็นโมเดล

เมื่อข้อมูลจาก Pipeline ทั้งสามพร้อมแล้ว ก็นำมารวมกันไว้ในหน่วยความจำ แล้วสร้างออกมาเป็น API เพื่อให้สะดวกต่อการนำไปใช้งาน เพียงเท่านี้ก็สามารถสร้างแผนที่แสดงตำแหน่งและข้อมูลของคนขับได้แบบ real time รู้ได้ว่าพื้นที่ให้บริการตรงไหนมีจำนวนการจองสูง ทำให้แก้ปัญหาการจับคู่ได้ทันเวลา

สรุป: Case Study การสร้าง Data Pipeline ที่ GO-JEK: Startup ชื่อดังในเอเชีย

หลังจากย้ายมาใช้บริการของ Google Cloud Platform ก็ทำให้ GO-JEK ให้บริการและทำการแก้ปัญหาที่เกิดขี้นได้แบบ Real-Time และยังสามารถรองรับการสเกลของข้อมูล ทำให้ขึ้นแท่นจากสตาร์ตอัพ ที่สเกลอัพไปเป็นยูนิคอร์นได้สำเร็จอย่างงดงาม

หากองค์กรของคุณกำลังตามหาระบบและบริการที่รองรับการเติบโตขององค์กร หรือต้องการที่ปรึกษาด้านเทคโนโลยีเกี่ยวกับ Data และ Google Cloud สามารถติดต่อพูดคุยกับทีมงาน CloudHM ได้เลยนะครับ

สำหรับในโอกาสหน้า เราจะหา case study ที่น่าสนใจมาเล่าให้ฟังกันอีกนะคะ

Reference: https://cloud.google.com/customers/go-jek

— Cloud HM