© Pushkin/Shutterstock.com
RedwoodJS: Bringing Full Stack to the JAMstack – Teil 1

Einstieg in das Full-Stack-Framework


Wie kann ein Technologiestack für eine moderne Webapplikation aussehen? React im Frontend, GraphQL für die Kommunikation zwischen Frontend und Backend, ein Serverless-Backend auf Basis von Node.js, die Datenbankabstraktion erfolgt über Prisma und die Datenbank selbst ist relativ frei wählbar. Deployt wird die Applikation in einem solchen Set-up im Idealfall weitestgehend automatisiert und auf Basis des Versionskontrollsystems. Klingt das interessant? Dann ist Redwood vielleicht genau das Richtige für Sie.

Redwood ist ein relativ junges Framework, das auf den eben beschriebenen Stack setzt und dabei auch noch zahlreiche Probleme des Entwickleralltags löst. Dabei versprechen die Autoren des Frameworks, dass Sie bei der Entwicklung von Applikationen deutlich leichtgewichtiger und schneller unterwegs sind, wenn Sie auf Redwood setzen, anstatt auf die gleichen Technologien ohne das Framework. Was genau dahinter steckt, sehen wir im Verlauf dieses Artikels. An dieser Stelle noch eine kleine Vorwarnung: Redwood befindet sich noch in einem frühen Stadium der Entwicklung, worauf auch die aktuelle Versionsnummer 0.x hindeutet [1]. Redwood setzt zwar auf stabile und etablierte Bibliotheken, dennoch müssen Sie in den nächsten Wochen und Monaten bis zur Version 1 mit einigen Änderungen rechnen. Ich rate Ihnen also an dieser Stelle noch von einem Produktivbetrieb in einer größeren Applikation ab.

Die Idee hinter Redwood

In der Dokumentation gibt Tom Preston-Werner, einer der Initiatoren des Projekts und nebenbei auch Mitbegründer von GitHub und zahlreichen anderen Projekten, eine schöne Erklärung, warum das Framework den Namen Redwood trägt. Der Begriff Redwood bezieht sich auf die majestätischen Mammutbäume, die in Toms Heimatstaat Kalifornien wachsen [2]:

  • Redwoods sind als junge Bäume majestätisch und schön anzusehen und ebenso, wenn sie ausgewachsen sind. Auch für eine Redwood-Applikation gilt: Egal ob es sich um einen schnellen Prototyp handelt oder eine große Applikation, der Quellcode ist sauber und die Applikation ist so strukturiert, dass man sich sofort zurechtfindet.

  • Für die Größe eines solchen Baums sind seine Zapfen erstaunlich klein. Gleichsam ist es das Ziel der Redwood-Entwickler, mit möglichst wenig Code möglichst viel zu erreichen – so wie aus einem winzigen Samen die größten Bäume der Welt wachsen können.

  • Die Bäume können den in Kalifornien häufig auftretenden Waldbränden widerstehen. Übertragen auf eine JavaScript-Applikation bedeutet das, dass sie fehlertolerant und ausfallsicher ist.

  • Aus der Ferne gesehen ist ein Redwood-Baum ein komplexes Gebilde, bei genauerem Hinsehen basiert er jedoch auf einer einfachen Struktur von Verzweigungen. Das Redwood Framework bietet vordefinierte Strukturen für eine Applikation, die es ihr erlauben zu wachsen. Diese Strukturen sorgen dafür, dass die Architektur geordnet bleibt und die Übersicht nicht verloren geht.

