Technology

Case Study: Microservices ภาษา Go ที่รองรับได้มากกว่า 1 แสน Request ต่อวินาที

ในปี 2015 Uber สร้าง Microservice ขึ้นมาตัวหนึ่งชื่อ Geofence ซึ่งมีหน้าที่ทำ Geofence Lookup สำหรับแอป Uber ที่ต้องรองรับ Requests มากกว่า 1 แสน Query ต่อวินาที!
.
แต่ก่อนอื่น เรามาทำความรู้จักกันก่อนว่า Geofence Service คืออะไร?

Geofence Service คืออะไร?

Geofence คือการวางขอบเขตพื้นที่ต่างๆ ที่อยู่ในแผนที่ ว่าพื้นที่ไหนเป็นพื้นที่อะไร เช่น ขอบเขตพื้นที่นี้เป็นพื้นที่สนามบิน ขอบเขตพื้นที่นี้เป็นโรงเรียน ซึ่งข้อมูล Geofence นี้ก็สามารถเอามาใช้ประโยชน์ได้มากมาย เช่น การทำ Dynamic Pricing ที่มีการปรับราคาตามความต้องการของคนที่อยู่ในพื้นที่นั้นๆ เป็นต้น
.
โดยปกติแล้ว ทีม Uber จะใช้ Node.js ในการพัฒนาระบบ Service หลังบ้านเป็นภาษาหลัก แต่สำหรับกรณี Geofence Service นี้นั้น มีความแตกต่างที่ให้ทีม Uber เลือกภาษา Go ในการสร้าง Service นี้

ภาษา Go เหมาะกับ Geofence อย่างไรบ้าง?

1. High Throughput & Low Latency
Geofence นั้นจำเป็นต้องรองรับ Request จำนวนมหาศาล และไม่ใช่แค่เรื่องจำนวน Request เพียงอย่างเดียวเท่านั้น แต่ก็ต้องทำให้ Latency หรือเวลาที่ใช้ในการ Response นั้นต่ำกว่า 100 millisec สำหรับ 99% ของ Request ทั้งหมดอีกด้วย ซึ่ง Go ก็สามารถตอบโจทย์ทั้งสองเรื่องนี้ได้เป็นอย่างดี
2. CPU Intensive Workload
รูปแบบการทำงานของ Geofence Service นั้น เป็นงานประเภทที่ใช้ CPU ในการประมวลผลค่อนข้างเยอะ เพราะต้องมีการคำนวณโดยใช้ Point-In-Polygon Algorithm ซึ่ง Node.js ในเคสนี้นั้นอาจจะไม่เหมาะกับงานที่เน้น CPU เนื่องด้วยลักษณะที่เป็น Interpreted และ Dynamic Type ของภาษา JavaScript ทำให้ทำงานได้ช้ากว่า Compiled และ Static Type อย่างภาษา Go
3. Background Data Loading
Service Geofence เองนั้น ก็จำเป็นต้องมีการที่ต้อง Refresh ข้อมูลให้มีความอัปเดตอยู่ตลอดเวลา ซึ่งทำให้จำเป็นต้องมีการทำ Background Refreshing เพื่อทำการดึงข้อมูลจาก Sources ต่างๆ อยู่เรื่อยๆ ซึ่งสำหรับ Node.js ที่ทำงานแบบ Single Thread นั้น การที่ทำงานใน Background นั้นจะมีการดึง CPU อยู่ในระดับนึง โดยเฉพาะกับงานที่ต้องใช้ CPU เยอะ ซึ่งภาษา Go นั้น สามารถตอบโจทย์ในเรื่องนี้ได้ด้วย Goroutine ที่ทำให้ Service สามารถทำงานบน Multi-core ได้ โดยที่ไม่ดึง Resource จาก Thread หลัก
4. Developer Productivity
นอกจากนี้ การใช้ภาษา Go เองนั้นก็ช่วย Boost ความ Productive ของนักพัฒนาใน Uber ด้วยเช่นกัน เนื่องจากความเรียบง่ายของภาษา Go ที่สามารถเรียนรู้ได้ง่าย อ่านง่าย เข้าใจง่าย และ Maintain ได้ง่าย บวกกับ Type Safety ที่ช่วยให้ลด Error หลายๆ อย่างได้ตั้งแต่ Compile Time จากความเป็น Static Type ของภาษา Go
.
ซึ่งตอนนี้ที่ทาง Uber ในทีมต่างๆ ก็เริ่มมีการหันมาสร้าง Service ใหม่ๆ ด้วยภาษา Go กันมากขึ้น ซึ่งก็เป็นหนึ่งใน Choice ของภาษาที่ Uber เพิ่มเติมจาก Node.js และ Python

