14 พ.ย. 2563 3,240 20

มีอะไรน่าสนใจใน Ruby on Rails ver. 6 | Tech Monday EP.1

มีอะไรน่าสนใจใน Ruby on Rails ver. 6 | Tech Monday EP.1

Ruby on Rails เครื่องมือ Web Application Framework ที่ได้รับความนิยม โดยเฉพาะในกลุ่ม Startup ล่าสุดพัฒนามาถึงเวอร์ชั่น 6 โดยพูดคุยกับ คุณการุณ สิริธีรธำรง Senior Software Developer ของบริษัท VmX (คุณเนย) บริษัท VmX ทำ Real Estate Investment Platform จัดการ Portfolio ของอสังหาหรือ Asset อยากดูว่าที่ถืออยู่ได้กำไรหรือเปล่า ปกติต้องถามนักวิเคราะห์ว่าราคาเป็นยังไง ตลาดเป็นยังไง มีใครเช่าอยู่หรือเปล่า หลักๆ อยากรู้ว่าทำกำไรหรือขาดทุน นอกจากนี้ดูลึกเข้าไป แต่ใช้เวลาเป็นสัปดาห์ ต้องส่งอีเมล์หรือ dropbox พอเป็นระบบ Manual อาจมีความผิดพลาดได้ ถึงเวลาข้อมูลไม่ทันการณ์แล้ว

