Ruby on Rails als bestes One Person Framework
Ich konnte in den vergangenen 18 Monaten drei große Technologien testen, in dem ich eine größere Anwendung schrieb - und zwar drei mal in je verschiedenen Sprachen. Die Konstante bei allen Versionen war eine aktuelle Postgres Datenbank.
- Version 1: Python und Django
War der erste Wurf und lief gut. Negativ auffällig war die Datenbank-Performance, die bei einer datengetriebenen Anwendung eben extrem ins Gewicht fällt.
Die Entwicklungszeit betrug rund 9 Monate in der Freizeit.
- Version 2: Groovy und Grails
Während die Java Technologie Plattform bei der Performance und bei der Datenbank Performance sehr überzeugt, war hier das KO der immense Ressourcen-Verbrauch der Anwendung. 20 GB RAM und 6 Cores waren hier für eine mittlere Performance notwendig.
Die Entwicklungszeit betrug rund 6 Monate in der Freizeit.
- Version 3: Ruby on Rails
Ruby on Rails ist performant ohne dabei viele Ressourcen zu benötigen. 4 Cores und 4 GB RAM reichen völlig aus. Die Datenbank-Performance ist nahe an Java dran und die Tool Unterstützung ist hervorragend.
Die Entwicklungszeit betrug rund 3 Monate in der Freizeit.
| Aspekt / Technologie | Python und Django | Groovy and Grails | Ruby on Rails |
|---|---|---|---|
| Performance | ** | ***** | **** |
| LoC <-> Funktionalität | **** | *** | ***** |
| Wartbarkeit | **** | **** | ***** |
| Update Freundlichkeit | **** | * | ***** |
| Ressourcenverbrauch | **** | * | ***** |
| ORM | *** | ***** | **** |
| Entwicklungsdauer | *** | *** | ***** |
| Tooling | *** | ***** | **** |
| Lesbarkeit des Codes | *** | ***** | **** |
| Community- / KI-Support | ***** | * | **** |
Die Tabelle gibt eine gute Übersicht über die verschiedenen Aspekte der Anwendung - je nach Technologie.
Ruby on Rails ist nicht nur gemittelt mein Mittel der Wahl. Und nicht nur als statistischer Kompromiss. Man merkt der Version von Rail 8 an, dass hier mehr als 20 Jahre Erfahrung mit der Entwicklung und dem Betrieb von großen Web-Anwendungen stecken.
Gegen Groovy and Grails sprechen der Ressourcen-Hunger und die nahezu chancenlosen Update-Pfade auf neue Versionen. Auch ist der Support an Tooling, Community und KI eher spärlich. Klar, man kann auch Java-Code verwenden, aber dann kann man auch auch gleich Java und SpringBoot verwenden. Dann hat man aber erhebliche Probleme bei der Time to Market.
Python mit Django haben zwar einen hervorragenden Support durch Community und KI - alleine schon durch die Beliebtheit der Sprache. Aber das etwas sperrige ORM und die allgemeine Datenbank-Performance lassen die Technologie für mich ausscheiden.