เรียนรู้เกี่ยวกับภาษา Go เพิ่มเติม

สำหรับผู้ที่อยากฝึกเขียน Go หรืออยากเป็น Go Developer มืออาชีพ ตอนนี้ทาง Skooldio ได้มีคอร์สซีรีส์ Golang Course Series ที่จะสอนตั้งแต่เริ่มต้นการใช้ภาษา Go ไปจนถึงระดับ Advanced และสามารถสร้าง Project จริงของตัวเองออกมาได้ด้วยภาษา Go ลงทะเบียนเพื่อรับส่วนลดพิเศษ 30% ได้ที่นี่

You may also like

Technology

พร้อมแล้วหรือยัง!? ที่จะร่วมเดินทางเข้าสู่มิติคู่ขนาน ผ่านนิทรรศการออนไลน์สุดพิเศษ “Exclusive CO’XI” 

ปฏิเสธไม่ได้เลยกับคำว่า “Multiverse” หรือพหุจักรวาล ต้องเคยผ่านหูผ่านตากันมาบ้าง และอาจ ทำให้ใครหลาย ๆ คนจินตนาการถึงความแปลกใหม่ในอีกจักรวาลที่ขนานกับจักรวาลที่เราอยู่ในปัจจุบัน ซึ่งความแปลกใหม่นั้นอาจจะหมายถึงคน, สิ่งของ และรวมไปถึงนวัตกรรมใหม่ ๆ ที่เราไม่เคยเจอหรือไม่เคยมีมาก่อน เช่นเดียวกันกับ “Exclusive ...
Technology

12 ทักษะ Technical skills และ Soft skills ที่ Programmer ควรเรียนรู้

สำหรับ Programmer นอกจากทักษะการเขียนโค้ด หรือ ภาษาเขียนโปรแกรมจะเป็นทักษะสำคัญที่โปรแกรมเมอร์ต้องมีแน่นอนอยู่แล้ว ยังมีทักษะอื่น ๆ ที่สำคัญในเชิงการทำงานเป็นทีมในระดับองค์กรทั้ง Technical skill และ Soft skill ต่าง ๆ ...

More in:Technology

Technology

4 ตัวอย่าง Tech ระดับโลก ที่ใช้ภาษา Go สร้าง High Performance Software

ถึงแม้ว่า ภาษา Go นั้นจะเป็นภาษา Programming ที่เพิ่งมาใหม่ได้ไม่นาน (เมื่อเทียบกับภาษาอื่นๆ อย่าง Java หรือ C++ ที่มีประวัติมายาวนานกว่า) แต่ว่ามีบริษัทต่างๆ จำนวนมากที่ใช้งานภาษา Go ...
Technology

รู้จักกับภาษา Go – ภาษาที่ Google สร้างขึ้นมาเพื่อแก้ปัญหาความช้าและซับซ้อนของการพัฒนา Software

รู้จักกับภาษา Go ว่าทำไม Google ถึงต้องสร้างภาษา Go ขึ้นมา? วันนี้ Skooldio จะพาเรามาหาคำตอบกัน บริษัท Google ในปี 2007 ย้อนกลับไปในสมัยก่อนปี ...

Comments are closed.