News

Apriko für den Unternehmerpreis 2024 nominiert!

Wir haben aufregende Neuigkeiten: Apriko ist zusammen mit COO und Gründungspartner Muhamed Ramiqi für den renommierten swissalbs Unternehmerpreis 2024 nominiert!

Mehr erfahren
Blog
Payrolling

Was ist Payrolling?

Hast du dich schon mal gefragt, was Payrolling oder Payroll eigentlich beinhaltet? Und kennst du Try & Hire schon? Die Antwort ist nicht ganz einfach, weil der Begriff «Payrolling» für 2 unterschiedliche Dienstleistungen genutzt wird.

Mehr erfahren

Apriko - eine leistungsfähige und ­ flexible Plattform für moderne Enterprise-Anwendungen

Engineering
5. August 2024

Apriko wurde als Microservice-Applikation entwickelt, um den steigenden Anforderungen an moderne Enterprise-Anwendungen gerecht zu werden. Dieser Architekturansatz bietet die nötige Agilität, Skalierbarkeit und Wartbarkeit, die heutige Softwaresysteme erfordern. Er hat sich bei grossen Software-Unternehmen wie LinkedIn, Spotify und Netflix bewährt.

Im Gegensatz zu monolithischen Architekturen, bei denen eine grosse, zusammenhängende Applikation im Vordergrund steht, besteht eine Microservice-Umgebung aus vielen kleinen, voneinander unabhängigen Applikationen. Jeder dieser Microservices erfüllt eine spezifische fachliche Aufgabe gemäss dem Single Responsibility Principle, verwaltet seine Daten in einer eigenen Datenbank und kann autonom entwickelt, getestet und in Produktion gebracht werden.

Herausforderungen bei der Entwicklung von Microservices

Die Herausforderung bei solchen Architekturansätzen besteht darin, tatsächlich unabhängige Applikationen mit eigenen Datenbanken zu entwickeln, ohne Abhängigkeiten zu schaffen. Es ist beispielsweise eine echte Herausforderung, einen Arbeitsvertrag in einem Service generieren zu können, ohne den People Service zu kennen, oder Löhne zu berechnen, ohne auf den People- und den HR-Service zugreifen zu müssen.

Kommunikation zwischen Microservices: Der Event Bus

Bei Apriko nutzen wir für die Kommunikation zwischen den Microservices einen Event Bus. Dadurch kann jede Applikation mit den entsprechenden Zugriffsrechten Daten in Form von Nachrichten veröffentlichen, ohne dabei die Empfänger zu kennen. Andere Applikationen können bestimmte Nachrichten, die sie benötigen, abonnieren, ohne den Sender kennen zu müssen. Die empfangene Nachricht kann dann beliebig verarbeitet werden, und die Applikation kann die benötigten Daten in der gewünschten Form speichern und erweitern.

Angewendet auf das vorherige Beispiel würde der People Service alle neuen und geänderten Personendaten veröffentlichen. Abonnenten dieser Nachrichten wären in diesem Fall der HR Service und der PayrollGlossar Service. Der HR Service reichert die Daten um Vertragsaspekte wie Dauer, Urlaub, Lohn usw. an und veröffentlicht die Vertragsdaten, die wiederum vom PayrollGlossar Service genutzt werden können, um in Kombination mit den Personendaten den Lohn zu berechnen.

Herausforderungen der Microservice-Integration

Je nach Benutzerführung erstellt der Anwender oder die Anwenderin den Vertrag und die Person in einem Schritt. Wie kann in diesem Fall die Abhängigkeit aufgelöst werden? Und was passiert, wenn der People-Service zum Zeitpunkt der Speicherung nicht verfügbar ist und die Person nicht angelegt werden kann? In welchem Zustand befindet sich dann der Vertrag? Diese Beispiele verdeutlichen die Komplexität und die zahlreichen Herausforderungen, die eine solche Architektur mit sich bringt.

Eine weitere Herausforderung in einer verteilten Microservice-Architektur besteht darin, trotz der dezentralen Datenverwaltung durch verschiedene Services eine vollständige und konsolidierte Sicht auf die Daten zu gewährleisten. Da jeder Service nur einen Teil der benötigten Informationen verwaltet, ist es einem einzelnen Service nicht möglich, eine umfassende Abfrage über alle relevanten Daten durchzuführen. Um dieses Problem zu lösen, haben wir einen Model Service entwickelt. Dieser Service empfängt und verarbeitet Nachrichten von den verschiedenen Microservices und erstellt daraus eine aggregierte Sicht auf die Daten. Der Model Service fungiert somit als Vorstufe eines Data-Warehouses und ermöglicht komplexe, auch graphbasierte Abfragen auf die hierarchisch strukturierten Daten.

Vorteile einer Microservice-Architektur

