Hosting einer ASP.NET Core Web-Anwendung

hosting einer web app

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 VarianteVorteileNachteileLösungen
Serverless in der CloudHoch 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 CloudPortierbar

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 Cloudalle Vorteile einer Cloud Lösungalle Nachteile einer Cloud Lösung Azure App Services

Amazon Elastic Beanstalk

Google Cloud Platform
Self-Hosted auf VM oder eigenem ServerUnterstützung von legacy .NET Anwendungen

alle Vorteile einer Self-Hosted Lösung
alle Nachteile einer Self-Hosted LösungWindows 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.


Nach oben scrollen