Welcher Cloud-Service-Anbieter eignet sich besser zur Entwicklung beziehungsweise zum Betrieb von Anwendungen in der Cloud? Wie sind die Erfahrungen unserer Entwickler-Teams? Im Rahmen der Entwicklung unserer Anwendung „LEA“ zur Verwaltung von Mitarbeitern sowie der Portierung unserer bestehenden Anwendung „elVira“ haben wir uns mit der Entwicklung und dem Betrieb von Anwendungen in der Cloud beschäftigt.

Was ist LEA?

Die Anwendung „LEA“ (Live Employee Administration) soll das Erstellen und Exportieren von Mitarbeiterprofilen vereinfachen und vereinheitlichen. Über eine Oberfläche werden die Profildaten, wie Skills, Zertifizierungen und durchgeführte Projekte, erfasst und können anschließend in verschiedene Formate wie Word oder PDF im einheitlichen Look and Feel exportiert werden. Innerhalb der Entwicklung wurden mehrere Produkte aus den Amazon Web Services (AWS) eingesetzt. LEA sollte als eine AWS cloudnative Anwendung umgesetzt werden.

AWS Cloud Services (Anwendung LEA)

Für eine cloudnative Datenhaltung wurde als AWS-Produkt DynamoDB gewählt. Die Einrichtung über die AWS-Oberflächen hat sich für uns einfach und unkompliziert gestaltet. Von Vorteil war, dass innerhalb der LEA-Anwendung vom Frontend keine umfangreichen Einstellungen zur Integration nötig waren. Ein Nachteil war, dass die Performance als "Live-Datenbank" aus unbekannten Gründen nicht zufriedenstellend war. Dieses hat sich negativ auf den Kosten/Leistung-Faktor ausgewirkt.

Bewertung der in LEA eingesetzten AWS Cloud-Produkte

  • Lambda: Ein AWS-Lambda bildet die Schnittstelle zwischen der DynamoDB-Datenbank und dem AWS-API-Gateway.
    • Vorteile:
      • Schnittstelle und Logik können selbst bestimmt werden
    • Nachteile:
      • JavaScript-Kenntnisse notwendig, welche einigen Entwicklern fehlten
      • Debugging des JavaScript-Codes schwierig, da der Code in AWS liegt
      • Staging nur mit hohem Aufwand in der Konfiguration möglich
      • Großteil der Schnittstellen-Logik (Geschäftslogik) liegt direkt in Lambda
      • je nach Nutzverhalten stiegen die Kosten stark an
         
  • API-Gateway: Ein AWS-API-Gateway-Service wurde für LEA als Schnittstelle zwischen der DynamoDB-Datenbank und AWS-Lambda eingesetzt.
    • Vorteile:
      • Serverloser Zugriff
      • Schnelle und einfache Einrichtung dank der übersichtlich gestalteten Oberfläche von AWS
      • API konnte weitgehend mithilfe der AWS-Oberfläche konfiguriert werden
    • Nachteile:
      • Einige Fehlermeldungen waren nicht selbsterklärend
      • Staging der API nur mit hohem Konfigurationsaufwand möglich
         
  • Cognito: Der Einsatz von Cognito bildet eine Schnittstelle zur Authentifizierung von ITGAIN-Mitarbeitern. Da bereits ein Active Directory (AD) der Mitarbeiter innerhalb der Azure Cloud existiert, wurde der Cognito-Dienst mit diesem verbunden.
    • Vorteile:
      • Unkomplizierte Einrichtung der Azure AD als „Custom-Auth-Provider“ 
      • Einfache Nutzung der Cognito-API
    • Nachteile:
      • umständlich, einen weiteren Service in AWS betreiben zu müssen
      • direkte Anbindung mit dem ITGAIN AD ohne Cognito leider nicht möglich
         
  • EC2: Amazon Elastic Compute Cloud (Amazon EC2) stellt sichere, skalierbare Rechenkapazitäten in der Cloud bereit und wurde in LEA für die Bereitstellung und Verwaltung einer eigenen skalierbaren Serverinstanz verwendet.
    • Vorteile:
      • eigene VM kann eingerichtet werden, in die wahlfrei notwendige Programme und Skripte installiert werden können (jedoch sind hierfür entsprechende Linux-Kenntnisse notwendig)
      • viele Konfigurationsmöglichkeiten (insbesondere auch im Bereich der Security)
      • Serverinstanz liefert eine sehr gute Performance zu einem akzeptablen Preis
         
  • CodeCommit: CodeCommit wird als privates, sicheres und skalierbares Git-Repository verwendet.
    • Vorteile:
      • Schneller und einfacher Umstieg vom ITGAIN-internen Github-Repository, da im CodeCommit alle erwarteten Funktionen ebenso verfügbar sind