Eine derart lose gekoppelte und sorgfältig entwickelte Software bietet die folgenden Vorteile und Chancen:

  • Autonomie: Microservices funktionieren unabhängig voneinander. Dies bezieht sich sowohl auf die Laufzeit wie auch auf die Entwicklung und das Deployment. Jeder Microservice kann eigenständig weiterentwickelt und ausgerollt werden. Auch technologisch sind diese voneinander unabhängig.
  • Entkopplung: Microservices sind untereinander stark entkoppelt. Sie kommunizieren nur über klar definierte und sprachunabhängige Schnittstellen. Die Entkopplung findet auf allen Ebenen statt (Datenhaltung, Security, Technologie, Architektur, Deployment, etc.). Module sind durch diese Entkopplung leicht austausch- und ersetzbar.
  • Automatisierung: Microservices ermöglichen einen hohen Grad an Automatisierung für Deployments, Testing, Provisionierung und Skalierung. Im Zusammenhang mit Continuous Delivery können dank einer Microservice-Architektur Releases unabhängig und schnell produktiv gesetzt werden.) Dank minimaler Time-to-Market ist es möglich, schnell auf Änderungen und Trends zu reagieren.
  • Skalierbarkeit: Microservices sind dafür gebaut ein System schnell und unkompliziert zu skalieren. Durch die Entkopplung können die Module unabhängig voneinander ausgerollt werden.
  • Resilienz: Bei Teil-Ausfällen und Fehlern funktioniert das System weiterhin.
  • Security: Die Kapselung erleichtert die Absicherung der einzelnen Module. Isolierte Microservices können gesondert mit Firewalls und Gateways abgesichert werden.
  • Business Value: Effizienzsteigerung in der Entwicklung, Kosteneinsparungen im Betrieb und erhöhte Stabilität tragen zu einem verbesserten Kundenerlebnis und weniger Ausfällen bei. Das System wächst und schrumpft dynamisch mit der Nachfrage der Kunden, neue Features sind in kürzester Zeit am Markt und die verbesserte Testbarkeit vermindert das Risiko bei Releases.

API-First-Ansatz: effizient und benutzerfreundlich

Ein API-first-Ansatz stellt das API-Produkt in den Mittelpunkt und weniger die zugrunde liegende Technologie. Ziel ist es, eine API zu entwickeln, die sowohl effizient als auch benutzerfreundlich ist. Eine gut konzipierte API erleichtert es Nutzerinnen und Nutzern, Informationen abzurufen und darauf basierend eigene Anwendungen zu erstellen, wodurch ein flexibles und vielseitiges Ökosystem entsteht.

Bei Apriko entwickeln wir unsere API nach dem Behavior Driven Development (BDD)-Ansatz. Das Verhalten der API wird dabei in automatisierbaren Akzeptanztests definiert. Die API-Entwicklung erfolgt testgetrieben und basiert auf präzisen Spezifikationen, die das Verhalten der Software, automatisierte Tests und Akzeptanzkriterien festlegen. Dadurch wird sichergestellt, dass alle Funktionen und deren Verhalten vollständig automatisiert getestet werden können. So kann die API nahtlos in andere Systeme integriert werden und sowohl mit externen Anwendungen als auch mit unserer eigenen Benutzeroberfläche reibungslos kommunizieren.

Progressive Web Apps (PWA)

Um den Nutzern von Apriko ein modernes, nahtloses und plattformunabhängiges Erlebnis zu bieten, setzen wir auf Progressive Web Apps (PWA). PWA ermöglicht es, webbasierte Anwendungen zu erstellen, die sich wie native Applikationen verhalten und ein konsistentes Nutzererlebnis über verschiedene Geräte hinweg gewährleisten. Diese Technologie kombiniert die Flexibilität von Webtechnologien mit der Benutzerfreundlichkeit nativer Apps und bietet eine besonders reaktionsschnelle und ansprechende Benutzeroberfläche.

In Verbindung mit unserer Microservice-Architektur erlaubt uns die Verwendung von PWA, die einzelnen Applikationen flexibel und effizient zu integrieren, ohne dass die fachliche Logik in der PWA selbst implementiert wird. Unsere PWA konsumiert zu 100 % unsere APIs, die gemäss dem API-first-Ansatz entwickelt wurden. Das bedeutet, dass alle Funktionen vollständig von den APIs verarbeitet werden, und die PWA lediglich als Frontend dient, das die Daten und Funktionen der API aufbereitet und darstellt. Dies trennt die Benutzeroberfläche deutlich von der geschäftlichen Logik und ermöglicht eine klare und wartbare Architektur, bei der Änderungen an der Fachlogik in den APIs vorgenommen werden können, ohne die Benutzeroberfläche zu beeinflussen

Modellgetriebene Architektur: Hohen Effizienz, Konsistenz und Fehlerresistenz

In unserer Architektur setzen wir auf ein modellgetriebenes Design, bei dem unser Domain-Modell als zentrale Grundlage für die Entwicklung dient. Dieser Ansatz ermöglicht es uns, sämtliche Code-Bestandteile, von den APIs über die Datenbankstrukturen bis hin zur Progressive Web App (PWA), vollautomatisch zu generieren. Durch den Einsatz eigens entwickelter Code-Generatoren und Algorithmen können wir sicherstellen, dass alle Komponenten konsistent und auf Basis des zentralen Domain-Modells erstellt werden.

