The Power of Lambda – pay as you go

In einer Welt, in der sich die Möglichkeiten der Technologien ständig weiterentwickeln, stehen Unternehmen oft vor der Frage, ob sie ihre Softwarelösungen selbst entwickeln oder kaufen sollen. Auch wir bei Aclue stehen immer wieder vor dieser Frage. Oft sind es auch Anwendungsfälle die nicht unbedingt einen unnötig kostenintensiven Funktionsumfang brauchen. Wir haben uns dazu entschieden für ein neues Personalverwaltungssystem keine Lösung von der Stange zu wählen. Voraussetzung für die individuelle Umsetzung ist allerdings eine schnelle Projektrealisierung und niedrige laufende Kosten. Begleitet uns auf dem Weg zu einem maßgeschneiderten Personalverwaltungssystem und entdeckt die Kraft der serverlosen Architektur und des “Pay as you go”-Modells.

Office Friday: Wo Innovation auf Kultur trifft

Bevor wir in die technischen Details eintauchen, lasst uns kurz darauf eingehen, was uns dazu bewegt hat, dieses Projekt in Angriff zu nehmen. Bei Aclue ist Innovation nicht nur ein Schlagwort, sondern eine Lebenseinstellung. Unsere Office Friday Sessions finden alle zwei Wochen statt und sind ein wichtiger Teil unserer Kultur – Ein innovativer Raum, in dem Kreativität und technologisches Know-how zusammenfinden. Alle Mitarbeiter können sich an unseren Office Friday Sessions beteiligen und freiwillig Vorträge und Workshops zu spannenden Themen anbieten. Die gemeinsame Zeit außerhalb unserer Kundenprojekte wird aber auch für interne Projekte genutzt. Bei der Wahl der Technologien werden uns keine Grenzen gesetzt und wir genießen volle Freiheit unsere Ideen einzubringen.

Architektur: Ein Überblick

Die Herausforderung bestand darin, eine effiziente Softwarelösung zu entwickeln, die speziell auf die Verwaltung von Personaldaten zugeschnitten ist aber auch auf weitere formularbasierte Produkte angewendet werden kann. Unsere Kriterien waren klar: Bezahlung nur bei Nutzung, extrem schnelle Reaktionszeiten, geringer Verwaltungsaufwand, Anmeldung über MSAL und maximal sicher. Als Cloud Natives lag der Fokus sehr schnell auf Lambda – Ein serverloser und ereignisgesteuerter Dienst von Amazon Web Services (AWS). Entwickler müssen sich nicht um die Administration von Servern kümmern und können sich voll auf die Erstellung der Infrastruktur und  wertvollem Quellcode konzentrieren. Für unser Projekt bildet AWS Lambda das mit TypeScript geschriebene Backend. Neben den genannten Vorteilen, haben wir alle notwendigen CRUD Operationen ohne laufende Serverkosten realisiert. Natürlich gehört noch viel mehr zu einer Software als nur die CRUD Operationen. Die folgende Grafik zeigt einen Gesamtüberblick der gewählten Architektur.

AWS Backend

  • AWS Lambda: Ein Serverloser und ereignisgesteuerter AWS Dienst. Wird von uns anstelle eines Backends mit Applikationsserver wie Tomcat oder Wildfly eingesetzt. Wir zahlen nur, wenn unsere Lambda auch verwendet wird.
  • DynamoDB: Ein NoSQL-Datenbankdienst von AWS. Analog zu Lambda fallen bei einer DynamoDB nur die Kosten des tatsächlichen Verbrauchs an zu Lese- u. Schreibvorgänge. Es kann aber auch vorab definiert werden welche Kapazität potentiell benötigt wird. Und nebenbei müssen wir uns um nur wenige Details kümmern und überlassen AWS die Verwaltung.
  • API Gateway: Ein AWS Dienst zur Erstellung, Veröffentlichung und Verwaltung von APIs. Vergleichbar zu den weiteren verwendeten AWS Diensten, fallen auch beim API Gateway nur Verbrauchskosten wie HTTP-Anfragen oder die Menge an Datenübertragungen an.
  • Route53: Zu einer Webanwendung brauchen wir noch ein Domain Name System (DNS). Hier bietet sich Route53 von AWS an. Die Kernaufgabe ist die Weiterleitung von Datenverkehr an das verwendete API Gateway. Die Kosten werden über die Anzahl an DNS-Abfrage ermittelt. Wir bleiben dem „Pay as you go“ – Ansatz treu.
  • CloudFront: Der Content Delivery Network (CDN)-Dienst von AWS ist ein Netzwerk aus miteinander verbundenen Servern zur Bereitstellung von Webseiten. Bei Anfragen eines Clients, werden die Daten vom näherliegenden Server aus diesem Netzwerk geladen. Dadurch lassen sich niedrigere Latenzzeiten ermöglichen.
  • S3 Bucket: Mit Hilfe vom Simple Storage Service (S3) hosten wir unser Frontend. Durch den Einsatz von CloudFront wir der S3 nicht stark belastet und wir erreichen niedrigere Latenzzeiten. AWS S3 und CloudFront sind eine starke Kombination, um Webseiten bzw. Frontends Weltweit hoch Verfügbar zu gestalten.

