Wir stellen Technologien und Tools vor, die uns im Jahr 2021 überzeugt haben.
- Autor
- David Roth
- Datum
- 23. Dezember 2021
- Lesedauer
- 3 Minuten
Getreu unseren Leitmotiven #Discover #TeamUp und #DoItRight sind wir als Team stets auf der Suche nach neuen Tools, Frameworks und Technologien, um uns persönlich und unsere Projekte weiterzubringen. Und auch im Jahr 2021 haben unsere Entwicklerteams wieder viele interessante, spannende Themen evaluiert und diese auch erfolgreich in zahlreichen Projekten eingesetzt. In diesem Blog-Post möchte ich euch darüber einen kurzen Überblick geben.
Cloud & DevOps
„Infrastructure as code“ mit Pulumi
Bei Fusonic setzten wir schon seit einigen Jahren auf „Infrastructure as Code“ (IaC). Durch den Einsatz von IaC wird die benötigte Cloud-Infrastruktur nicht mehr manuell und fehleranfällig über das User-Interface des Cloud-Anbieters konfiguriert. Stattdessen wird die Infrastruktur mittels Code im Source-Code-Repository beschrieben und in der CI/CD-Pipeline automatisiert erstellt beziehungsweise aktualisiert. Das bringt viele Vorteile in Bereichen wie Sicherheit, Wiederverwendbarkeit, Geschwindigkeit und Flexibilität.
Bisher setzten wir auf Terraform von HashiCorp. Aufgrund von einigen Nachteilen sind wir Anfang 2021 auf Pulumi, dem neuen Star unter den IaC-Tools, umgestiegen.
Pulumi setzt, im Gegensatz zu Terraform, anstelle einer eigenen domänenspezifischen Konfigurationssprache auf die Verwendung von echten Programmiersprachen. So erlaubt Pulumi, die Cloud-Infrastruktur mittels Typescript, Go, C# und Python zu definieren. Ein großer Vorteil gegenüber HCL, da wir so den vollen Funktionsumfang der jeweiligen Programmiersprache inklusive Entwicklungsumgebungen, Tooling, Ökosystem und vielem mehr verwenden können. Wir sind mittlerweile so stark von Pulumi überzeugt, dass wir es als neuen Standard für unsere Teams definiert haben und zukünftig alle neuen Cloud-Projekte mittels Pulumi erstellen möchten.
Road to Kubernetes
Container sind in der modernen Softwareentwicklung nicht mehr wegzudenken. Und so setzen wir schon seit 2015 auf den konsequenten Einsatz von Docker zur Verteilung unserer Anwendungen. Für die Container-Orchestration nutzen wir bislang Docker Swarm, welches als fixer Bestandteil von Docker ausgeliefert wird. Und auch wenn wir Swarm einige Jahre lang erfolgreich eingesetzt hatten, wussten wir schon länger, dass wir irgendwann auf den König der Container-Orchestrierung zurückgreifen wollten: Kubernetes.
Kubernetes, auch bekannt als K8s, ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Es ist mittlerweile sowas wie ein Industriestandard in diesem Bereich geworden und wird von allen großen IT-Konzernen und Startups eingesetzt. Nach einer intensiven Evaluierung haben uns die Vorteile gegenüber Docker Swarm am Ende klar überzeugt. Und so haben wir bereits den ersten Kubernetes-Cluster auf Basis von „Amazon EKS“ (Elastic Container Service) im Betrieb, welcher als Plattform für mehrere Fusonic- und Kunden-Apps dient. Im nächsten Jahr wollen wir weitere Kundenprojekte auf Kubernetes umziehen, um so von dem großen Ökosystem, der erhöhten Stabilität, Sicherheit und Skalierbarkeit zu profitieren.
Big-Data mit einer Datenbank für Time-Series-Daten
Stellt euch vor, ihr habt die Anforderung, jedes Jahr hunderte von Millionen Messdaten zu erfassen, zu analysieren und in Echtzeit auswertbar zu machen. Diese Anforderung haben wir bei einem Projekt für einen Kunden, das sich auf die Messung und Abrechnung von Energie und Wasser spezialisiert hat. Das ist nichts, was man mit einer klassischen relationalen Datenbank lösen könnte. Nach einer Evaluierung von verschiedenen Datenbanken haben wir uns schlussendlich für den Einsatz von Timescale entschieden.
Timescale ist eine führende Open-Source-Datenbank, welche speziell für Time-Series-Daten optimiert wurde. Der große Vorteil von Timescale gegenüber anderen Timeseries-Datenbanken ist, dass Timescale auf PostgreSQL aufsetzt – einer der populärsten relationalen Open-Source-Datenbanken. Durch diese Kombination können wir auf das große PostgreSql-Ökosystem zurückgreifen und relationale Daten können effizient mit Time-Series-Daten verknüpft und ausgewertet werden.Den Anforderungen an das Kundenprojekt konnten wir somit durch den Einsatz von Timescale gerecht werden.
Development
Server-Side-Rendering mittels Angular Universal
Um den Shop-Benutzer:innen eines unserer Kunden die bestmögliche User-Experience anzubieten, haben wir uns bei der Technologie-Auswahl des neuen Shop-Frontends für eine SPA (Single Page Application) auf Angular-Basis entschieden. Da das Thema SEO-Optimierung im E-Commerce-Bereich einen hohen Stellenwert hat, setzen wir bei diesem neuen Projekt auf Server-Side-Rendering (SSR) mittels Angular Universal.
Angular Universal erzeugt auf dem Server bereits vorbereitete HTML-Dokumente, welche an den Browser ausgeliefert werden. Die Nutzer:innen und die Suchmaschine bekommen bei der Anfrage also bereits fertig generierte HTML-Dokumente zurück, die direkt und ohne Umwege angezeigt werden können. Erst im zweiten Schritt wird die Oberfläche von Angular im Browser asynchron initialisiert und entfaltet damit ihre vollen interaktiven SPA-Funktionalitäten. Mit diesem Ansatz können wird die Vorteile einer Angular-SPA auf Basis von AngularJS mit den Vorteilen einer statisch gerenderten Website kombinieren: Geschwindigkeit, SEO und volle Interaktivität.
Die Verteilung von Web-Apps als native Apps im App Store mittels Capacitor
Web-Apps bieten zahlreiche Vorteile gegenüber nativen Apps: Da der Browser als Platform dient, sind sie auf jedem Gerät und Betriebssystem lauffähig und das meist ohne jegliche Anpassungen. Die Entwicklung gestaltet sich als sehr effizient, da auf das bestehende Know-how aus der Webentwicklung zurückgegriffen werden kann. Mittels Service-Worker können Web-Apps sogar sehr einfach offlinefähig verfügbar gemacht werden. Und doch gibt es Szenarien, in denen es trotzdem gewünscht ist, die Applikation in den bekannten App Stores von Apple und Google als „echte“ App zur Verfügung zu stellen. Um diesen Wunsch umzusetzen, hat eines unserer Teams das Tool Capacitor von Ionic verwendet.
Capacitor ist eine Open-Source-Runtime zur Erstellung und Verteilung von nativen Web-Apps. Im Grunde ist es eine Art „Container“, welcher die Web-App bündelt und zeitgleich Schnittstellen auf native Gerätefunktion zur Verfügung stellt. Über die Erfolgsstory mit Capacitor hat Softwareentwickler Kamran einen separaten Blogartikel verfasst.
Open Sourcing von .NET- und PHP-Erweiterungen
Bei Fusonic sind wir seit unserer Gründung im Jahr 2006 von Open Source begeistert und setzen seit jeher konsequent darauf. So spielt Open Source in praktisch all unseren über 120 individuellen Projekten für zahlreiche Kunden eine wichtige Rolle. Weil wir von Open Source begeistert sind, wollten auch wir einen Teil dazu beitragen und stellten deshalb zwei neue Projekte als Open-Source-Software zur Verfügung:
.NET Extensions
Die Fusonic-.NET-Extensions beinhalten zahlreiche Utilities für die Entwicklung von ASP.NET-Core-Applikationen, Komponenten für zuverlässige nachrichtenbasierte Workflows mit Queues und ein auf XUnit basiertes Test-Framework zur flexiblen und effizienten Umsetzung von datenbankgetriebenen automatisierten Tests.
PHP Extensions
Im Fokus der Fusonic-PHP-Extensions sind Komponenten für das Symfony-Ökosystem. Die Packages umfassen derzeit z. B. Komponenten für das einfache und effiziente Handling von DTOs in der Http-Request-Pipeline. Weiters arbeiten wir schon fleißig an Libraries für nachrichtenbasierte Workflows mit Queues und vielem mehr. Wir werden diese Projekte kontinuierlich erweitern, indem wir unsere neuen Erfahrungen und Best Practices in zusätzliche Komponenten einfließen lassen.
Frontend & Design
Storybook
Storybook ist ein Open-Source-Projekt für die isolierte Entwicklung von UI-Komponenten für React, Vue, Angular und andere Frontend-Technologien. Storybook erlaubt es, Komponenten außerhalb der eigentlichen App in einer isolierten Umgebung zu entwickeln und zu gestalten. Es wirft Fragen rund um die Zuständigkeit von Layout und Styles auf. Sollen Komponenten ihre eigene Breite definieren oder soll dies der übergeordneten Komponente überlassen werden? Diese Fragen tauchen auf, sobald Komponenten in Storybook betrachtet werden, denn so ist sofort sichtbar, wie sich Komponenten außerhalb des Kontexts der jeweiligen Anwendung verhalten. Die isolierte Entwicklung von UI-Komponenten erleichtert die Entwicklung von schwer zugänglichen Bedingungen und Sonderfällen beträchtlich. Weiters erhalten wird mittels Storybook eine lebendige und stets aktuelle Dokumentation. Dadurch wird insbesondere das Onboarding von neuen Teammitgliedern aus den Bereichen Design und Softwareentwicklung erleichtert. Möchtest du mehr darüber Erfahren? Dann solltest du dir den Blog-Post von Lilly ansehen, welcher Storybook genauer erklärt!
Modern Gestalten mit Figma
Figma revolutioniert unsere Design-Arbeitsprozesse und bietet unterschiedliche Vorteile, die uns aus kreativer und technischer Sichtweise überzeugt haben. Figma ersetzt für uns also nicht nur Sketch, InVision und Zeplin, sondern macht auch den Arbeitsalltag für unsere Designer:innen an vielen Stellen einfacher. Während der letzten Monate haben sich beim Arbeiten mit Figma einige Vorteile herauskristallisiert, die sich als äußerst wertvoll erwiesen haben. Figma ermöglicht eine transparente Kommunikation und bietet somit das Potenzial, den gesamten Designprozess zu öffnen. Obwohl das Programm erst knappe fünf Jahre alt ist, hat es doch schon einiges auf den Kopf gestellt. Wir sind auf jeden Fall gespannt, wie es weiter geht. Möchtest du mehr darüber Erfahren? Dann schau dir den Blogartikel von Designer Daniel an.
Wie du siehst hatten wir auch im Jahr 2021 wieder zahlreiche spannende Möglichkeiten, uns mit neuen innovativen Technologien und Tools zu beschäftigen und diese erfolgreich für unsere Projekte und Kunden einzusetzen. Falls du zu dem ein oder anderen Thema mehr erfahren möchtest, kannst du uns gerne kontaktieren. Das gesamte Fusonic-Team wünscht einen Guten Rutsch!