Der Vorteil dieses Ansatzes liegt in der hohen Effizienz und Fehlerresistenz. Sobald das Domain-Modell definiert ist, generieren unsere Tools automatisch den notwendigen Code für die API-Logik, die Datenbank-Schemata und die PWA-Oberfläche. Dies reduziert den manuellen Aufwand erheblich und minimiert potenzielle Inkonsistenzen, da alle Teile des Systems nahtlos miteinander abgestimmt sind. Entwickler können sich daher auf die spezifischen Anforderungen und das eigentliche Wesen der Applikation konzentrieren, anstatt sich mit der detaillierten Implementierung der einzelnen Komponenten auseinanderzusetzen.

Dieses modelgetriebene Vorgehen fördert nicht nur die Konsistenz und Wartbarkeit des Systems, sondern beschleunigt auch den Entwicklungsprozess. Da die meisten Code-Bestandteile automatisch erstellt werden, können Änderungen am Domain-Modell zügig in allen betroffenen Bereichen des Systems reflektiert werden. Dies unterstützt eine agile Entwicklung, in der Anpassungen und Erweiterungen schnell umgesetzt werden können, ohne den Überblick über die komplexen Zusammenhänge zwischen API, Datenbank und Benutzeroberfläche zu verlieren.

Fazit: Eine leistungsfähige und flexible Plattform

Zusammenfassend schafft die Kombination aus einer modellgetriebenen Architektur, Microservices und Progressive Web Apps (PWA) bei Apriko eine besonders leistungsfähige und flexible Plattform für moderne Enterprise-Anwendungen. Durch die Nutzung eines zentralen Domain-Modells und vollautomatisierter Code-Generatoren optimieren wir die Konsistenz und Effizienz der Entwicklung. Unsere Entwicklerinnen und Entwickler können sich dadurch auf Fachaspekte und die Verbesserung der Benutzererfahrung konzentrieren, anstatt sich mit redundanter Implementierungsarbeit zu beschäftigen.

Neugierig geworden? Dann melde dich bei uns!

Thaya Selvarajah
Product owner & Solution Architect
Thaya Selvarajah

Mehr gute Gründe für Apriko

Engineering

Automatische Generierung der grafischen Benutzeroberfläche (UI)

26. April 2024

Ein zentrales Designprinzip der Software-Architektur von Apriko ist es, so viel Boilerplate-Code wie möglich automatisch zu generieren oder Logik abzuleiten.

Engineering

DevOps bei Apriko

13. November 2023

Die Entwicklung moderner Software erfordert agile Methoden, um schnell auf Marktveränderungen reagieren zu können und gleichzeitig die Qualität sicherzustellen. DevOps bietet hier die ideale Lösung durch die enge Verzahnung von Entwicklung und Betrieb.

Engineering

Schneller und besser zum Ziel: Mit automatisierter Codegenerierung

16. April 2024

In der modernen Softwareentwicklung, insbesondere in Microservices-Architekturen, ist die Komplexität hoch. Aber was tun, damit bei einfachen und repetitiven Aufgaben keine Fehler entstehen?

Engineering

Behavior Driven Development

15. April 2024

Bei Apriko streben wir nach einem hohen Automatisierungsgrad der Kundenprozesse, einer schnellen Markteinführung und einer kontinuierlichen Verbesserung unserer Software. Um dies in einer anspruchsvollen Domäne und komplexen Softwarearchitektur sicherzustellen, ist eine präzise Planung und konsequente Umsetzung von Anfang an unverzichtbar.

Job

Senior Full Stack Engineer

12. August 2024

Als Mitglied eines agilen Kanban Teams treibst du die Domäne voran und prägst Vision, Roadmap und Features. Du implementierst Features vom Backend bis zum Frontend, gestaltest den Prozess aktiv mit und entwickelst Services, APIs und die Engine für Backend, API und Web UI Generierung weiter. Konzeption und Umsetzung von Software-Infrastruktur-Anforderungen mit Fokus auf Clean Code, gute Performance und hohe Testabdeckung.

Job

Senior Frontend Engineer

12. August 2024

Als Frontend Engineer in unserem Kanban Team treibst du die Domäne voran und prägst Vision, Roadmap und Features. Du implementierst Features von Frontend bis Backend und gestaltest den Prozess aktiv mit. Mit unseren UX Designern entwickelst du benutzerfreundliche Interfaces und UI Komponenten. Im Team erstellst du grafische Oberflächen, APIs und entwickelst diese weiter. Du trägst zur Gestaltung und Weiterentwicklung unserer deklarativen UI-Engine bei und legst Wert auf sauberen Code, übersichtliche Struktur, hohe Leistung und zweckmässige Testabdeckung.

Lesezeit: 9 Minuten
Author: Thaya Selvarajah

Cookies werden auf dieser Website verwendet, um die Nutzung zu analysieren und zu verbessern. Du kannst Cookies in deinen Browsereinstellungen deaktivieren, was jedoch die Funktionalität der Website beeinträchtigen kann.

Artikel teilen

Teile interessante Inhalte und nützliche Informationen.