Mittlerweile wird man geradezu überwältigt hinsichtlich der Möglichkeiten wie eine Anwendung entwickelt und bereitgestellt werden kann. Neben vollautomatisierten Lösungen die ohne einen Webserver funktionieren, gibt es nach wie vor die bewährte und kostengünstige Variante des selbst hosten, das je nach Anforderung an die Anwendung abzuwägen gilt.
Anforderungen priorisieren
Verfügbarkeit: Wie wichtig ist es, dass die Anwendung hochverfügbar ist und 24/7 genutzt werden kann? Wenn die Verfügbarkeit ein erfolgsentscheidendes Kriterium ist, dann muss die darunter liegende Infrastruktur das mit automatisierten Wiederherstellungsmethoden sicherstellen.
Skalierbarkeit: Gibt es Zeiten zu denen die Anwendung eine größere Last erfährt, als zu Anderen? Und ist es schwierig vorherzusehen, wie groß die Last sein wird, da das Nutzeraufkommen variiert und theoretisch unbegrenzt sein kann? Dann sollte genügend Rechenkapazität (RAM, CPU) zur Verfügung stehen, damit die Anwendung auch während Spitzenlasten lauffähig ist und User-Aktionen verarbeiten kann.
Kontrolle und Sicherheit: Wenn Ihnen die Kontrolle über Ihre Daten wichtig ist, dann sollten Sie diese entweder selbst auf einen eigenen Server hosten oder mit entsprechenden Verträgen absichern. Damit verbunden sind notwendige Kenntnisse zur Sicherstellung, dass die Daten sicher verwahrt, geschützt und über das Netz übertragen werden können.
Self-Hosted vs. Cloud
Auf Basis der Anwendungsanforderungen kann eine Entscheidung für oder gegen eine Cloud Lösung getroffen werden.
Folgend die grundlegende Vorteile und Nachteile bei Nutzung einer Cloud gegenüber der selbst gehosteten Variante.
Vorteile der Cloud
- Automatisierte Backups
- Integriertes Monitoring
- Hohe Ausfallsicherheit & Verfügbarkeit
- Einfach zu nutzen und bereitzustellen
- Vielfältige Möglichkeiten zur Skalierbarkeit
- Zentralen Support und Ansprechpartner
Nachteile der Cloud
- Geringere Transparenz und Kontrolle
- Kostenplanung: Die Kosten sind von der Nutzung abhängig und variieren, können aber mit festem Budget begrenzt werden.
Vorteile Self-Hosted
- Volle Kontrolle über eigene Umgebung
- Planbare und meist geringere Kosten als bei der Cloud Lösung
Nachteile Self-Hosted
- Eingeschränkte Skalierbarkeit und Verfügbarkeit
- Höherer Aufwand zur Bereitstellung der benötigten Infrastruktur
Hosting Möglichkeiten – Vergleich
Die folgenden Möglichkeiten gibt es eine Web-App zu hosten. Die Tabelle ist nach der Skalierbarkeit absteigend sortiert, sodass die höchstskalierbare Lösung ganz oben gelistet ist.
Es gibt noch weitere Anbieter mit Lösungen, welche aus Platzgründen nicht genannt sind.
| Hosting Variante | Vorteile | Nachteile | Lösungen |
|---|---|---|---|
| Serverless in der Cloud | Hoch skalierbar Leichtgewichtig alle Vorteile einer Cloud Lösung | Abhängigkeit vom Cloud Anbieter (Vendor Lock) alle Nachteile einer Cloud Lösung | Microsoft Azure Functions AWS Lambda |
| Container on Premise, VM oder in der Cloud | Portierbar alle Vorteile einer Cloud Lösung | Kenntnisse über Docker und ggf. Kubernetes werden benötigt Bei einer Microservice Architktekur können die Kosten aufgrund der vielen benötigten Services mit der Zeit sehr hoch sein. alle Nachteile einer Cloud Lösung | Microsoft Container Instances oder AKS (mit Kubernetes) Amazon Elastic Container Service (ECS) |
| Platform as a service (Paas) in der Cloud | alle Vorteile einer Cloud Lösung | alle Nachteile einer Cloud Lösung | Azure App Services Amazon Elastic Beanstalk Google Cloud Platform |
| Self-Hosted auf VM oder eigenem Server | Unterstützung von legacy .NET Anwendungen alle Vorteile einer Self-Hosted Lösung | alle Nachteile einer Self-Hosted Lösung | Windows Server (OS) auf VM oder Dedicated Server mit einem Webserver: IIS (Internet Information Services) Apache NGINX |
Mein Ratschlag
Während der Entwicklungsphase und der Erstellung eines MVP (Minimum Valuable Product) bzw. POC (Proof of Concept) ist die Skalierbarkeit und Hochverfügbarkeit, sowie das dauerhafte Monitoring noch kein Erfolgsfaktor, da es zunächst darum geht, eine Lösung den Nutzern bereitzustellen, welche von Ihnen akzeptiert und gerne genutzt wird.
Dazu ist es hilfreich den Entwicklungsprozess möglichst schlank zu halten und sich mit möglichst wenig administrativen Aufgaben beschäftigen zu müssen.
Für simple Datenverwaltungslösungen (Hosting Art: Paas oder Self-Hosted)
Daher empfehle ich für simple Datenverwaltungsanwendungen welche hauptsächlich CRUD Operationen bereitstellen, eine MVC Anwendung (auch Razor) die über Azure App Services (Paas) gehostet wird, da das Deployment (CI/CD) und der Entwicklungsprozess schnell und einfach ist und da die Skalierbarkeit hierfür nicht so sehr ins Gewicht fällt, auch relativ günstig ist.
Bei Anwendungen die sich nach der initialen Entwicklung selten ändern und die Hochverfügbarkeit nicht gewährleistet werden muss, macht es aus Kosten- und Datenschutzgründen Sinn, diese selbst zu hosten.
Bei komplexeren Geschäftsabläufen und Automatisierungen (Hosting Art: Container & Serverless)
Wenn die Anwendung allerdings komplexere und umfangreiche Geschäftsabläufe abbildet und Teile davon Hochverfügbar und Ausfallsicher sein müssen, dann empfehle ich die Anwendung von Anfang an so zu designen das Teile davon extrahiert und separat bereitgestellt werden können (Clean Architecture). Ebenso sollte die Anwendung portierbar sein, um die Abhängigkeit von einem (Cloud) Anbieter zu vermeiden und die Anwendung einfach auf einen anderen Server bereitstellen zu können.
Hierzu macht es meiner Meinung nach Sinn, die UI komplett vom Web Server zu entkoppeln und als SPA bereitzustellen und das Backend über eine Web API innerhalb eines Docker Containers bereitzustellen. Wenn Teile davon skaliert werden sollen, dann lassen sich diese ebenfalls als eigene Docker Container (ASP .NET Services) bereitstellen oder bei stateless Operationen auch Serverless (z.B. Azure Functions) hosten.
Veröffentlichen der Web-App
Sobald die Hosting Lösung ausgewählt wurde, kann die Veröffentlichung der Web-App automatisiert über eine CI/CD Pipeline stattfinden.


