Logical, agnostic and holistic.
Wir lieben es, digitale Produkte zu entwickeln. Vor allem dann, wenn wir ganzheitlich gefordert werden. Unsere Stärken kommen bei der Entwicklung von Business-Anwendungen voll zum Einsatz: wenn wir komplexe Business-Logiken in skalierbaren Code und echte User-Experiences überführen. Unsere Business-Anwendungen bestehen in der Regel aus einem modernen Frontend, das über einen API-Layer (idealerweise GraphQL) mit verschiedenen Backend-Systemen interagiert. Unsere Frontends wiederum sind sehr nahe am Menschen konzipiert; denn wir haben eigene Teams die sich nur mit User Experience Design und User Interface Design auseinandersetzen. Unsere Backends orchestrieren die richtigen Techniken und Technologien für hohe Performance und Datensicherheit – und fügen sich nahtlos in den Kosmos der gesamten Applikationen ein. Der Best-of-Breed-Ansatz ermöglicht es uns, zu jedem Problem die bestmögliche Lösung zu finden. Oder die günstigste. Oder die compliance-konformste – je nach Anforderung eben. In unserer eigenen Codebasis leben wir die Event-Driven-Architektur und feiern den Microservice-Gedanken. Aber eine monolithische Anwendung hinter einer API ist auch nur ein großer Microservice ;-).
Technologien kommen und gehen. Geschäftslogiken aber haben Bestand und genießen besondere Aufmerksamkeit. Zurecht. Um Geschäftslogiken möglichst smart abzubilden, bedienen wir uns dem Domain-Driven-Design: Die hexagonale Architektur ermöglicht eine saubere Trennung von Fachlichkeit und Technik. Das reduziert Abhängigkeiten und macht Drittsysteme wie Datenbanken einfacher austauschbar. Event-Sourcing bezeichnet ein Verfahren, bei dem alle Aktionen, die in einem System passieren, in einem Eventstorm abgelegt werden. Dies unterstützt uns in der Revisionsfähigkeit und ermöglicht eine komplette Nachvollziehbarkeit aller Aktionen im System. Lesezugriffe erfolgen hierbei über Projektionen. Denn aus Gründen der Performance erfolgt eine Trennung der Modelle zum Schreiben und zum Lesen (CQRS).
In Business-Anwendungen gilt es, technische Herausforderungen einfach zu lösen. Zum Beispiel: Was, wenn sich eine Business-Anwendung im Browser des Nutzers automatisch aktualisieren sollte – ohne dass sie permanent beim Server nachfragen muss, ob es etwas Neues gibt? Sei es wegen einer Chat-Funktion, die immer verfügbar sein muss; oder wegen einer Teilanwendung, bei der Daten oder Statistiken immer in Echtzeit aktualisiert werden sollten. Wir lösen solche End-to-End-Anforderungen über hochperformante, in Golang geschriebene Kommunikations-Services. Diese kommunizieren mit den angebunden Frontends über Websockets in Echtzeit.
Wir legen nicht nur großen Wert auf den Code, sondern auch auf das "Drumherum". Um die Infrastruktur des Produktivsystems zu unseren Devs zu bringen, setzen wir Virtualisierung auf Container-Basis ein. Außerdem führen wir automatisierte Tests durch, die in unseren Continuous-Integration- / Continous-Deployment-Workflows eingebunden sind. So stellen wir die Qualität der Business-Anwendung sicher. Darüber hinaus deployen wir Änderungen an der Infrastruktur – dank Infrastrucutre as Code (IaC) – durch unseren CI-Prozess einfach mit. Wir lieben Cloud-Native und die großen Hyperscaler, bedienen aber auch Kunden, die in ihrem eigenen Rechenzentrum on Premise hosten. Und natürlich auch alles, was dazwischen liegt.
Wir wissen, dass man eine Business-Anwendung nicht heute baut und morgen einfach so durch die nächste ersetzt. Dennoch glauben wir an skalierbare, flexible und zukunftsfähige Lösungen. Mit unseren digitalen Produkten und Business-Anwendungen streben wir langfristige Partnerschaften an – und haben die nötigen Werkzeuge, unsere Lösungen über einen langen Zeitraum in einem exzellenten und handlungsfähigen Zustand zu halten.