1. Speedy Prototyping und Innovation
Die moderne Definition von Erfolg ist die Fähigkeit, sich schnell an ein sich ständig veränderndes Umfeld anzupassen und darauf basierend die richtigen Entscheidungen zu treffen. Das kann bedeuten, eine vorhandene Technologie oder ein Produkt in bestehende Systeme zu integrieren oder es zu wagen, eine innovative Idee umzusetzen und auf den Markt zu bringen. Oder eben nicht.
Je schneller man ausprobiert und testet, desto früher bekommt man ein Gefühl dafür, ob ein Ansatz überhaupt richtig ist. Und genau aus diesem Grund setzen wir auf Hackathons und Code Sprints! Denn: Hackathons und Code Sprints sind der Inbegriff des Speedy Prototyping und fördern Innovationen aktiv. Eine motivierte IT-Crowd hat so die Chance, in nur wenigen Tagen einen Proof of Concept zu erstellen und daraus einen Prototyp zu entwickeln. Schneller geht’s kaum – und der Spaß im Team kommt auch nicht zu kurz.
2. Micro Frontend, Microservices und Containerisation
Ob der Versand von E-Mails, Arbeiten an Creative Boards oder der Gebrauch von sozialen Medien – immer mehr Browser-Nutzungsmöglichkeiten basieren auf Webapplikationen. Diese multifunktionalen Softwaresysteme erfordern meist einen speziellen architektonischen Ansatz, um Zuverlässigkeit, Skalierbarkeit und Wachstumspotenzial zu gewährleisten. Ein System wie ein Puzzle zu behandeln, das aus kleinen, unabhängigen Teilen zusammengesetzt wird, hat sich für solche Architekturen in der Vergangenheit als besonders effizient erwiesen.
Denn jede in sich vollständige Funktion einer Applikation wird so als separater Dienst gesehen und extrahiert, der wiederum über standardisierte Protokolle mit anderen ähnlichen Diensten kommuniziert. Das User Interface des Systems folgt demselben Muster und behandelt die Frontend-Komponenten wie Widgets auf einem Dashboard. Solch ein „Puzzle“ ermöglicht es also, Funktionen parallel und unabhängig voneinander zu entwickeln, ohne gleich das gesamte System in Gefahr zu bringen. Die zugrunde liegende Technologie, die die Voraussetzungen für diese Freiheit schafft, basiert serverseitig auf Docker-Containern und Kubernetes-Clustern sowie Web Components im Frontend.
Das Beste: Ein individueller Ansatz für jede Komponente des Systems ermöglicht es, Ressourcen effizient zu verwalten, produziert Software von besserer Qualität und gewährleistet Zuverlässigkeit sowie Wachstum des Gesamtsystems.
3. Multi-Platform-Apps
Native Apps sind perfekt in ihre jeweilige Plattform integriert, bieten die beste Performance, ein konsistentes User Interface und nutzen alle Features, die zur Verfügung stehen. Soll die App jedoch auf diversen Plattformen angeboten werden, muss jeweils eine eigene native App pro Plattform implementiert werden. Inzwischen haben sich eine Vielzahl von Tools und Anbietern auf dem Markt etabliert, die dem Ansatz „write once, run everywhere“ folgen und versprechen, mit nur einer Codebasis mehrere Plattformen zu bedienen.
Aber Vorsicht: Nicht alle Tools halten, was sie versprechen! Wir haben in den letzten Jahren den Markt beobachtet und genau zwei Tools identifiziert, die wir für unsere Multi-Platform-App-Entwicklung einsetzen und auch unseren Kunden empfehlen.
Georg Dresler, Senior Software Entwickler Mobile, Ray SonoFür die Umsetzung von Apps mit starkem Fokus auf dem User Interface empfehlen wir Flutter. Das Framework von Flutter ist für ein performantes und konsistentes UI optimiert. Die App wird für jede Plattform in nativen Code übersetzt, sodass es im Gegensatz zu anderen Tools keinerlei Performance-Einbußen gibt. Dank des Features „Hot Reload“ sehen die Developer direkt während des Codens Änderungen am UI in Echtzeit – produktiv und optimal für Prototyping.
Unser Favorit neben Flutter ist Kotlin Multiplatform (KMP) – ideal für Apps, die komplexe Businessprozesse und Logiken abbilden sollen. Mit diesem Framework werden Datenmodelle, Logik und Services – wie Persistenz und Netzwerkschicht – einmalig implementiert, getestet und anschließend als native Bibliothek bereitgestellt. Dadurch können Businessprozesse mit allen Plattformen, einschließlich Backend, geteilt werden. Zudem wird das UI nativ eingesetzt, sodass alle Plattform-Features ohne Kompromisse genutzt werden können.
4. Headless CMS
Ein Headless CMS ist ein reines Backend-Content-Management-System (CMS), um Content über entsprechende Schnittstellen für Drittsysteme zugänglich zu machen. Der Ausdruck „Headless“ kommt von der Trennung von Backend und Frontend. Der Fokus des Systems liegt somit auf der Verwaltung und Lieferung von strukturierten Inhalten. Klassische CMS kommen aus einer Zeit, als Redakteure die Möglichkeit haben sollten, Webseiten ohne HTML-Kenntnis zu erstellen. Heute ist es jedoch wichtig, Content nicht nur für eine Website, sondern auch für andere Applikationen zu verwalten.
Bei einem herkömmlichen CMS wird das HTML der Website im Backend gerendert und ausgeliefert. Durch die zentrale Steuerung des Contents für multiple Zielsysteme ist das serverseitige Rendern allerdings nicht mehr ausreichend, da diese nicht zwingend mit HTML-Code umgehen können. Deshalb werden in einem Headless CMS Schnittstellen bereitgestellt, über die der Content in einem leichtgewichtigen, einfach lesbaren und strukturierten Format (meist JSON) bezogen wird.
Ein weiteres Plus: Das Einsparen des serverseitigen Renderings hat eine bedeutende Auswirkung auf die Performance einer Seite!
Auch designseitig hat der Einsatz eines Headless CMS Vorteile: Durch die Entkopplung von Backend und Frontend kann das Frontend ausgetauscht werden, ohne dass sich am Backend-System und dem Content etwas ändern muss.
5. Static Site Generator
In den vergangenen Jahren gab es nur wenige Use Cases für statische Websites, darunter hauptsächlich Microsites oder Landingpages. Doch durch neue Möglichkeiten der Website-Entwicklung erleben statische Seiten eine Renaissance.
Unser favorisiertes Tool dafür: der Static Site Generator. Während des Build-Prozesses generiert ein Static Site Generator eine statische Website. Um die einzelnen Webseiten jeweils mit Inhalt zu füllen, greift er auf verschiedene Datenquellen zurück und erstellt anhand von definierten Templates einzelne HTML-Dateien. Als solche Datenquellen können vor allem API-Services oder ein Headless CMS dienen. Durch automatisierte Pipelines kann die statische Website bei inhaltlichen Änderungen auf den Webserver gespielt werden, wo sie für die User erreichbar ist.
Da es sich bei der generierten Website um fertige HTML-, CSS- und JavaScript-Dateien handelt, die direkt vom Browser verarbeitet werden, muss bei einem Aufruf kein serverseitiger Code ausgeführt werden – wie beispielsweise ressourcenaufwendige Datenbankabfragen.
Statische Systeme und Seiten bringen einige große Vorteile mit sich: Sie haben eine bessere Performance, sind sicherer und sparsamer für unsere Server. Dank des Static Side Generators findet der größte Anteil der Arbeit nicht dann statt, wenn ein Besucher eine Webseite aufruft, sondern erst dann, wenn sich der Inhalt ändert.
Christian Wölk, Senior Software Entwickler Frontend, Ray Sono6. Infrastructure as Code
Der gesamte Erfolg eines Systembetriebs hängt von der Flexibilität und Robustheit der Infrastruktur ab. Früher war das hauptsächlich ein manueller Prozess, der von einem Team von Systemadministratoren gesteuert wurde, die die Server in den Rechenzentren einrichteten. Später – mit der Entwicklung des Cloud-Hostings – änderte sich der Vorgang in Richtung manueller Konfiguration von Tausenden Cloud-Diensten, um das notwendige Gerüst zu schaffen. Die Entwicklung von Hosting-Systemen mündete in einer Lösung: „Infrastructure as Code“.
„Infrastructure as Code“ ermöglicht die Verwaltung der Infrastruktur – zum Beispiel Netzwerke, virtuelle Maschinen, Load Balancer und Verbindungstopologien – in einem beschreibenden Modell. Und das unter Verwendung eines Versionierungssystems, ähnlich dem für Quellcodes.
Mit einer präzisen Beschreibung der Infrastruktur gewinnen Eigentümer ein höheres Vertrauen in das System, das dadurch konsistent und kontrollierbar wird. Bei Skalierung und Notfallwiederherstellungen geht es nun um die Frage der richtigen Definition. Nahezu jeder Cloud-Anbieter hat inzwischen eine eigene Lösung entwickelt (zum Beispiel CloudFormation für AWS, Azure Resource Manager für Microsoft Azure), aber Terraform hat sich über die Jahre als universeller Industriestandard etabliert.
7. Data Science und Data Engineering
Mit einer wachsenden Zahl von Smart Devices und einer Verlagerung auf digitale Services erleben wir die digitale Revolution überall um uns herum. Doch darüber hinaus stehen wir kurz vor einer weiteren Wende: Künstliche Intelligenz und maschinelle Assistenz sind bereits heute wesentliche Bestandteile unseres täglichen Lebens und werden in den nächsten Jahren weitere Bereiche erobern. Das heißt, dass Daten zunehmend an Bedeutung in der Digitalisierung gewinnen. Immer mehr Devices, Autos und Maschinen sind mit Sensoren ausgestattet, die große Mengen an Daten erzeugen und bereitstellen. Und auch Websites und Software werden immer intelligenter: Werbung wird gezielter, digitale Produkte werden stärker personalisiert.
Die Aufgaben in diesem Entwicklungsprozess sind zweigeteilt:
Data Engineering befasst sich mit der Aufbereitung großer Datenmengen sowie der Erstellung von Data Warehouses, der Sicherstellung der Datenintegrität, der Optimierung von Datenpipelines und der Implementierung von trainierten Modellen oder Datenfiltern.
Der eigentliche Wert dieser Daten zeigt sich jedoch erst in der zweiten Aufgabe: Data Science. Mit dem richtigen Toolset für Datenanalyse und Modellierung ist es möglich, echte Business Insights zu gewinnen.
In der Regel handelt es sich bei Data Science um einen zyklischen Prozess, der mit der Untersuchung und dem Preprocessing von Daten beginnt, um ein allgemeines Verständnis zu erlangen. Anschließend können Algorithmen und Modelle geplant und getestet sowie Metriken definiert werden, um letztendlich das Modell für einen spezifischen Anwendungsfall zu optimieren. Dabei ist wichtig, die Fragestellung immer wieder mit den Ergebnissen der Datenanalyse abzugleichen.
Python, R und viele andere Sprachen bieten mittlerweile eine Vielzahl von Frameworks und Modellen für Statistik, maschinelles Lernen oder Deep Learning an. Frameworks wie TensorFlow, scikit, Keras oder PyTorch lassen sich schnell aufsetzen oder an gegebene Probleme anpassen, um Zusammenhänge in den Daten zu finden oder maschinelle Aufgaben umzusetzen, wie beispielsweise Bild- oder Spracherkennung.