FAQ

Was ist Ruby on Rails überhaupt?

"Ruby on Rails", manchmal abgekürzt als "RoR", ist ein Framework für die Entwicklung von Datenbank-basierten Web-Anwendungen, das in der Programmiersprache Ruby geschrieben ist. Es besteht aus einem mächtigen Persistenzlayer ("ActiveRecord"), einer Bibliothek für Verknüpfung von HTTP-Anfragen mit Geschäftslogik ("ActionController") und einer Bibliothek für die Präsentationsschicht ("ActionView"). Darüber hinaus beinhaltet es zahlreiche Konventionen für die Organisation einer Anwendung, inkl. Build- und Deploy-Mechanismen, Unit-, Funktions- und Integrationstests und einer Infrastruktur für die Erweiterung mit Hilfe von Plug-ins. Das Rails-Framework und damit realisierte Anwendungen sind auf allen gängigen Betriebssystemen, Web-Servern und Datenbanken lauffähig.

Was sind die Vorteile von Rails?

Durch den Einsatz des Rails-Frameworks können typische Web-Anwendungen, die eine relationale Datenbank für die Datenhaltung verwenden, enorm schnell entwickelt werden. Im Gegensatz zu vielen anderen Lösungen entsteht dabei - vernünftiges Anwendungsdesign vorausgesetzt - eine Implementierung, die auch auf Dauer wartbar und erweiterbar ist und alle aus anderen Umgebungen bekannten Anforderungen an Testbarkeit, Modularität, Schichtentrennung usw. erfüllt. Durch die hohe Integration sämtlicher Komponenten, die für eine typische Datenbank-basierte Web-Lösung benötigt werden, entfällt der initiale Aufwand für das Aufsetzen einer vollständigen Entwicklungsumgebung. Durch die Ruby-Mechanismen zur Metaprogrammierung kann mit wenig Code, der zudem sehr lesbar ist, sehr viel erreicht werden.

Was sind die Unterschiede zwischen Ruby und anderen Programmiersprachen?

Ruby ist eine dynamische Sprache, d.h. sie erlaubt es, viele Dinge, die bei anderen Sprachen nur zur Entwicklungszeit möglich sind, auch noch zur Laufzeit durchzuführen. Dazu zählt z.B. die dynamische Generierung von Code oder das Nachladen von Code zur Laufzeit. Ruby ist vollständig objektorientiert (ähnlich wie Smalltalk), erlaubt eine enge Integration mit Systemfunktionen (ähnlich wie Perl) und unterstützt zahlreiche funktionale Konzepte (ähnlich wie Scheme oder Lisp). Im Gegensatz zu Sprachen wie C# oder Java ist Ruby eine dynamisch typisierte Sprache. Eine Besonderheit von Ruby ist die ausgefeilte Unterstützung der Metaprogrammierung. Damit kann mit sehr wenig Code, der sich an die Konzepte der jeweiligen Domäne anlehnt, sehr viel erreicht werden.

Ist Rails nur für kleine Anwendungen geeignet?

Nein! Zunächst einmal ist eine Anwendung, die mit Ruby on Rails umgesetzt wird, typischerweise bei gleicher Funktionalität erheblich kleiner (d.h. sie besteht aus wesentlich weniger Dateien mit weniger Codezeilen). Eine Grenze der Übersichtlichkeit wird erheblich später erreicht. Zudem beinhaltet Rails eine ausgezeichnete Unterstützung für REST-basierte Web-Services, über die eine lose Kopplung von einzelnen Komponenten einer größeren Anwendung erreicht werden kann. Unserer Meinung nach begrenzen andere Aspekte, wie z.B. Reibungsverluste in der Kommunikation, die sinnvolle Teamgröße - ebenso wie bei jeder anderen Technologie.

Was ist mit der berühmten 80%-Grenze?

Damit ist in der Regel gemeint, dass sich mit vielgepriesenen Werkzeugen die ersten 80% eines Problems häuft sehr leicht lösen lassen, die letzten 20% aber unverhältnismäßig viel Aufwand erzeugen. Ruby und Ruby on Rails bieten jedoch sämtliche Möglichkeiten einer ausgereiften, Turing-vollständigen Programmiersprache, zahlreiche Bibliotheken, diverse Integrationsmöglichkeiten (s.u.) und - falls alle Stricke reißen - die Möglichkeit zur Erweiterung über in C oder Java implementierte Bibliotheken.

