· 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
Back to Blog

Related Posts

View All Posts »

Ruby 3.3.5 Released

Ruby 3.3.5 wurde veröffentlicht. Das Update behebt kleinere Fehler und wird allen Nutzern empfohlen. Weitere Details sind in den GitHub Release Notes verfügbar.

Leichte Einführung in mruby

Ruby 3.3.5 wurde veröffentlicht. Das Update behebt kleinere Fehler und wird allen Nutzern empfohlen. Weitere Details sind in den GitHub Release Notes verfügbar.

Die Rails Renaissance

Die bevorstehende Veröffentlichung von Rails 8 und die neue Version der Turbo-Bibliothek von Hotwire haben die Begeisterung für das Framework gesteigert. Hotwire, bestehend aus Turbo, Stimulus und Strada, bietet moderne, leistungsstarke Funktionen, die Rails noch attraktiver für Projekte machen. Turbo 8 ermöglicht das schnelle und einfache Laden von responsiven Seiten, ohne JavaScript schreiben zu müssen. Verbesserungen in der automatischen Aktualisierung von Ansichten und DOM-Inhalten machen die Arbeit mit Rails effizienter und steigern die Produktivität.