แพล็ตฟอร์ม ที่คุณเนยทำ ใช้ Ruby on Rails ตั้งแต่ทำมา ตั้งแต่เปิด - ตั้งทีมขึ้นมา โดยอิงกับโครงสร้างซอฟต์แวร์แบบ MVC ชอบข้อดีของ Rails สะดวกและคล่องตัวสำหรับคนที่ทำมาตั้งแต่ 0 ตัวนี้เกิดมาตั้งแต่ปี 2004 คือพัฒนามาตลอด ก็เลยมั่นใจว่าช่วยแก้ไขปัญหาได้ Rails พัฒนาโดย Ruby ด้วย Dry (Don't Repeat Youself) ช่วยลดขั้นตอน

หลักๆ Rails เหมาะกับหลายอย่าง เช่น เว็บทั่วไป ที่มีการเชื่อมต่อ Database ฝากข้อความต่างๆ เน้นออกแบบมาเพื่อทำเว็บง่ายๆ ถ้าขยายความ Web Application ทั่วๆ ไป เช่น GitHub Google แอปต่างๆ ออกแบบมาเพื่อทำอะไรบางอย่าง เช่น CRM e-Commerce จับฉลาก จองตั๋ว

คุณเนย ใช้ Rails มาตั้งแต่เวอร์ชั่น 3 ล่าสุดเวอร์ชั่น 6 ข้อดีคือ มีระบบที่เราไม่ต้องทำเอง เช่น Database Connector มี ORM Object Relation Master ให้เลย ทำให้แยก Database ได้สะดวก โดยมีการ Mapping ข้อมูล Database เน้นความสนุก ความง่าย ตัดความยุ่งยากทิ้ง 

เวอร์ชั่น 6 นั้นแก้ปัญหาต่างๆ ของ Rails เวอร์ชั่นเก่าๆ เช่น แก้ปัญหา Parallel Test ปกติเทสเป็น Single Thread รันต่อเนื่องไปเรื่อยๆ รันด้วย Worker ตัวเดียว ใช้เวลานาน ล่าสุดแก้ปัญหาความช้าได้ แยก read / write ตอนนี้ Rails มีวิธีแยก Master / Slave Database ได้ ยกตัวอย่าง Pantip.com เคยใช้ Database ก่อนย้ายไป MongoDB แยก Read / Write ออกจากกัน อันนี้เป็นตำนานที่น่าสนใจ

เมื่อก่อนถ้าทำเว็บให้คนติดต่อ มี Contact Form ก่อนหน้านี้ ต้องรัน Maibox setup ต่างๆ ต้องเซ็ต Inboard Server ตอนนี้ทำ Transaction Agent / Transactiob E-Mail มาช่วยได้ ก่อนนี้ต้องมีความรู้ setup แต่เวอร์ชั่น 6 ของ Rails นี้ ถ้าอยากให้คนรับส่งกลับมาจะตั้งได้ว่าจะให้ FWD in-bound ส่งกลับมาที่ server ของเราได้ จากเดิมส่งไปที่ service provider ทำเหมือนกับ Web Apps ธรรมดา ตอนนี้แบบ Automation ได้เลย ฟีเจอร์นี้ ทำให้วิเคราะห์ได้ว่า คนตอบกลับมาแค่ไหน สนใจ ไม่สนใจได้แค่ไหน แถมยังทำ ticket ส่งต่อไปได้อีก

ถ้าไม่ใช้ภาษา Ruby บน Rails ใช้ค่ายอื่น มี Hanami เกิดทีหลังแต่คอนเซ็ปต์ ต่างกัน เป็นทุกอย่าง ตอบรับ ชัดเจนกว่า อีกอันคือ single server ใช้เป็น simple request respond server ง่ายๆ ได้ แบบ Monitoring ง่ายๆ ตอบง่ายๆ ได้

บริษัทที่ใช้ Rails หลักๆ คือ Github และ AirBNB, Shopify, Blog ต่างๆ ทำไมใช้ Rails หลายคนสนใจ Python แต่เห็นได้ชัดว่า Python เขียนแล้วเห็นชัดเจน เร็วกว่า ภาษาได้รับความนิยมในกลุ่มนักวิทยาศาสตร์ สาย AI, ML ใช้กัน ส่วน Ruby เขียนง่าย อ่านสนุก แต่มีบางจุดที่ไม่เคลียร์นัก

ถ้าเทียบ Framework ระหว่าง Rails กับ Jungle ความต่างคือ Jungle เขียนโค้ดมากกว่า แต่สำหรับ Rails ทำให้ชีวิตง่ายขึ้น ใช้เวลาน้อย

ข้อเสียของ Rails ตอนนี้บางบริษัทก็ไม่ได้ใช้ Rails (พัฒนาด้วยภาษา Ruby) เพราะภาษามีความช้าในการทำงาน เทียบ runtime ความเร็ว ความช้า ต่างกัน 

ถ้าเว็บมีคนเข้าเยอะมากๆ กิน resource เป็นแนวดิ่ง Horizontal ข้อด้อยคือเป็น Single Thread ทำให้กิน resource ดิ่ง ต้องบวก server เพิ่ม CPU, RAM ถ้าไม่พอก็ต้องเพิ่ม server ไปอีก

จะเลือกใช้ภาษาอะไรดี? เวลาทำเว็บไซต์จะมี Concurrent เวลาทำงานต่างๆ ถ้าอยาก ไม่มี Waste Time สามารถ Respond ได้เลย แต่ต้องดูลักษณะงาน ต้องดูภาษา ดู Framework ด้วย Rails เหมาะกับการทดสอบไอเดีย ถ้าถึงจุดนึงมีคอขวด แต่อาจจะไม่ต้องเปลี่ยนทั้งหมด

อนาคตของ Rails มีหลายๆ อย่างที่พยายามแก้ปัญหา ลดการใช้เมมโมรี่ ปัจจุบันมี Rich Text Editor ให้ใช้แล้ว สร้างฟอร์มเป็น Rich Text Editor ได้เลย เพิ่มความปลอดภัย การใช้ทรัพยากร ให้เร็ว ปกติช้าอยู่แล้ว ก็พยายามแก้ไขปัญหาให้เร็วขึ้น ถ้าเทียบ เวอร์ชั่น 3 - 4 - 5 - 6 เร็วขึ้น อนาคตก็น่าจะแก้ปัญหาเหล่านี้

สิ่งสำคัญมี Community คนใช้ Rails คนสนใจ Ruby, Rails จัดทุกวันอังคารสุดท้ายของเดือน Facebook Group / Meetup Ruby Bangkok.RD มีทั้ง Beginner จนถึงคนเก่งมาช่วยกัน ใครที่สนใจ Ruby ลองติดต่อคุณเนย ครับ    

COMMENTS