เหตุใด Ruby on Rails จึงยังสำคัญอยู่ - เครื่องมือเก่าอยู่รอดได้อย่างไรในโลกของ Next.js
(contraption.co)- เมื่อไม่นานมานี้ ผู้เขียนได้พบแผ่นเสียงไวนิลเก่าของคุณปู่ และประหลาดใจที่สื่อจากยุคก่อนหน้านี้ยังคงเล่นได้อย่างไม่มีปัญหา
- ไวนิลได้สร้างการเปลี่ยนแปลงครั้งใหญ่ให้กับการเผยแพร่ดนตรี และทำให้การพิมพ์และการแบ่งปันเป็นไปได้ จนยังคงเป็นมาตรฐานมาถึงปัจจุบัน
- วิธีการแบ่งปันเสียงได้พัฒนาต่อเนื่อง แต่รูปแบบยุคแรกก็ยังคงใช้งานได้อยู่
- ท่ามกลางโลกที่ซับซ้อนขึ้น ผู้คนจำนวนมากกำลังหวนกลับไปหาไวนิลที่มอบความเรียบง่าย ความเสถียร และความยั่งยืน
- ท่ามกลางการเปลี่ยนแปลงอย่างต่อเนื่องของเทคโนโลยีเว็บ เป็นเรื่องง่ายที่จะลืมไปว่าเว็บไซต์เก่า ๆ ก็ยังคงทำงานได้ดีอยู่
- แม้แต่เว็บไซต์ข้อความเรียบง่ายจากยุค 1990 ก็ยังโหลดบนเบราว์เซอร์สมัยใหม่ได้เหมือนเดิม
- เว็บไซต์ได้เพิ่มความสามารถต่าง ๆ ตามกาลเวลา เช่น การจัดสไตล์ผ่าน CSS, ปฏิสัมพันธ์ผ่าน JavaScript, และการอัปเดตแบบเรียลไทม์ผ่านเว็บซ็อกเก็ต
- อย่างไรก็ตาม รากฐานของมันก็ยังคงอยู่บนหน้าเพจ ฟอร์ม และเซสชัน
- Ruby on Rails ปรากฏขึ้นเมื่อ 20 ปีก่อน ในฐานะแนวทางแบบบูรณาการสำหรับการสร้างเว็บแอปพลิเคชันแบบอินเทอร์แอ็กทีฟที่ขับเคลื่อนด้วยฐานข้อมูล
- มันเป็นรากฐานของบริษัทที่ประสบความสำเร็จจำนวนมาก เช่น Airbnb, Shopify, Github, Instacart, Gusto และ Square และปัจจุบันมีธุรกิจมูลค่าหลายล้านล้านดอลลาร์ที่รันอยู่บน Ruby on Rails
- เครื่องมือที่มีประสิทธิภาพจะทำให้งานซับซ้อนง่ายขึ้นผ่านการทำ abstraction
- หากยกตัวอย่างรถยนต์ การขับรถเคยต้องอาศัยความเข้าใจเกี่ยวกับระบบเชื้อเพลิง จังหวะการทำงาน และกลไกคลัตช์ แต่ตอนนี้ผู้ขับส่วนใหญ่แทบไม่รู้ด้วยซ้ำว่ารถของตัวเองมีกี่เกียร์
- Ruby on Rails ได้แพ็กแนวปฏิบัติที่ดีของการพัฒนาเว็บ เช่น login session, การป้องกัน CSRF และ database ORM ให้เป็นชุดเครื่องมือที่เข้าถึงได้ง่าย
- abstraction เหล่านี้ช่วยให้นักพัฒนามุ่งเน้นไปที่การสร้างผลิตภัณฑ์ มากกว่ารายละเอียดทางเทคนิค
- ทุกวันนี้ นักพัฒนาส่วนใหญ่ไม่รู้ด้วยซ้ำว่าใน login cookie มีอะไรอยู่ แต่สิ่งนั้นก็ยังขับเคลื่อนแอปพลิเคชันอยู่
- Rails ประสบความสำเร็จจากการยึดมั่นในองค์ประกอบพื้นฐานของเว็บ
- มันใช้องค์ประกอบพื้นฐานของ HTML เช่น หน้าเพจ ช่องกรอกข้อมูล และฟอร์ม
- ในฐานะเฟรมเวิร์กที่เน้นฝั่งแบ็กเอนด์ มันจึงมุ่งที่การตรวจสอบข้อมูล การประมวลผล และการจัดเก็บ ทำให้การสร้างฟอร์มเป็นเรื่องง่าย
- JavaScript เริ่มโดดเด่นขึ้นหลังจากความสำเร็จในช่วงแรกของ Rails
- ความก้าวหน้าของการพัฒนาเว็บในช่วง 10 ปีที่ผ่านมา โดยพื้นฐานแล้วคือการเพิ่มความสามารถระดับแอป iPhone ให้กับเว็บไซต์ ขณะที่มันก็ยังคงเป็นเว็บไซต์อยู่
- ตอนนี้ Next.js ถูกใช้เป็นเครื่องมือที่พบได้บ่อยที่สุดสำหรับการสร้างสตาร์ตอัป
- ในฐานะเฟรมเวิร์กที่เน้นฟรอนต์เอนด์ มันทำให้สามารถมีสถานะการโหลดแบบไดนามิก, server-side rendering และการสร้างคอมโพเนนต์ที่ซับซ้อนได้
- มีบริษัทมูลค่าหลายล้านล้านดอลลาร์อีกรุ่นหนึ่งที่ถูกสร้างขึ้นบน Next.js และเว็บแอปเหล่านี้ก็เร็วและซับซ้อนกว่าสิ่งที่สร้างด้วย Ruby on Rails
- Next.js และเทคโนโลยีฐานของมันอย่าง React กำลังขับเคลื่อนนวัตกรรมเว็บสมัยใหม่จำนวนมาก
- โดยพื้นฐานแล้ว ผลิตภัณฑ์ผู้บริโภคกระแสหลักอย่าง Spotify, Netflix, Facebook และ Stripe ต่างก็ทำงานอยู่บนสแตกนี้
- สิ่งนี้ช่วยให้นักพัฒนาสร้างผลิตภัณฑ์เชิงโต้ตอบที่รวดเร็วและปรับแต่งได้ เกินกว่าข้อจำกัดของมาตรฐานเว็บ
- แม้ Next.js จะถูกนำไปใช้อย่างรวดเร็ว แต่ Rails ก็ยังคงรักษาความเกี่ยวข้องไว้ได้
- ตั้งแต่โปรเจกต์อิสระไปจนถึงบริษัท AI โปรเจกต์ใหม่ ๆ ก็ยังคงเลือก Rails อยู่
- ที่จริงแล้ว คลื่นของ JavaScript web framework รุ่นใหม่อย่าง Next.js ทำให้การสร้างเว็บแอปยากขึ้น
- เครื่องมือเหล่านี้มอบความสามารถมากขึ้นให้นักพัฒนา เช่น การเรนเดอร์ข้อมูลแบบไดนามิกและปฏิสัมพันธ์แบบเรียลไทม์ แต่สิ่งที่ต้องแลกมาคือระดับ abstraction ที่ลดลง
- Next.js กำลังแข่งขันกับแอป iPhone แบบเนทีฟโดยตรง
- ก่อนหน้านี้ หากสตาร์ตอัปต้องการประสบการณ์ผู้ใช้ที่ประณีต ก็จำเป็นต้องมีแอป iPhone และการสร้างแอป iPhone ก็มักเป็นกระบวนการซับซ้อนที่ต้องใช้นักพัฒนาเฉพาะทางหลายคน
- Next.js ทำให้เว็บไซต์เข้าใกล้คุณภาพระดับแอป iPhone ได้
- ปัจจุบัน ผลิตภัณฑ์ที่ซับซ้อนที่สุดบางตัว เช่น Linear และ ChatGPT ได้เปิดตัวในรูปแบบแอปพลิเคชัน Next.js โดยให้ความสำคัญกับแอปมือถือเป็นลำดับรอง
- ตลอด 20 ปีนับจากเปิดตัว Rails ได้พัฒนาตัวเองโดยเพิ่มปฏิสัมพันธ์ด้วย JavaScript, การจัดการงานฝั่งแบ็กเอนด์, สถานะการโหลด, เครื่องมือสำหรับแอปพลิเคชันแบบเรียลไทม์ และอื่น ๆ
- รวมถึงรองรับการพัฒนาแอปมือถือด้วย เมื่อรูปแบบของแอปพลิเคชันพัฒนาไป Rails ก็ได้ผสานรูปแบบเหล่านี้เข้ามาเป็นความสามารถของเฟรมเวิร์ก โดยยังคงรักษารากฐานแบบ HTML เอาไว้
- เว็บแอปพลิเคชันส่วนใหญ่ยังคงประกอบด้วยฟอร์มบนหน้าเพจ
- เช่น กระดานประกาศรับสมัครงาน ระบบผู้ขาย และร้านค้าอีคอมเมิร์ซ
- Next.js ก็สร้างสิ่งเหล่านี้ได้ แต่ต้องใช้เวลาในการพัฒนาเพิ่มขึ้นเมื่อเทียบกับ Rails
- การใช้เฟรมเวิร์กระดับล้ำสมัยมักนำไปสู่ความไม่เสถียรจากการอัปเดตบ่อย ไลบรารีใหม่ และปัญหาที่คาดไม่ถึง
- แอปพลิเคชัน Next.js มักพึ่งพาบริการ third-party จำนวนมาก เช่น Vercel, Resend และ Temporal ทำให้ความเสี่ยงด้านแพลตฟอร์มเพิ่มขึ้น
- นักพัฒนายังคงเลือก Rails ในปัจจุบัน เพราะแม้เวลาจะผ่านไป 20 ปี มันก็ยังเป็นวิธีที่เรียบง่ายและมี abstraction สูงที่สุดในการสร้างเว็บแอปพลิเคชัน
- นักพัฒนาเดี่ยวสามารถสร้างเว็บแอปแบบไดนามิกและเรียลไทม์ได้ด้วยตัวเอง ขณะที่ทีมองค์กรสามารถสร้างแอปพลิเคชันที่มีหลายโมเดลและการควบคุมสิทธิ์การเข้าถึง พร้อมรองรับการทดสอบอย่างเข้มงวด
- Rails ช่วยให้ทีมขนาดเล็กทำงานได้เร็วขึ้น พร้อมลดต้นทุนการพัฒนาและการบำรุงรักษา
- ผู้เขียนมีประสบการณ์ใช้ทั้งสองเฟรมเวิร์ก
- เขาได้สร้าง Find AI ซึ่งเป็น AI สตาร์ตอัปที่ได้รับเงินทุนจาก venture capital ด้วย Rails
- ในฐานะเสิร์ชเอนจิน มันได้รับประโยชน์จากความสามารถของ Rails ในการจัดการงานฝั่งแบ็กเอนด์ที่ซับซ้อนควบคู่กับความต้องการฝั่งฟรอนต์เอนด์ที่เรียบง่าย
- ปัจจุบันเขากำลังทำงานกับ Chroma Cloud สำหรับการสำรวจและจัดการชุดข้อมูลขนาดใหญ่ โดย Next.js ตอบโจทย์ความต้องการด้านปฏิสัมพันธ์ขั้นสูงและการโหลดข้อมูล
- Rails เริ่มแสดงสัญญาณของความเก่าในคลื่นของแอปพลิเคชันที่ขับเคลื่อนด้วย AI ในปัจจุบัน
- มันเผชิญความยากลำบากในด้านต่าง ๆ เช่น การสตรีมข้อความของ LLM (large language model), การประมวลผลแบบขนานของ Ruby และการรองรับ type ที่แข็งแรงสำหรับเครื่องมือเขียนโค้ด AI
- ถึงอย่างนั้น มันก็ยังคงเป็นเครื่องมือที่มีประสิทธิภาพ
- ไวนิลได้ขยายการเข้าถึงของดนตรีและเปลี่ยนอุตสาหกรรม
- เมื่อเวลาผ่านไป คุณภาพเสียงดีขึ้น แต่รูปแบบยุคแรกก็ยังคงมีคุณค่า
- The Köln Concert ยังคงได้รับความนิยมโดยไม่ขึ้นกับบิตเรต
- ในโลกเทคโนโลยีก็เช่นกัน เราสามารถเพลิดเพลินกับผลิตภัณฑ์ที่ประณีตอย่าง Linear ไปพร้อมกับที่เว็บไซต์สไตล์ยุค 90 ของ Craigslist อาจยังสร้างรายได้มากกว่าได้
- ท้ายที่สุดแล้ว ผู้ใช้สนใจประโยชน์ใช้สอยของผลิตภัณฑ์มากกว่าว่ามันถูกสร้างขึ้นอย่างไร
- ความประณีตภายนอกอาจเลือนหายไป แต่ประโยชน์ใช้สอยจะคงอยู่
7 ความคิดเห็น
Airbnb, Shopify, Github มีบริษัทที่ใช้ Ruby on Rails มากกว่าที่คิดจริง ๆ!! 😊
เพิ่งรู้เลยว่า GitHub พัฒนาด้วย Rails ส่วน GitLab นั้นพัฒนาด้วย Rails จริง ๆ... แต่ก็ต้องยอมรับว่า GitLab ใช้ Rails ได้ดีมากจนติดอยู่ในความทรงจำมานานเลยครับ
ในช่วงแรกของ GitHub พวกเขาสร้างเครือข่ายโดยมีชุมชน Rails เป็นศูนย์กลาง
https://read.first1000.co/p/-github
เป็นอีกกรณีหนึ่งที่ค่อนข้างต่างออกไป แต่เคยมีเหตุการณ์ที่ Egor Homakov ชี้ประเด็นช่องโหว่ด้านความปลอดภัยของ Ruby on Rails (Mass Assignment Vulnerability) ขึ้นมา ตอนนั้นมีการถกเถียงกันว่าควรแพตช์เรื่องนี้หรือไม่ เพราะเป็นปัญหาที่นักพัฒนาสามารถหลีกเลี่ยงได้หากระมัดระวังพอ (พูดแบบ RTFM ก็ได้เหมือนกัน)
วิธีที่ Egor Homakov เลือกใช้ในการรายงานเรื่องนี้ คือโจมตี GitHub ซึ่งในเวลานั้นทั้งรันด้วย Rails และแม้กระทั่งเป็นที่โฮสต์ของ Rails เสียเอง และเขาก็ทำสำเร็จจริง
ดังนั้นมันจึงแสดงให้เห็นว่า แม้แต่แอป Rails ที่ใหญ่ที่สุดก็ไม่ได้รอดพ้นจากกรณีนี้
ผมคิดว่านี่เป็นการเลือกระหว่างจะเชื่อนักพัฒนาหรือไม่ (การจัดการหน่วยความจำด้วยมือ) กับไม่เชื่อ (เช่น GC เป็นต้น) แต่เวลาผมเจอคำตอบแบบ RTFM หรือในประเด็นความปลอดภัยที่บอกว่า "รู้อยู่แล้วก็ทำให้ดีสิ" ผมก็มักจะนึกถึงเรื่องนี้ขึ้นมา
https://news.ycombinator.com/item?id=3666564
ขอบคุณครับ. :)
เหตุใด Ruby on Rails จึงยังคงสำคัญ — วิธีที่เครื่องมือรุ่นเก่าอยู่รอดในโลกของ Next.js
https://github.blog/engineering/building-github-with-ruby-and-rails/
ขอบคุณครับ
ความคิดเห็นจาก Hacker News
ในตอนนี้ที่มีผู้คนหลายร้อยคนกำลังอ่านบทความนี้อยู่ สิ่งที่พวกคุณเข้าถึงอยู่ก็มาจาก Mac Mini ที่วางอยู่บนโต๊ะทำงานของฉัน
ฉันชอบเว็บแอปที่มีแค่ฟอร์ม CRUD เท่านั้น มันใช้ไม่ได้กับทุกปัญหา แต่ใช้ได้ดีมากกับหลายโดเมนปัญหาที่มีปฏิสัมพันธ์กับโลกจริง ในทำนองแบบว่า "ถ้าจะดูว่ามีนัดไหม ก็ไปดูรายชื่อนัด"
สิ่งที่แปลกเกี่ยวกับชุมชน Ruby/Rails คือครึ่งหนึ่งเหมือนจะก้มหน้าก้มตาทำงานเงียบ ๆ ส่วนอีกครึ่งเหมือนต้องคอยยืนยันเป็นระยะว่า Rails ยังไม่ตาย
Rails กำลังเริ่มแสดงอายุของมันในกระแสแอปพลิเคชัน AI กำลังลำบากกับการสตรีมข้อความจาก LLM และการประมวลผลแบบขนาน
ขอแนะนำ Django + gevent ใช้ type system ของ Python และเหมาะกับการสตรีมและการประมวลผลแบบขนานที่ติดข้อจำกัดด้าน IO มันไม่เหมาะกับงานขนานที่ติดข้อจำกัดด้าน CPU แต่สำหรับเว็บแอปพลิเคชันแล้วเรื่องนี้สำคัญน้อยกว่า
สามารถสร้างและดูแล meta web framework แบบ RoR ได้ด้วย Ruby, Django และภาษา D
RoR ทรงพลังมาก แต่ทุกอย่างเปลี่ยนเร็วเกินไปจนรู้สึกว่าถ้าไม่ตามเทคโนโลยีล่าสุดก็จะถูกทิ้งไว้ข้างหลัง
เคยได้ยินคำวิจารณ์ว่าเครื่องมือเขียนโค้ด AI ขาดเรื่อง strong typing แต่จากประสบการณ์ของฉัน LLM ทำงานกับโค้ดเบส Rails ได้ดี
ฉันกำลังใช้ Django และทุกอย่างให้ความรู้สึกสดใหม่ ใช้ htmx + alpine.js เพื่อส่ง HTML อยู่ และเมื่อออกจาก JSON REST API แล้ว ประสิทธิภาพในการทำงานก็ดีขึ้นมาก
RoR ยอดเยี่ยมมาก ส่วน Ruby เองควรเติบโตไปได้ไกลกว่านั้น
ในช่วงทศวรรษ 2010 แนวทางที่ให้ convention มาก่อน configuration ได้รับความนิยม