Vergleich AWS und Azure anhand von zwei ITGAIN Anwendungen | Teil 1
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
- Vorteile:
- 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
- Vorteile:
- 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
- Vorteile:
- 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
- Vorteile:
- 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
- Vorteile:
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[at]itgain.de