· 3 min read
Ruby on Rails World 2024
Rails 8 verfolgt einen radikal vereinfachten Ansatz, um die Komplexität moderner Webentwicklung zu reduzieren. Mit dem \#NOBUILD-Prinzip werden CSS und JavaScript ohne Build-Prozesse direkt an den Browser geliefert. Die neuen Technologien Propshaft, Solid Cable und Solid Queue ermöglichen performante Lösungen ohne den Einsatz externer Dienste. Rails will damit die Abhängigkeit von teuren PaaS-Diensten minimieren und setzt auf offene, kostengünstige Alternativen für die Bereitstellung auf eigener Hardware. Gleichzeitig werden leistungsfähige Tools wie Thruster und Kamal 2 eingeführt, die Deployment-Prozesse weiter optimieren. Rails 8 kombiniert bewährte Prinzipien mit innovativen Features, um Entwicklern maximale Flexibilität und Effizienz zu bieten.
Anmerkungen zur Eröffnungsrede der Rails World 2024 von @dhh
Komplexität im Web bekämpfen
- Rails 8 ist veröffentlicht worden
- Rails hat versucht, den neuesten Programmiertrends zu folgen, aber DHH war nie zufrieden mit diesem Ansatz
- Rails 7 und die Einführung von ES6, HTTP2 und Importmaps sorgten wieder für Aufregung
- DHHs Arbeit an HEY ließ ihn erkennen, dass der Ansatz der gesamten Industrie fehlerhaft war
- Rails muss sich nicht an konventionelle Regeln halten
Der #NOBUILD-Ansatz
- HEY hat sich für 100% #NOBUILD entschieden (CSS und JS werden direkt an den Browser ausgeliefert, wie geschrieben)
- 20 Jahre lang wurde behauptet, Rails sei nicht skalierbar.
- @tobi hat sie eines Besseren belehrt: Shopify bedient 1 Million Anfragen pro Sekunde im Jahr 2023
- JS-Minifizierung hat das Web als Lernplattform behindert und spart nur 2-5% Overhead
- Wir sind es dem offenen Web schuldig, View Source zuzulassen
Einfachheit und Fortschritt
- DHH komponiert ein Haiku zu Ehren von Matz: “Fortschritt ist unser Weg, Komplexität baut die Brücke, Einfachheit wartet.”
- Komplexität ist notwendig für den Fortschritt, aber Einfachheit ist das Endziel
- Rails 7 Ethos: verlasse dich auf den Browser
- Browser-Kompatibilität: ( safari: 17.2, chrome: 120, firefox: 121, opera: 106, ie: false )
- Das Ziel ist die Optimierung für unsere begrenzten “Affenhirne”
- Rails zielt darauf ab, die Komplexität von modernen Webanwendungen zu komprimieren
Einsätze: Von HALLO WORLD bis IPO
Aktueller Stand der Einsätze
- Die Branche hat eine Angst vor dem Servermanagement kultiviert
- AWS löste ein spezifisches Problem für Amazons extreme Nutzungsspitzen
- Die meisten Entwickler brauchen keine derart komplexen Lösungen
Kostenvergleich
- Heroku’s Performance M (1 Kern/2 Threads/2.5GB RAM/$250 mo) vs. Hetzner Hobby-Box (48 Kerne/96 Threads/256GB RAM/$220 mo)
- DHH kritisiert den Preisaufschlag bei Diensten wie Vercel (AWS +500% Preisaufschlag)
Die Notwendigkeit von “Generika” im Einsatz
- DHH zieht Parallelen zu medizinischen Patenten, die nach 20 Jahren auslaufen
- Ruft nach Open-Source-Alternativen zu teuren PaaS-Lösungen
Rails 8-Mission: NoBuild, NoPaaS
- Rails zielt darauf ab, den Bedarf an kommerziellen Anbietern für die Produktionsbereitstellung zu eliminieren
- Der Hauptweg: Stellen Sie Ihre Anwendung auf jeder beliebigen Hardware Ihrer Wahl bereit
Linux lernen
- OMAKUB - die bevorzugte Linux-Umgebung der DHH
- Betont die Bedeutung grundlegender Sicherheitsmaßnahmen (z. B. Verweigerung der Passwortauthentifizierung mit SSH)
Rails 8 Eigenschaften
Authentifizierung
- Rails 8 generiert Authentifizierungscode anstatt Devise zu verwenden
- Der generierte Code wird aus den Anwendungen von 37signals extrahiert
Propshaft
- Ersetzt die veraltete ACID-Pipeline
- Einfacher zu verstehen im Vergleich zu Sprockets
- Entwickelt für moderne Browser, die eine direkte Auslieferung des Codes an die Benutzer ermöglichen
Datenbank-Innovationen
- Einführung von “soliden” Adaptern: solid_cable, solid_cache, solid_queue
- Alle laufen über “One Ring” - ein einziges Datenbanksystem (SQLite)
Solid Cable
- Datenbankgestützter Adapter für Action Cable
- Eliminiert den Bedarf an Redis
Solid Cache
- Entstanden aus den Anforderungen von Basecamp
- Unterstützt 10 TB Zwischenspeicher für 60 Tage mit einer Trefferquote von 96 %.
- Unterstützt Verschlüsselung, aufbauend auf Active Record
Solid Queue
- Hochperformantes Auftragsverarbeitungssystem
- Arbeitet mit allen 3 großen DBs
- Unterstützt wiederkehrende Aufträge
- Verarbeitet 20 Millionen Aufträge pro Tag auf HEY
Thruster
- Macht nginx und andere Proxys überflüssig
- Bietet X-Sendfile-Beschleunigung, Cache-Control und GZip-Komprimierung
- In Go geschrieben, fähig zu 60.000 RPS auf einem Laptop
Kamal 2
- Bereitstellungswerkzeug für Rails-Anwendungen
- Verfügt über Auto-SSL durch Let’s Encrypt
- Ermöglicht die Ausführung mehrerer Anwendungen auf einem einzigen Server
- Enthält einen neuen, in Go geschriebenen Proxy
Pläne für die Zukunft
Rails 8.1
- Action Notifier: neues Framework für Web-Push-Benachrichtigungen
- Active Record Search: Alternative zu Elastic Search
- Action Text mit Markdown-Unterstützung (Codename “House MD”)
Kamal 2.1
- Laufende Verbesserungen des Einsatzwerkzeugs
Schlussfolgerung
- Rails 8 bietet #NOBUILD und #NOPAAS Lösungen
- Die erste Beta von Rails 8 wurde am Tag des Vortrags veröffentlicht
- Kamal 2, Solid Queue und andere Features sind jetzt live