Wir setzen auf die Java-Plattform, daher ist Rails sicher kein Thema für uns. Oder?

Wir setzen Rails auch im Java-Umfeld ein; entweder über die Integrationsmöglichkeiten mit REST oder Web-Services, alternativ über den Einsatz von JRuby. JRuby ist eine Implementierung von Ruby 1.8 auf Basis der Java Virtual Machine (JVM) und ermöglicht eine nahtlose Integration von bestehenden Java-Anwendungen sowie das Deployment in existierende Strukturen (z.B. Application Server).

Wir starten nicht bei Null. Wie kann eine Rails-Anwendung in eine bestehende Anwendungslandschaft integriert werden?

Rails bietet unterschiedliche Möglichkeiten. Aufgrund unserer Erfahrung bei der Integration in großen Anwendungslandschaften empfehlen wir REST (REpresentational State Transfer), d.h. den korrekten Einsatz von HTTP, als Integrationsansatz. Alternativ können Dienste einer bestehenden Service-orientierten Architektur (SOA), die auf Basis von SOAP/WSDL-basierten Web-Services erreicht werden können, problemlos integriert werden. Letztlich bleibt die Möglichkeit einer Integration über JRuby (s.o.).

Wie steht es um die Performance, Skalierbarkeit und Stabilität von Rails-Anwendungen?

Zunächst einmal ist zu sagen, dass die aktuell am häufigsten eingesetzte Ruby-Implementierung eine deutlich schlechtere Performanz aufweist als andere Programmiersprachen. Dem steht jedoch gegenüber, dass in einer typischen Web-Anwendung der Hauptteil der Zeit jedoch für Netzwerk-Verkehr und Datenbank-Interaktion verbraucht wird, nicht für die Abarbeitung der Geschäftslogik. Neuere Ruby-Plattformen (inbesondere JRuby, Rubinius und das noch in Beta befindliche Ruby 1.9) bringen eine erhebliche Performance-Steigerung mit sich.

Rails skaliert über Prozesse, nicht Threads und verwendet eine "Shared Nothing"-Architektur. In einem typischen Deployment-Szenario wird daher ein Web-Server (z.B. Apache oder NGINX) "vorgeschaltet", der eingehende Anfragen an einen Cluster von einzelnen Rails-Prozessen weiterleitet. Durch diesen Mechanismus kann eine höhere Skalierung sehr einfach über das Hinzufügen von weiteren Prozessen auf der gleichen oder zusätzlichen Maschinen erreicht werden.

Wie startet man am besten mit Rails?

Wir legen Ihnen dazu unsere Literaturhinweise nahe. Gleichzeitig verweisen wir auf unsere Vorträge und Seminar sowie unser Trainingsangebot. Terminliche und örtliche Nähe vorausgesetzt freuen wir uns auch, Ihnen Rails selbst vorzuführen - nichts ist überzeugender, als zu sehen, wie jemand in Windeseile aus dem Nichts eine lauffähige Applikation "zaubert".

Weiterführende Informationen

News

11. Dezember 2011 Mit innoQ zur OOP 2012 und 15% sparen

Die OOP ist der Treffpunkt in Europa für Softwarearchitekten und Entscheider. Die OOP 2012 findet vom 23. bis 27. Ja... mehr »

16. November 2011 Von innoQ mitentwickelte Anwendung nimmt an Wettbewerb teil

Das Bundesministerium des Innern (BMI) hat den "Wettbewerb zur verstärkten offenen Nutzung von Daten der öffentlichen... mehr »

Termine

28. Februar 2012 Skalierbare Web-Architekturen von Stefan Tilkov

Für die Entwicklung von Webanwendungen gibt es eine ganze Reihe unterschiedlicher Realisierungsalternativen. Die Ents... mehr »

28. Februar 2012 arc42 - Von der Methode in die Praxis von Phillip Ghadir

arc42 – Der Weg des dynamischen Duos Nutzen im Unternehmen für IT-Portfolio-Management und Entwicklungsprojekte Vor... mehr »

Zu allen News » und Terminen  ».