Ein JavaScript Framework mit den größten Bäumen der Welt zu vergleichen, erscheint zunächst als wenig angebracht, vor allem, wenn man die Tatsache betrachtet, dass Redwood noch nicht einmal die Version 1.0 erreicht hat. Dennoch basiert Redwood auf einigen Ideen, die einen solchen Vergleich zumindest ansatzweise rechtfertigen:

  • Redwood ist ein Full-Stack-Framework: Es bedient sich aus etablierten Lösungen, um die Probleme der Entwicklung von Webapplikationen von einem Ende bis zum anderen, von der Datenbank bis zur grafischen Oberfläche zu lösen.

  • Redwood ist opinionated: Schon bei der Erstellung einer neuen Applikation werden bestimmte Datei- und Verzeichnisstrukturen vorgegeben. Auch die Organisation des Quellcodes während der Entwicklung folgt einem bestimmten Muster. Die Idee dahinter ist, dass ein Entwickler, der Redwood beherrscht, ohne große Einarbeitung zwischen verschiedenen Applikationen wechseln kann und überall dieselben Strukturen vorfindet.

  • Redwood nutzt etablierte Standards: Die Entwickler haben sich für eine Sammlung moderner, aber dennoch etablierter Technologien und Bibliotheken entschieden. Damit ist sichergestellt, dass die Entwickler einer Redwood-Applikation nicht nur auf die Redwood-Community selbst, sondern auf eine noch viel größere Community der verschiedenen Werkzeuge zurückgreifen können.

  • Redwood löst konkrete Probleme: Ein Framework kann nicht alle Probleme der Welt lösen. Das ist auch nicht der Anspruch von Redwood. Stattdessen adressiert es Probleme, die in der Webentwicklung häufig auftreten. So bietet Redwood beispielsweise ein Scaffolding-Feature, mit dem eine komplette Verwaltungsstruktur für Daten erzeugt werden kann, ohne dass Sie selbst viel Code schreiben müssen.

Redwood gibt das Versprechen, dass es Full Stack in den JAMstack bringt. Aber was bedeutet das für Entwickler? JAMstack steht für JavaScript, APIs und Markdown. Alle statischen Inhalte wie Seiten und Ressourcen werden über ein CDN ausgeliefert. Dynamische Inhalte werden idealerweise über Cloud Services, wie beispielsweise AWS Lambda, bei Bedarf bereitgestellt. Eine solche Architektur gewährleistet eine gleichbleibend gute Performance, auch wenn die Benutzeranzahl deutlich steigt. Gleichzeitig ist jedoch auch ein Downscaling möglich, wenn die Infrastruktur wenig unter Last steht, um die Kosten zu kontrollieren. Das Deployment einer Redwood-Applikation erfolgt automatisiert und wird über das Versionskontrollsystem gesteuert. So führt ein Push in den Master Branch zu einem Deployment der Applikation. Sämtliche dieser Aspekte sind für sich gesehen weder spektakulär noch wirklich neu. Redwood bereitet die Infrastruktur jedoch soweit vor, dass Ihnen als Entwickler kaum Aufwand daraus entsteht.

Redwood – unter der Haube

Zu Beginn der Entwicklung einer Applikation steht man normalerweise vor der Entscheidung, welche generelle Architektur umgesetzt werden soll. Bei einer Webapplikation ist das eine traditionelle Client-Server-Architektur. Clientseitig kommt meist eines der drei großen JavaScript Frameworks, also Angular, React oder Vue, zum Einsatz, hier sind die Möglichkeiten noch limitiert. Spannend wird es auf der Serverseite. Hier kann man aus einer Vielzahl von Programmiersprachen und den darauf aufbauenden Frameworks wählen. Auch die Schnittstelle zwischen Client und Server muss definiert werden. An dieser Stelle ist es möglich, neben der offensichtlichen Wahl einer REST-Schnittstelle auch auf Alternativen wie SOAP oder GraphQL zurückzugreifen.

Setzt man auf Redwood, nimmt das Framework dem Nutzer all diese Entscheidungen ab und bereitet alle Bausteine bereits so weit vor, dass man direkt mit der Entwicklung starten kann. Im Frontend setzt Redwood auf React und definiert hier Konventionen, die wir uns gleich noch genauer ansehen werden. Anforderungen, die React nicht oder nur ungenügend abdeckt, wie beispielsweise die Implementierung von Formularen, löst Redwood über zusätzliche Bibliotheken, wie in diesem Fall über r...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang