5 คะแนน โดย GN⁺ 2025-02-24 | 7 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อไม่นานมานี้ ผู้เขียนได้พบแผ่นเสียงไวนิลเก่าของคุณปู่ และประหลาดใจที่สื่อจากยุคก่อนหน้านี้ยังคงเล่นได้อย่างไม่มีปัญหา
    • ไวนิลได้สร้างการเปลี่ยนแปลงครั้งใหญ่ให้กับการเผยแพร่ดนตรี และทำให้การพิมพ์และการแบ่งปันเป็นไปได้ จนยังคงเป็นมาตรฐานมาถึงปัจจุบัน
    • วิธีการแบ่งปันเสียงได้พัฒนาต่อเนื่อง แต่รูปแบบยุคแรกก็ยังคงใช้งานได้อยู่
    • ท่ามกลางโลกที่ซับซ้อนขึ้น ผู้คนจำนวนมากกำลังหวนกลับไปหาไวนิลที่มอบความเรียบง่าย ความเสถียร และความยั่งยืน
  • ท่ามกลางการเปลี่ยนแปลงอย่างต่อเนื่องของเทคโนโลยีเว็บ เป็นเรื่องง่ายที่จะลืมไปว่าเว็บไซต์เก่า ๆ ก็ยังคงทำงานได้ดีอยู่
    • แม้แต่เว็บไซต์ข้อความเรียบง่ายจากยุค 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 ความคิดเห็น

 
jhj0517 2025-02-24

Airbnb, Shopify, Github มีบริษัทที่ใช้ Ruby on Rails มากกว่าที่คิดจริง ๆ!! 😊

 
thinkpad 2025-02-24

เพิ่งรู้เลยว่า GitHub พัฒนาด้วย Rails ส่วน GitLab นั้นพัฒนาด้วย Rails จริง ๆ... แต่ก็ต้องยอมรับว่า GitLab ใช้ Rails ได้ดีมากจนติดอยู่ในความทรงจำมานานเลยครับ

 
hahnlee 2025-02-24

ในช่วงแรกของ 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

 
thinkpad 2025-02-25

ขอบคุณครับ. :)

 
orange 2025-02-24

เหตุใด Ruby on Rails จึงยังคงสำคัญ — วิธีที่เครื่องมือรุ่นเก่าอยู่รอดในโลกของ Next.js

https://github.blog/engineering/building-github-with-ruby-and-rails/

 
thinkpad 2025-02-24

ขอบคุณครับ

 
GN⁺ 2025-02-24
ความคิดเห็นจาก Hacker News
  • ในตอนนี้ที่มีผู้คนหลายร้อยคนกำลังอ่านบทความนี้อยู่ สิ่งที่พวกคุณเข้าถึงอยู่ก็มาจาก Mac Mini ที่วางอยู่บนโต๊ะทำงานของฉัน

  • ฉันชอบเว็บแอปที่มีแค่ฟอร์ม CRUD เท่านั้น มันใช้ไม่ได้กับทุกปัญหา แต่ใช้ได้ดีมากกับหลายโดเมนปัญหาที่มีปฏิสัมพันธ์กับโลกจริง ในทำนองแบบว่า "ถ้าจะดูว่ามีนัดไหม ก็ไปดูรายชื่อนัด"

    • ในอีกด้านหนึ่ง แพตเทิร์นแบบ "แอป" ที่ผสมเข้ากับปฏิทินรวมศูนย์หรือแดชบอร์ดก็มีประโยชน์เช่นกัน และทั้งหมดนี้ก็สร้างบน Rails ได้ แต่ความเรียบง่ายของแอป CRUD นั้นมีเสน่ห์
    • จะสร้างด้วยสไตล์ไหนหรือเทคโนโลยีอะไรก็ได้ตามต้องการ แต่ Rails ดูจะชอบแนวทางแบบ "1 model = 1 แนวคิด = 1 REST entity"
    • ไลบรารีอย่าง Next.js ดูจะชอบแนวทางแบบ "1 งาน/วิว = แนวคิดที่ผสมกัน = 1 หน้าจอเฉพาะ"
  • สิ่งที่แปลกเกี่ยวกับชุมชน Ruby/Rails คือครึ่งหนึ่งเหมือนจะก้มหน้าก้มตาทำงานเงียบ ๆ ส่วนอีกครึ่งเหมือนต้องคอยยืนยันเป็นระยะว่า Rails ยังไม่ตาย

    • ไม่ใช่ทุกอย่างจะต้องใช้ AI
  • Rails กำลังเริ่มแสดงอายุของมันในกระแสแอปพลิเคชัน AI กำลังลำบากกับการสตรีมข้อความจาก LLM และการประมวลผลแบบขนาน

    • จากประสบการณ์ของฉัน มันทำงานได้ง่ายมากเมื่อใช้ร่วมกับ Hotwire ตอนนี้กำลังรันอินเทอร์เฟซแชตเอเจนต์แบบสตรีมมิงบนแอป Rails ที่มีผู้ใช้หลายพันคนโดยไม่มีปัญหา
  • ขอแนะนำ Django + gevent ใช้ type system ของ Python และเหมาะกับการสตรีมและการประมวลผลแบบขนานที่ติดข้อจำกัดด้าน IO มันไม่เหมาะกับงานขนานที่ติดข้อจำกัดด้าน CPU แต่สำหรับเว็บแอปพลิเคชันแล้วเรื่องนี้สำคัญน้อยกว่า

  • สามารถสร้างและดูแล meta web framework แบบ RoR ได้ด้วย Ruby, Django และภาษา D

    • Go และ Rust เป็นภาษาที่น่าทึ่ง แต่ก็สงสัยว่าทำไมถึงสร้างเฟรมเวิร์กแบบ Rails ไม่ได้ สงสัยว่าเมื่อเวลาผ่านไปจะทำได้ไหม หรือมีปัญหาเชิงพื้นฐานอยู่
  • RoR ทรงพลังมาก แต่ทุกอย่างเปลี่ยนเร็วเกินไปจนรู้สึกว่าถ้าไม่ตามเทคโนโลยีล่าสุดก็จะถูกทิ้งไว้ข้างหลัง

  • เคยได้ยินคำวิจารณ์ว่าเครื่องมือเขียนโค้ด AI ขาดเรื่อง strong typing แต่จากประสบการณ์ของฉัน LLM ทำงานกับโค้ดเบส Rails ได้ดี

    • Rails มี convention ที่แข็งแรงมาก ทำให้ LLM เรียนรู้ได้ดีแม้ไม่มีข้อมูล type และแกนหลักของ Rails ก็แทบไม่เปลี่ยนไปมากตลอดเวลา
  • ฉันกำลังใช้ Django และทุกอย่างให้ความรู้สึกสดใหม่ ใช้ htmx + alpine.js เพื่อส่ง HTML อยู่ และเมื่อออกจาก JSON REST API แล้ว ประสิทธิภาพในการทำงานก็ดีขึ้นมาก

  • RoR ยอดเยี่ยมมาก ส่วน Ruby เองควรเติบโตไปได้ไกลกว่านั้น

    • ฉันเคยทำงานที่บริษัทซึ่งต้องเลือกระหว่างการเขียนแอป Django ใหม่ด้วย Python 3 หรือเขียนใหม่ด้วย RoR และบริษัทนั้นเลือกอย่างหลัง หลายแนวคิดที่เข้ามาใน Django เริ่มต้นมาจาก RoR
    • ในด้านอื่น ๆ ที่มี Python อยู่ Ruby ก็จำเป็นต้องมีนวัตกรรมด้วย เช่น scientific computing, machine learning/AI, data analysis เป็นต้น ต้องมีการยอมรับ Ruby ในแบบเดียวกับที่ Rails ได้รับ
  • ในช่วงทศวรรษ 2010 แนวทางที่ให้ convention มาก่อน configuration ได้รับความนิยม

    • Angular, EmberJS, Django, Rails ได้รับความนิยมอย่างมาก
    • สแตกสมัยใหม่ย้ายไปสู่แบ็กเอนด์แบบปรับแต่งเองอย่าง React/NextJS
    • สงสัยว่า NextJS เป็นแนวทางแบบ "convention over configuration" ที่เหมาะสมที่สุดสำหรับ React หรือไม่