Realisierung und Gegenüberstellung einer serverless und einer containerbasierten Microservice-Architektur für das Client-Reporting - Ante Škoric (2024)
Microservices und Serverless Deploymentstrategien unterscheiden sich in vielerlei Hinsicht. Bei Serverless kümmert sich der Cloud-Anbieter um die Skalierung und bietet zusätzliche Resilience. Im Gegensatz dazu müssen bei der containerbasierten Microservice-Anwendung die Container mithilfe eines Container-Orchestrierungssystems skaliert werden. In dieser Arbeit wird folgende Fragestellung beantwortet: ”Wie unterscheiden sich die Performance (Skalierbarkeit, Resilience und Cloud Latency) und Kosten zwischen einer Serverless-Deploymentstrategie mit AWS Lambda und einer containerbasierten Microservices-Deploymentstrategie mit Docker und Kubernetes?” Durch die Beantwortung dieser Forschungsfrage ergeben sich Use Cases, in denen die eine Deploymentstrategie der anderen vorgezogen werden kann. Zur Beantwortung der Fragestellung wurden Performance-Tests durchgeführt und eine Kostenberechnung vorgenommen. Dies geschah anhand von zwei verschiedenen Use Cases, einer event-driven Reporting-Anwendung und einer Employee-Time-Sheet-Management-Portal-Anwendung. Für die Implementierung und das Deployment der Serverless-Anwendungen wurde AWS Lambda verwendet, für die Microservice-Anwendungen wurden Docker und Kubernetes eingesetzt. Die durchgeführten Experimente zeigen, dass beide Deploymentstrategien Vor- und Nachteile aufweisen. Die Nachteile der Microservices-Deploymentstrategie bestehen darin, dass sie unter den Load-Balancing- und Trafficverteilungs-Problemen leidet und die Skalierbarkeits- und Ressourcen-Konfiguration ”aufwendiger” ist als die von Serverless. Die Vorteile sind, dass sie im Vergleich zu Serverless eine bessere Requestsbearbeitungsleistung bietet. Der Nachteil der Serverless-Deploymentstrategie ist der, dass sie unter dem Problem des Cold-Starts leidet. Die Vorteile sind, dass sie agiler in Bezug auf Skalierbarkeit als die Microservices-Deploymentstrategie ist und dass sie bei den Anwendungen mit geringem Traffic weniger Kosten verursacht. Aus diesen Erkenntnissen ergeben sich auch Use Cases, in denen die eine Deploymentstrategie der anderen vorgezogen werden kann. Die Microservices-Deploymentstrategie eignet sich für Real-Time-Data-Processing- Anwendungen und Anwendungen, bei denen es auf Bruchteile von Sekunden ankommt. In Gegenteil dazu eignet sich die Serverless-Deploymonetstrategie für die Anwendungen mit Traffic-Schwankungen, Job-Scheduler und automatisch skalierbare APIs. An dieser Stelle ist es wichtig, darauf hinzuweisen, dass die Empfehlungen anhand der Kriterien aus dieser Arbeit gemacht worden sind und keine weiteren Kriterien berücksichtigt wurden. Bei der Auswahl einer Deploymentstrategie in der Praxis sollten auch andere Kriterien, die in dieser Arbeit nicht behandelt wurden, berücksichtigt werden.
Keywords: Microservices; Serverless; Container; Performance; Scaling; Resilience; Container Orchestration; Kubernetes; AWS Lambda; Cloud; Cloud Native Computing; Kafka; Client-Reports