อ่านเจอบทความเกี่ยวกับ การเปลี่ยนภาษาในการพัฒนาระบบจาก PHP ไปยัง Go
เป็นส่วนการทำงานเกี่ยวกับ Face Recognition
ซึ่งสิ่งที่ได้กลับมา
มีทั้งเรื่องของประสิทธิภาพการทำงานที่สูงขึ้น
ส่งผลต่อประสบการณ์การใช้งานระบบของผู้ใช้งานโดยตรง
มีทั้งเรื่องของการเรียนรู้สิ่งต่าง ๆ จากการลงมือทำ
ดังนั้นจึงสรุปสิ่งที่น่าสนใจไว้นิดหน่อย
น่าจะมีประโยชน์สำหรับนักพัฒนา
ก่อนที่จะเลือกภาษา Go นั้น
ทางทีมทำการมีการทำ research ในภาษาต่าง ๆ ก่อน ไม่ใช่เอะอะก็เลือกใช้เลย แน่นอนว่า เลือกตามเป้าหมายที่ได้ตั้งเอาไว้ การพัฒนาใหม่นั้น ก็ไม่ใช่ทำแบบ big bang แต่ค่อย ๆ ทำเป็นทีละส่วน จากนั้นทำการ validate และ ทดสอบ จากการใช้งานจริง ๆ เพื่อให้เห็นปัญหา เพื่อทำการแก้ไขได้ง่ายขึ้น เพื่อลดความเสี่ยงต่าง ๆ อีกด้วยประโยชน์ที่ได้จากการเปลี่ยน ประกอบไปด้วย
- ความเร็วในการทำงานต่อ transaction เร็วขึ้นจาก 1-2 วินาที เหลือ 300 ms
- การ deploy ง่ายขึ้น รวมถึงขนาดของ Docker Image ที่เล็กลง
- ลดการใช้ memory ลงไป 50%
- ลดค่าใช้จ่ายของ server ลง 50%
สิ่งที่น่าสนใจคือ ในส่วนของ Professional Development
ในทีมพัฒนานั้นไม่มีใครมีประสบการณ์ ในการพัฒนาและ deploy ระบบงานด้วยภาษา Go บน production เลย ดังนั้นในการเปลี่ยนแปลงครั้งนี้ มันเป็นโอกาสที่ดีสำหรับการเรียนรู้อย่างมาก เพื่อให้ได้รับบทเรียนต่าง ๆ จากงานจริง ๆ จากลูกค้าจริง ๆ No pain No gain เพื่อปรับปรุงสิ่งต่าง ๆ ให้ดีขึ้น รวมทั้งความสามารถของทีมอีกด้วยสิ่งที่สำคัญมาก ๆ ของการใช้งานภาษา Go ประกอบไปด้วย
- การจัดการเรื่อง memory leak และ garbage collection ซึ่งมี profiling tool มาให้ใช้งาน ดังนั้นใช้ซะ ให้คล่อง
- ปัญหาในการจัดการข้อมูล JSON ขนาดใหญ่ ซึ่งพบว่า JSON package ของ Go ไม่สามารถแก้ปัญหาใน use case ของทีมได้ ซึ่งก็แก้ไขด้วยการเลือก data structure และการ process ข้อมูลที่จะส่งมานั่นเอง