Der Einsatz der oben genannten Produkte wie DynamoDB, Lambda, API-Gateway und Cognito wurde später aufgrund der hier genannten Nachteile verworfen. Aktuell werden als alternative AppWrite (ein selbstgehosteter Backend-Server mit MariaDB, vorbereiteter/integrierter REST-API und Cloud Functions, sowie Berechtigungssystem) im Backend eingesetzt. Die AWS Produkte EC2 und CodeCommit werden aufgrund der überwiegend positiven Erfahrung weiterhin eingesetzt.

Die Architektur von LEA in der AWS Cloud

Anbei die Übersicht der verwendeten Architektur:

Im zweiten Teil unseres Vergleichs der Cloud-Service-Anbieter werden wir den Einsatz von elVira in Microsoft Azure bewerten. Welche Vor- und Nachteile bietet die Azure Cloud und welcher der beiden Anbieter konnte uns letztlich überzeugen? Bleibe dran, um unser Fazit zu erfahren.

Bei Fragen melde dich gerne über unser Kontaktformular oder unter more.about@itgain.de

Hier findest du den zweiten Teil dieser Blogserie

Neuen Kommentar schreiben

Ihre E-Mail Adresse wird nicht veröffentlicht.

NEUESTE BEITRÄGE

Einführung von Protegrity - Ein Kundenprojektbericht
31.05.2023

Einführung von Protegrity - Ein Kundenprojektbericht

Leon Geitmann

Im Juli 2022 begann offiziell das Kundenprojekt „Einführung Protegrity“. Über die nächsten 6 Monate wurde dabei die neue Softwarekomponente Protegrity in die bestehende Infrastruktur eines IT-Dienstleisters im Bankenbereich implementiert. Worum es sich bei Protegrity handelt, warum es eingeführt wurde und wie dieses Projekt in etwa ablief, möchte ich in einem kurzen Projektbericht teilen.

Expertise
Welche Hürden gibt es bei Testdatengeneratoren im Softwaretest?
30.05.2023

Welche Hürden gibt es bei Testdatengeneratoren im Softwaretest?

Sören Schmock

Testdatengeneratoren sind Werkzeuge, die automatisch Daten erzeugen, die für den Softwaretest verwendet werden können. Sie können nützlich sein, um große Mengen von Daten zu erzeugen, die bestimmte Anforderungen erfüllen, wie z. B. Format, Typ oder Bereich. Allerdings eignen sich Testdatengeneratoren noch immer nur sehr bedingt für den Softwaretest.

Expertise
Softwaretests in Microsoft Azure
22.05.2023

Softwaretests in Microsoft Azure

Sören Schmock

Der Softwaretest ist ein wichtiger Bestandteil des Softwareentwicklungsprozesses, der die Qualität, Zuverlässigkeit und Sicherheit der Softwareprodukte sicherstellt. Dabei umfassen die Softwaretests verschiedene Aktivitäten, wie z. B. das Entwerfen von Testfällen durch den Testdesigner, die operative Ausführung der Tests durch die Tester, das Analysieren der Testergebnisse sowie das Beheben von Fehlern. Software Testing kann manuell oder automatisiert durchgeführt werden, je nach Anforderungen und dem Kontext des Projekts.

Expertise