Laden...

Was ca kostet das Hosten eines kleinen Worker Services auf Azure?

Erstellt von CoderboyPB vor 3 Jahren Letzter Beitrag vor 3 Jahren 431 Views
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 3 Jahren
Was ca kostet das Hosten eines kleinen Worker Services auf Azure?

Hallo, ich plane meinen selbstgeschriebenen Twitter Bot als Worker Service auf Azure zu hosten, allerdings habe ich keine Ahnung, welche Kategorie das ist, finde deshalb im Pricing Calculator keine Antwort auf folgende Frage:

Was kostet (ungefähr, nur die grobe Größenordnung) das hosten eines sehr simplen kleinen Worker Services auf Azure?

16.806 Beiträge seit 2008
vor 3 Jahren

Die Bezeichnung Worker Service gibt es so nicht; was Du hast ist im Endeffekt eine Konsolenanwendung, die dauerhaft läuft.
Diese kannst Du aber in der Form nicht 1:1 in Azure hosten; jedenfalls nicht direkt (sondern dann über eine VM).

Die "Lift and Shift" Alternative ist ein Azure Web Job; hier kannst Du langlaufende Konsolen-Anwendungen starten lassen und mit bisschen Glue-Code klappt das auch mit normalen Konsolenanwendungen.
Oder aber Du packst das alles in einen Docker-Container, brauchst dann eine Web App mit Container Support und lässt das damit laufen (ab 8€).
Beide Dinge hat aber den Nachteil, dass Du Resourcen dauerhaft buchen musst, auch wenn Du sie nicht benötigst (weil zB. Deine App gerade im Idle ist, weil sie nichts tweeten muss).
Damit bezahlst Du entsprechend unnötig Zeugs und bist (im Vergleich) teurer unterwegs.

Auf einer Cloud-Plattform würde man das ganz anders programmieren, um Resourcen-schonend und damit auch extrem billig sowas laufen lassen zu können; zwei einfache Dinge.

  • Du verwendest eine Azure Logic App und baust Dir Dein Twitter Bot. Es gibt hier vorgefertigte Bausteine (zB. "auf Schlagwort hören" und "Tweet absenden"). Kannst also Dein Bot zusammen stecken. Beispiel: https://www.rubberduckdev.com/twitter-bot/
  • Du verwendest eine Azure Function, die einen Trigger verwendet um auf Twitter-Wörter zu hören, sodass Dein Code nur ausgeführt wird, wenn er gebraucht wird.
    Beides ist die absolut kostengünstigste Art und Weise so einen Bot umzusetzen.
    Das kann sogar so günstig sein, dass es kostenlos ist, weil Du jeden Monaten hier ein Kontingent an freien Ressourcen hast (bei Functions zB. 1 Million Ausführungen pro Monat sind immer kostenlos).
    In beiden Fällen erfolgt das Pricing immer nur nach den Ressourcen, die Du tatsächlich brauchst -> damit billig.
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 3 Jahren

Danke 😃

Mal ne kurze andere Frage, wenn ich das local als Widows Dienst betreibe, läuft dieser im STANDBY (nicht Ruhezustand) weiter?

16.806 Beiträge seit 2008
vor 3 Jahren

Standby ist der englische Begriff für den Ruhezustand.
Wäre mir neu, dass das unterschiedliche Dinge wären - und natürlich ist da alles aus.

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 3 Jahren

Standby nicht Hibernate

16.806 Beiträge seit 2008
vor 3 Jahren

Ah..jetz. Richtig. Aber in beiden Fällen is doch das System aus.
Der Unterschied war doch nur, dass Standby das System im RAM schlafen legt und Hibernate das System auf die Disk.
Aber aus ist aus.

16.806 Beiträge seit 2008
vor 3 Jahren

Da nun nach dem Thread Windows Dienst stoppt nach erster Ausführung klar ist was ein Worker ist (nämlich eine stink normale Hosting Pipeline; das Wort "Worker" ist hier selbst kriiert) kann man auch sachlich drauf antworten.

Du willst eigentlich gar kein Windows Service / "Worker" Service hosten, sondern Du willst nen .NET Background Service hosten.
Dazu kannst Du einfach eine ASP.NET Core Anwendung verwenden, die dann als WebApp läuft.
Darin musst Du einfach nur den Background Service in ASP.NET Core registrieren.

In den Azure Configs musst Du dann nur einstellen, dass die Anwendung dauerhaft laufen soll und nicht erst mit dem ersten Request (Always On).
Günstigste Variante ist hier 8€, weil Du in der Free Variante nur 60 Min free compute hast.

Bessere Variante:
einfach ne Azure Function nehmen, die alle X Minuten automatisch gestartet wird (kann man via Trigger angeben), die Deine Bot.Run() Methode ausführt. Den restlichen Code brauchst Du gar nicht.

[FunctionName("TwitterBot")] // alle 5 Minuten
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
      await Bot.Run();
}

Wenn ein Monat 43.200 Minuten hat und die Function alle 5 Min gestartet wird, dann sind das 8640 Ausführungen.
Damit dürfte das ganze kostenlos zu hosten sein.

PS: keine Ahnung, wieso für Deine ganzen Themen immer im Smalltalk-Bereich erstellst und wir die Themen dann verschieben müssen.
Nimm doch einfach den richtigen Forenbereich, danke 😉

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 3 Jahren

zum Thema 'Worker Service', das ist keine Wortschöpfung von mir:

https://www.stevejgordon.co.uk/what-are-dotnet-worker-services

Was die falschen Forenbereiche angeht, es ist ja nicht so, dass ich nicht vorher schaue, aber es ist wie so oft, auch bei Support Hotlines, dass man wie so oft nicht weiß, wo man sein Thema nun einordnen soll, aber klar, versuche ich es wenigstens.

16.806 Beiträge seit 2008
vor 3 Jahren

Ja, Worker Service ist aber kein Produkt, sondern ein Teil von ASP.NET.
Dahingehend hättest Du durchaus sagen können, von was Du wirklich sprichst - das hätte es einfacher gemacht 😉

Da hätte ich direkt sagen können, dass Du das gar nicht brauchst, um periodisch Dinge auf Azure auszuführen (siehe mein letzter Beitrag).

C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 3 Jahren

Das Thema Azure hat sich erledigt, der Twitterkollege wird das jetzt als Dienst auf seinem Rechner hosten, ich habe ihn über die Einschränkungen aufgeklärt, es ist OK für ihn.