Deployment von Python-Webseiten ist schwer

Man kann Webseiten mit Python entwickeln, jedoch gibt es eine relative hohe Hürde um sie auch öffentlich anzubieten.

Früher, also so bis ungefähr 2010, habe ich in PHP entwickelt. Als Programmiersprache fand ich das damals okay, rückblickend finde ich PHP 4 ziemlich furchtbar. Aber es ist sehr pragmatisch und das hat auch seinen Wert.

Man kann einfach ein PHP-Skript schreiben, das irgendwie HTML generiert. Das lädt man per SFTP bei einem Webhoster hoch, ruft die entsprechende URL auf und hat sein Ding dort. Der Webserver löst die URL zu dem PHP-Skript auf und kann dieses dann ausführen. Das Deployment ist trivial, man lädt nur Dateien hoch.

Diese Einfachheit hat Paketen wie WordPress oder Matomo geholfen so viel Reichweite zu bekommen. Man lädt einfach die Sachen hoch, gibt noch die Zugangsdaten für die Datenbank ein und es geht los.

Nun habe ich keine Erfahrungen mehr mit PHP, mein altes Wissen zu PHP 4 ist verblasst und ich müsste mal PHP 7 oder 8 lernen um da sinnvoll weitermachen zu können. Ich arbeite inzwischen fast nur noch mit Python und C++. Wenn ich jetzt eine Webseite bauen möchte, würde ich das am liebsten mit Python und einem Framework wie Django oder zumindest Flask oder Uvicorn mit FastAPI und Jinja oder weiteren Bibliotheken machen wollen. An sich ist das auch gar nicht so schwer.

Das Problem ist dann aber beim Deployment. Man kann nicht einfach Python-Skripte hochladen und diese dann ausführen. Vielmehr muss man einen Python-Prozess starten und denn per WSGI oder ASGI an einen Webserver ankoppeln. Man braucht also Kontrolle über den Webserver und muss Start-Skripte für seinen Python-Webservice einbringen können.

Mein Hoster unterstützt das nicht, der hat nur PHP und statische Dateien. Mit 2,50 EUR/Monat ist der aber sehr günstig. Für meinen Blog und E-Mail finde ich das wunderbar.

Wenn ich jetzt etwas in Python anbieten möchte, muss ich das irgendwie bei einem Hoster explizit für Python machen oder meinen eigenen virtuellen Server betreiben. Allerdings kostet das dann ziemlich schnell ordentlich Geld. Bei Render kann man zwar kostenlos anfangen, jedoch kostet eine PostgreSQL Datenbank kann schon 7 USD/Monat. Man könnte vielleicht noch die Daten einfach so in Dateien oder einer SQLite-Datenbank speichern für 0,25 USD/Monat/GB. Das wäre noch machbar.

Bei A2 Hosting kostet ein Paket ab 2,99 USD/Monat, zumindest in der Einführungsphase. Danach sind es eher 11,99 USD/Monat. Dafür ist die Datenbank allerdings schon mit dabei. Für ein kleines Spaßprojekt ist das schon eine Hürde.

Man könnte zum Beispiel auch bei Amazon AWS einfach eine kleine Cloud-Instanz mit Ubuntu holen und das dort machen. Bei EC2 gibt es die kleinste Instanz mit t4g.nano, die kostet 0,0042 USD/h. Die hat 2 CPU-Kerne und 512 MB Speicher. Ein Monat hat um 720 Stunden, sodass das dann 3,02 EUR wären. Das wäre schon bezahlbar, allerdings weiß ich nicht ob das dann reicht. Möchte man doppelt so viel Arbeitsspeicher haben, wären 6,04 EUR/Monat fällig.

Das ganze sehe ich immer im Vergleich zu PHP bei meinem Hoster. Da muss ich nichts zusätzlich bezahlen, ich kann letztlich beliebig viele kleine Anwendungen darauf betreiben.

Das ganze ist natürlich nur ein Problem, so lange die angebotenen Dienste Spaßprojekte sind und nicht sonderlich nachgefragt sind. Sobald das ein ernstes Produkt ist, möchte man auch noch mehr Leistung hinterlegen. Dann müsste ich auch bei PHP ein dickeres Paket bei meinem Hoster buchen.

Ich bin hier einfach nur in einer Nische in der ich fast keine Leistung brauche und einfach nur ein paar Spaßprojekte anbieten möchte. Das scheint in Python (und anderen Dingen wie Node JS) nicht wirklich angeboten zu werden. Das ist auch verständlich, warum sollte jemand explizit geizige Kunden als Zielgruppe deklarieren. Damit ist kein Geld zu verdienen.