Frontend

  • ViteJS: Ein performantes Build-Tool und Entwicklungsserver. Harmoniert mit React und war daher unsere erste Wahl.
  • React: Bibliothek zur Erstellung von webbasierten Benutzeroberflächen. 
  • Material UI: React Komponenten-Bibliothek durch die wir schneller eine geeignete Benutzeroberfläche aufsetzen konnten.
  • PrimeReact: Erweitert unsere React Komponenten um eine umfangreiche DataTable. Personalverantwortliche können alle Mitarbeiterdaten einsehen, filtern, Informationen ein/ausblenden und das Resultat als CSV oder XSLX exportieren. 
  • MSAL: Durch den Einsatz der Microsoft Authentication Library können wir uns bequem mit gegebenen AD Accounts anmelden. Eine zusätzliche Authentifizierung über beispielsweise Keycloak ist nicht notwendig.

Herausforderungen = Triumphe

Unsere Reise war nicht ohne Hürden. Bei Kundenprojekten geben wir immer unser Bestes und konzentrieren uns ausschließlich auf die Beratung und Umsetzung. So wechselten für unser internes Projekt regelmäßig einzelne Mitglieder des Entwicklerteams. Das führte zu stetigen Unterbrechungen und zeitaufwendigem Wissenstransfer. Also optimierten wir unsere Dokumentationen und führten zur Unterstützung Copilot und Bito als VSCode Extension ein. Zudem wurde ein stabiles Kernteam definiert, das sich über einen
festgelegten Zeitraum vollständig auf das Projekt konzentrierte. Dank dieser Maßnahmen haben wir unsere Ziele einhalten können und in kurzer Zeit ein vollständiges und auf unsere Bedürfnisse maßgeschneidertes Personalverwaltungssystem fertiggestellt.

Fazit: Stärken einer serverlosen Architektur mit AWS Lambda

Die Einführung der serverlosen Architektur und des “Pay as you go”-Modells führte zu einem erfolgreichen und zügigen Abschluss des Projekts. Die Entscheidung, auf Cloud-Native-Lösungen wie AWS Lambda, DynamoDB und API Gateway zu setzen, ermöglichte nicht nur eine effiziente Backend-Entwicklung, sondern auch die Reduzierung laufender Serverkosten und die Anpassungsfähigkeit an individuelle Anforderungen.
Die Frontend-Technologien umfassen ViteJS, React, Material UI und PrimeReact, während die Implementierung von MSAL eine nahtlose Authentifizierung über AD-Accounts ermöglicht. Trotz Herausforderungen und Unterbrechungen bei der Entwicklung gelang es dem Team dank effektiver Optimierungen das Projekt erfolgreich zu realisieren. Die Abrechnung nur für tatsächlich genutzte Ressourcen im “Pay as you go”-Modell ermöglicht eine maximale Kostenkontrolle.

Folge uns auf LinkedIn und verpasse nicht den nächsten Artikel – Eine Schritt für Schritt Anleitung zur Erstellung einer Applikation mit der oben beschriebenen Architektur.

Weitere spannende Beiträge

Container Miniature

Go Container minimieren

Was ich an Go so charmant finde? Man kann kleine, wirklich kleine Mircoservices bauen ohne einen Overhead zu erzeugen, wie im Java/Spring Kontext.