เขียนใหม่ด้วย Rails
(dirkjonker.bearblog.dev)-
เริ่มต้นบล็อก
- ในปี 2022 เริ่มพัฒนาแอปพลิเคชันสำหรับจัดทำเอกสารสำแดงศุลกากร
- หลังจากประเมินหลายภาษาและหลายเฟรมเวิร์กแล้ว จึงตัดสินใจพัฒนาด้วย Ruby on Rails
- เนื่องจากคุ้นเคยกับ Rails จึงพัฒนาได้เร็วกว่าตัวเลือกอื่นถึง 10 เท่า
-
การพัฒนาเวอร์ชัน 2
- เริ่มพัฒนาแอปพลิเคชันเวอร์ชันที่สองโดยใช้ Rust และ SvelteKit
- ช่วงแรกทั้งเร็วและดูดี แต่พัฒนาได้เพียง 10% ของฟีเจอร์ที่ต้องการ
- เนื่องจากไม่มีเฟรมเวิร์กของ Rust ที่เทียบได้กับ Rails จึงใช้เวลามาก
-
ข้อดีของ Rust
- ได้สัมผัสข้อดีของประสิทธิภาพของ Rust และการคอมไพล์ที่ไร้ข้อผิดพลาด
- ใน Ruby มักเกิด runtime error บ่อย จึงรู้สึกถึงความจำเป็นของ Rust
-
การเปลี่ยนแปลงฝั่งฟรอนต์เอนด์
- รู้สึกไม่พอใจกับฟรอนต์เอนด์ของ Rails จึงตัดสินใจย้ายไปใช้ SvelteKit
- เปลี่ยนบางหน้าไปใช้สแตกใหม่ได้อย่างรวดเร็ว แต่การดีพลอยกลับซับซ้อนขึ้น
-
ความเป็นจริงของการพัฒนา
- ส่วนของ Rails ยังคงพัฒนาไปเรื่อย ๆ พร้อมเพิ่มฟังก์ชันที่มีประโยชน์อย่างต่อเนื่อง
- ตระหนักว่าการย้ายไปใช้ Rust และ Svelte ไม่ได้สร้างคุณค่าโดยตรงให้ผู้ใช้
-
ความยากของการตัดสินใจ
- ตัดสินใจเลิกใช้สแตกใหม่และกลับไปใช้ Rails
- ชักชวนให้สมาชิกทีมเรียนรู้ Rails
-
ข้อดีของ Rails
- Rails เป็นรากฐานของบริษัทที่ประสบความสำเร็จมากมาย และมีไลบรารีกับอีโคซิสเต็มจำนวนมาก
- ช่วยให้สามารถโฟกัสกับการพัฒนาผลิตภัณฑ์ได้
-
บทเรียน
- การเรียนรู้ภาษาและเฟรมเวิร์กใหม่ ๆ ให้มุมมองเชิงลึกมากมาย
- การพัฒนาเว็บแอปพลิเคชันต้องอาศัยทางเลือกและการประนีประนอมจำนวนมาก
- การกลับไปใช้ Rails เป็นการตัดสินใจที่ดีและช่วยเพิ่มประสิทธิภาพการทำงาน
-
ข้อเสียของ Ruby และ Rails
- ปัญหา runtime สามารถแก้ได้ด้วยการทดสอบ
- การที่โค้ดซับซ้อนขึ้นเป็นปัญหาของนักพัฒนาเอง และต้องจัดระเบียบให้ดี
- Rails เร็วเพียงพอ และสามารถปรับปรุงประสิทธิภาพได้ด้วย Turbo และการแคช
-
สรุป
- ไม่มีภาษาหรือเฟรมเวิร์กใดสมบูรณ์แบบ ต้องเข้าใจและใช้ประโยชน์จากข้อดีข้อเสียของแต่ละตัว
- Rails เป็นตัวเลือกที่ดี และเฟรมเวิร์กอื่น ๆ อีกมากก็ยอดเยี่ยมเช่นกัน
2 ความคิดเห็น
เขียนใหม่ด้วย Ruby
เขียนใหม่ด้วย Rails
ความคิดเห็นบน Hacker News
Rails, Django และ Laravel นำหน้ากว่าสแต็กอื่นมากในการพัฒนาเว็บแอป พวกมันจัดการงานที่ทำซ้ำ ๆ เข้าใจความต้องการได้ดี และไม่ขัดขวางตอนสร้างแอปพลิเคชัน มองว่าการพัฒนาเว็บเป็นปัญหาที่ถูกแก้ไปแล้ว และเทคโนโลยีฝั่ง JavaScript มักถูกขับเคลื่อนด้วยเงินทุนจากบริษัทขนาดใหญ่
ใช้ Rails มา 17 ปีแล้ว และยังคงรักและชอบมันอยู่ ยังแยกโค้ดได้ง่าย ทำให้ส่วนหัวของไฟล์ไม่ยาวเกินความจำเป็น เมื่อแยก logic กับ markup ออกจากกัน ก็ทดสอบแยกกันได้ จึงตามบั๊กได้ง่ายขึ้น
Rust เป็นภาษาที่สร้างโดยคนที่ฉลาดมาก แต่เพราะมันเน้นทฤษฎีชนิดข้อมูลและการจัดสรรหน่วยความจำ จึงเข้าใจยากสำหรับนักพัฒนาทั่วไป ต่อให้อ่านบล็อกโพสต์เกี่ยวกับ Rust ก็เข้าใจได้แค่ประมาณครึ่งเดียว
ความไม่พอใจต่อ Ruby และ Rails ลดลงแล้ว ไม่มีภาษาหรือเฟรมเวิร์กไหนสมบูรณ์แบบ และควรรู้ทั้งจุดแข็งและจุดอ่อนเพื่อรับมือกับมัน
การเขียนเว็บแอปพลิเคชันขนาดใหญ่ด้วย Rust ให้เสร็จอย่างรวดเร็วเป็นเรื่องยาก แอปขนาดใหญ่ที่เขียนด้วย Rails ก็อาจรันได้ไม่เร็ว มีบั๊กเยอะ และดูแลรักษาหรือขยายต่อได้ยาก ภาษาอย่าง Java, C#, Go ทำงานได้เสร็จเร็วพอ ๆ กับ Rails และรันได้เร็วพอ ๆ กับ Rust
เหตุผลที่เทคโนโลยีอย่าง NextJS และ SvelteKit ได้รับความนิยมในหมู่นักพัฒนา JS คือมันช่วยแก้ปัญหาประสบการณ์การพัฒนาแบ็กเอนด์ของ Node.JS ส่วน Rails ได้มอบโซลูชันแบบครบวงจรสำหรับการสร้างแอปพลิเคชันไว้อย่างปฏิวัติวงการตั้งแต่ปี 2006
กำลังทดสอบ AdonisJS ในฐานะทางเลือก TS ของ Rails มันคล้ายกับ Rails หรือ Laravel และช่วยลดภาระที่ต้องตัดสินใจเองทุกส่วนของสแต็ก
รู้สึกสับสนกับความเห็นที่ว่า Rust ไม่เหมาะกับเว็บแบ็กเอนด์ เพราะมีประสบการณ์ที่ดีในบริการขนาดเล็ก แม้ความซับซ้อนจะเพิ่มขึ้นเมื่อสร้างแอปขนาดใหญ่ แต่ Rust ก็ให้ความมั่นใจที่จำเป็นกับโค้ดเบสขนาดใหญ่
กำลังเจอประสบการณ์แบบเดียวกับ Django โดยปัญหาด้านประสิทธิภาพส่วนใหญ่มักเกิดจากคำสั่งคิวรีฐานข้อมูลมากกว่าตัว Django เอง
ไม่ใช่ปี 2010 แล้ว จึงสงสัยว่าทำไมยังใช้ Rails ทั้งที่มีทางเลือกมากมายอย่าง Java(Spring), Go, Node การใช้ Rust ก็เป็นตัวเลือกที่แปลกพอ ๆ กับ C++