อ่านเจอบทความเกี่ยวกับ การเปลี่ยนภาษาในการพัฒนาระบบจาก 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 ข้อมูลที่จะส่งมานั่นเอง