Microsoft Azure bietet eine leistungsstarke Reihe von Diensten, mit denen Entwickler ihre Apps erstellen und bereitstellen können. Azure macht es so einfach zu bedienen, dass Sie Ihre Azure-Hosting-Kosten schnell außer Kontrolle geraten lassen können. Es gibt jedoch Möglichkeiten, Ihre Azure-Preise besser zu verwalten und Ihre Gesamtkosten zu optimieren.
Bei Stackify verwenden wir Azure seit über 4 Jahren. Wir sind mit Azure aufgewachsen, wie wir gerne sagen, und nutzen eine breite Palette verschiedener Azure-Dienste und geben jedes Jahr ein kleines Vermögen dafür aus. Wir schreiben diesen Artikel, um einige unserer besten Tipps zu teilen.
Konzentrieren wir uns auf 5 verschiedene Möglichkeiten, Ihre Kosten zu senken:
- Senken Sie Ihre tatsächlichen Azure-Preise
- Ermitteln Sie Ihre aktuellen Kosten
- Optimieren Sie die Bereitstellung Ihrer Apps
- Verbessern Sie die Leistung Ihrer App
- Weitere Tipps
So senken Sie die Microsoft Azure-Preise & Effektives Azure-Kostenmanagement
einige Rabatte auf Ihre Rechnung oder erhalten Sie etwas kostenlos!
1. Pre-Pay, um einen Rabatt zu erhalten, auch auf einem Pay-as-you-go-Konto.
Microsoft hat Rabatte von 2,5-5% basierend auf 6 oder 12 Monaten Vorauszahlung angeboten. Prüfen Sie, ob Sie davon profitieren können. Eine EA-Vereinbarung kann jedoch eine bessere Option sein.
2. Holen Sie sich eine EA-Vereinbarung für maximale Azure-Rabatte.
EA-Vereinbarungen erfordern die Auswahl einer jährlichen Geldverpflichtung, die einen Abzinsungssatz einschließt. Sie werden dann vierteljährlich für Überschreitungen über Ihr jährliches Commit hinaus in Rechnung gestellt.
Mit einer EA-Vereinbarung können Sie bei einigen Azure-Produkten bis zu 20-30% einsparen. Seien Sie gewarnt, die Diskontsatzpläne sind ein Durcheinander. Als Beispiel könnte Ihr Diskontsatz für SQL Azure 5% betragen, aber Cloud-Services könnten etwa 10-20% betragen und es ist für jede einzelne SKU, die sie verkaufen, unterschiedlich. Einige bieten möglicherweise überhaupt keinen großen Rabatt. Es gibt Tausende von SKUs. Stellen Sie also sicher, dass Sie wissen, welche Azure-Dienste Sie wirklich benötigen, und maximieren Sie den Rabatt auf diese SKUs in Ihrer EA-Vereinbarung.
3. Können Sie sich für Bizspark anmelden?
Stackify war ursprünglich in Bizspark und konnte viele tolle kostenlose Vorteile erhalten. Microsoft wirbt bis zu 120.000 US-Dollar an kostenlosen Vorteilen für Startups. Kein schlechter Deal!
4. Können Sie Azure-Regionen für bessere Azure-Preise wechseln?
Die Azure-Preise variieren von Region zu Region, auch in den USA. Überprüfen Sie die Preise in verschiedenen Regionen, um zu sehen, ob Sie ein wenig sparen können.
Beispiel: A2 VM in West US ist $133.92 aber $126.48 in West US 2. Australien Ost ist $168.14
5. Erhalten Sie kostenloses Geld von Microsoft, indem Sie mit einem Azure-Partner an einem Projekt arbeiten.
Wenn Sie ein großes Projekt haben, um zu Azure zu wechseln, können Sie einige Rabatte erhalten, um Anreize zu schaffen und einen Microsoft-Partner zu bezahlen, der Sie bei der Umsetzung unterstützt. Als ein Beispiel konnten wir dies tun, um eine Reihe von Arbeiten mit Chef zu erledigen.
Finden Sie heraus, wie hoch Ihre aktuellen Azure-Kosten sind, und organisieren Sie die Berichterstellung
Die Chancen stehen gut, dass Sie nicht wissen, was Sie nicht wissen, wenn es darum geht, wie viel Sie ausgeben und wofür Sie es ausgeben. Mit Azure ist es so einfach, neue Ressourcen hochzufahren und sie einfach zu vergessen.
6. Wissen Sie, wie viel Sie für was ausgeben, was ohne Werkzeug schwierig ist.
Microsoft verfügt über einige Tools, mit denen Sie Ihre Abrechnung analysieren können:
- Azure billing portal
- EA portal – https://ea.azure.com/
Beide lassen für jede fortgeschrittene Berichtsebene zu wünschen übrig. Sie können Ihre EA-Daten mit PowerBI verbinden, was einige weitere Möglichkeiten zum Crunchen der Daten eröffnet, aber Sie müssen die Daten wirklich nach Projekt, Abteilungen usw. segmentieren. um mehr Einblicke zu erhalten.
Es gibt eine Menge von Tools von Drittanbietern zur Verfügung, obwohl erschreckend, viele von ihnen über $1.000 pro Monat! Wir empfehlen die Verwendung eines Dienstes namens Azure Costs (https://azure-costs.com/), der kostengünstig ist und hervorragende Arbeit leistet. Es hat eine kostenlose Stufe und bezahlte Optionen von $ 29 – $ 199 pro Monat.
Nur um Ihnen eine Idee zu geben, können Sie die Berichte auf verschiedene Arten gruppieren, um zu verstehen, ob Sie viel für VMs, SQL Azure, App Services usw. ausgeben.
Gruppieren Sie nach verschiedenen Feldern in Azure Costs
7. Weisen Sie Azure-Ausgaben für eine bessere Berichterstellung nach Projekt, Umgebung oder Client zu.
Bei Stackify hosten wir unsere Produktions-, Vorproduktions-, QA-, Entwicklungs- und Test-Apps alle mit Azure. Wenn wir unsere Rechnung auf hohem Niveau betrachten, gibt es keine gute Möglichkeit zu wissen, wie viel wir für welche Umwelt ausgeben, die uns wichtig ist.
Wie viel wir in der Produktion ausgeben, wirkt sich auf unsere Margen als Unternehmen aus und wir möchten auch die Kosten in Entwicklungs- / Testumgebungen minimieren.
Wir verwenden Azure Costs, um zu organisieren, wofür wir Geld ausgeben. Wir markieren einfach jede Azure-Ressource und können dann Berichte anhand der Tags abrufen, um die Ausgaben pro Umgebung einfach anzuzeigen.
Tag resources in Azure Costs
Wir können dann Berichte von jedem Tag erhalten, um zu verstehen, wie wir unser Geld ausgeben.
Reporting by Tag in Azure Costs
Optimieren Sie die Bereitstellung Ihrer Apps, um Geld in Azure zu sparen
Wenn Sie eine Anwendung nach Azure verschieben, gibt es einige Möglichkeiten, Geld zu sparen, an die Sie möglicherweise nicht einmal denken. Ich möchte Ihnen auch einige Tipps zur Optimierung von App-Diensten, Cloud-Diensten usw. geben.
8. Wählen Sie den richtigen Typ und die richtige Größe virtueller Maschinen aus.
Wenn Sie Azure zum Hosten virtueller Maschinen verwenden, stellen Sie sicher, dass Sie den richtigen Instanztyp auswählen. Es gibt buchstäblich Dutzende verschiedener Typen und Größen. Stellen Sie sicher, dass Sie den richtigen Typ auswählen, je nachdem, ob Sie mehr Speicher, CPU, schnellere Festplatte usw. benötigen.
9. Verwenden Sie Azure DevTest Labs, um sicherzustellen, dass Test-VMs automatisch heruntergefahren werden, um Geld zu sparen.
Nichts ist ärgerlicher, als wenn jemand einen Testserver einrichtet und später herausfindet, dass man monatelang dafür bezahlt hat. Azure DevTest Labs eignet sich hervorragend zum Erstellen von Servern, die Sie gelegentlich oder nur zu bestimmten Tageszeiten benötigen.
DevTest Labs können sie automatisch nach einem Zeitplan ein- und ausschalten. Dies hilft sehr bei der Lösung des Problems, dass Ihr QA-Team vergisst, Server herunterzufahren, bevor sie für den Tag oder das Wochenende abreisen.
Hinweis: DevTest Labs kostet nichts zusätzlich zu verwenden. Sie zahlen lediglich für die VMs selbst.
10. Vermeiden Sie es, für Staging-Slots für Cloud-Dienste zu bezahlen.
Mit Azure Cloud Services für Web- und Worker-Rollen zahlen Sie den vollen Preis für Staging-Slots genau wie für Produktions-Slots. Es ist eine gute Idee, Staging-Slots bereitzustellen und dann Staging in die Produktion zu tauschen, um Ausfallzeiten zu minimieren.
Stellen Sie sicher, dass Sie die Staging-Slots so schnell wie möglich löschen. Nichts macht mich verrückter, als mich bei Azure anzumelden und eine Menge Dinge zu sehen, die ohne Grund in Staging-Slots bereitgestellt werden.
Bearbeiten Sie die Ansicht im Azure-Portal, um Spalten für „Staging“ und „Produktion“ hinzuzufügen, damit Sie schnell sehen können, welche sich in den Staging-Slots befinden. Cloud-Dienste kosten Sie Geld, auch wenn die Server gestoppt werden. Sie müssen sie löschen!
11. Kombinieren Sie Web-Apps mit Azure App Service-Plänen, um die Anzahl der Server zu reduzieren.
Eine der absolut besten Funktionen von Azure sind App Services. Sie können einen App-Serviceplan erstellen, der 2-3 oder mehr Server darstellt, und dann so viele Webanwendungen packen, wie Sie möchten.
Dies ist ein großer Vorteil gegenüber der Bezahlung eines ganzen Servers für eine Webanwendung, die kaum etwas tut. Wir haben Cloud-Service-Webrollen für immer verwendet und verfügen in einigen Fällen über 3 Instanzen für hohe Verfügbarkeit in einer Webanwendung, die praktisch keinen Datenverkehr erhält. Es ist eine riesige Verschwendung.
12. Verwenden Sie keine Cloud-Service-Webrollen mehr, es sei denn, Sie müssen dies tun.
Wenn Sie Azure Cloud Services nicht für Webrollen verwenden müssen, würde ich darauf hinarbeiten, Ihre Apps auf App Services umzustellen, um die Vorteile der Kombination mehrerer Apps mit weniger Servern zu nutzen.
Die Bereitstellung von Cloud-Diensten dauert ebenfalls EWIG. App-Dienste sind Lichtjahre schneller für die Bereitstellung auf.
13. Verwenden Sie Azure Service Fabric oder Container Service, um Apps zu kombinieren.
Aus genau den gleichen Gründen, die ich oben bei App-Diensten und Webrollen erwähnt habe, sollten Sie Ihre Worker-Rollen in Service Fabric oder Container Service verschieben. Beide folgen dem Muster wie App-Service-Pläne, bei denen Sie im Grunde eine Gruppe von Servern bereitstellen und dann eine Reihe von Apps darauf werfen.
14. Verwenden Sie die automatische Skalierung, um die Kosten außerhalb der Geschäftszeiten zu senken.
Die meisten Apps haben belebtere und langsamere Perioden während einer Woche oder eines Tages. Nutzen Sie die in Azure integrierte automatische Skalierung, um in langsamen Zeiten etwas Geld zu sparen.
Diese Bereitstellungstypen unterstützen alle die automatische Skalierung:
- Cloud Services
- App Services
- VM-Skalierungssätze (einschließlich Batch, Service Fabric, Container Service)
Skalierung kann auch bedeuten, dass Ihre App vollständig heruntergefahren wird. App-Dienste verfügen über eine Funktion namens AlwaysOn, die steuert, ob die App aufgrund keiner Aktivität heruntergefahren werden soll. Sie können auch das Herunterfahren Ihrer Dev / QA-Server mit etwas wie DevTest Labs planen. Es gibt auch Dienste von Drittanbietern wie Park My Cloud.
15. Verwenden Sie Azure PaaS-Funktionen; Rollen Sie Ihre eigenen nicht auf VMs, es sei denn, Sie müssen.
Ich habe mit mehreren Leuten gesprochen, die Azure verwenden, und ihre Version von Azure richtet einige VMs ein und hostet ihre App und SQL Server auf diesen VMs.Die Nutzung von Azure für virtuelle Maschinen und IaaS ist in Ordnung, aber Sie verpassen viele Möglichkeiten, die Verwaltungskosten zu senken und die Azure-Kosten insgesamt zu senken. Es sei denn, Sie haben einen wirklich, wirklich guten Grund, SQL in einer VM zu verwenden, z. B. den Kauf eines Load Balancers eines Drittanbieters, der in einer VM ausgeführt wird, und andere Szenarien.
Bei Stackify nutzen wir jede mögliche PaaS-Funktion von Azure. Dazu gehören SQL Azure, Redis, Tabellenspeicher, Service Bus usw. Der Gedanke, VMs für Redis oder einen anderen Warteschlangendienst einzurichten, scheint eine wirklich schreckliche Idee zu sein. Die einzige Ausnahme ist Elasticsearch.
Azure Search ist verfügbar und ist ein grundlegendes Elasticsearch-PaaS-Angebot. Aufgrund der Größe und des Umfangs unseres Elasticsearch-Clusters ist es sinnvoller, ihn selbst zu verwalten.
16. Verwenden Sie SQL Elastic Pools.
Wenn Sie viele Datenbanken haben, sollten Sie SQL Elastic Pools in Betracht ziehen.
Bei Azure müssen Sie für jede einzelne Datenbank eine Leistungsebene auswählen. Dies funktioniert sehr gut und bietet ein vorhersehbares Leistungsniveau. In vielen Fällen führt dies jedoch auch zu einer übermäßigen Bereitstellungsleistung.Stellen Sie sich einen Azure SQL Elastic Pool eher als Server vor, und Sie können diesem Server eine Reihe von Datenbanken zuweisen. Dadurch kann die Leistung jeder Datenbank innerhalb der Gesamtressourcen des Servers ab- und abfließen.
Bei Stackify hat jeder unserer Kunden seine eigenen SQL-Datenbanken. Wir haben buchstäblich Hunderte von ihnen, und wir fügen neue hinzu und de-Bereitstellung einige jeden Tag. SQL Elastic Pools sind für uns entscheidend, um so viele Datenbanken in großem Maßstab zu verwalten.
Verbessern Sie die Leistung Ihrer Anwendung selbst
OK, wenn Sie maximiert haben, wie viel Sie für Azure ausgeben, wenn es um Ihre Azure-Gesamtpreise und die Bereitstellung Ihrer Apps geht, ist es an der Zeit, mit der Leistungsoptimierung zu beginnen.
Ich würde vorschlagen, eine Art APM-Tool wie Retrace, Azure Application Insights oder New Relic zu verwenden.
17. Zeit, die Profiler rauszuholen!
Wenn Sie die Leistung Ihres Codes optimieren möchten, müssen Sie ein Code-Profiling durchführen. Es gibt drei verschiedene Arten von Profilern, und Sie benötigen möglicherweise alle drei, um Ihren Code wirklich zu verbessern.
- Standard Profiler – Profilieren Sie Ihren Code auf Ihrer Workstation, um nach langsamen Methoden in Ihrem Code zu suchen
- Transaktionsverfolgung – Erfassen ASP.NET profiler und überprüfen Sie, was passiert
- APM – Verfolgen Sie die Gesamtleistung Ihrer Anwendung und ihrer Abhängigkeiten
18. Identifizieren Sie Ihre am häufigsten verwendeten und langsamsten Webanforderungen oder Transaktionen.
Suchen Sie nach Anfragen, die viel Zeit in Anspruch nehmen oder mäßig oft vorkommen, aber viel zu lange dauern. Schau dir an ASP.NET transaktionsspuren, um festzustellen, ob zu viele SQL-Abfragen ausgeführt werden, langsame Webdienste usw.
Die meisten modernen Anwendungen sind mehr an Datenbank- oder Webdienstaufrufe gebunden. Wenn Ihr Code selbst langsam ist, möchten Sie wahrscheinlich einen Standard-.NET-Profiler wie den Visual Studio-Profiler verwenden, um herauszufinden, warum.
Top-Webanforderungen von Retrace APM
19. Optimieren Sie die SQL-Datenbankleistung.
Jede ausgelastete Anwendung kann normalerweise von einer grundlegenden SQL-Optimierung profitieren. SQL Azure verfügt über einige großartige grundlegende Funktionen für Leistungsberichte und Empfehlungen zur Indexoptimierung.
Wenn Sie tiefer gehen müssen, stellen Sie sicher, dass Sie die DMVs in SQL abfragen, um festzustellen, auf welche Abfragen am häufigsten zugegriffen wird, welche die meisten E / A verwenden, am längsten dauern usw. Achten Sie auch darauf, wie lange die Abfragen aus der Sicht Ihrer App dauern.
Sie können Ihr APM-Tool auch nutzen, um festzustellen, welche Abfragen am häufigsten verwendet werden und welche Aktionen in Ihrer Software sie aufrufen.
Top SQL-Abfragen Ansicht von Retrace APM
20. Verfolgen Sie die Nutzung und Leistung aller Anwendungsabhängigkeiten.
Abgesehen von SQL Server führt Ihre Anwendung wahrscheinlich Webdienstaufrufe durch, verwendet Warteschlangen, Caching und andere Abhängigkeiten, einschließlich anderer Azure-Funktionen wie DocumentDB, Azure Storage usw.
Stellen Sie sicher, dass alle diese Abhängigkeiten über Azure eine gute Leistung erbringen und ordnungsgemäß skaliert werden.
Weitere Ideen zur Senkung der Azure-Kosten
Hier sind einige weitere Ideen, die Sie berücksichtigen sollten, um die Ausgaben für Azure zu senken.
21. Können Sie ein CDN verwenden?
Ein CDN wie Cloudflare macht es wirklich einfach, alle Ihre statischen Dateien ohne Codeänderungen zwischenzuspeichern. Cloudflare bietet auch eine Menge cooler Funktionen, mit denen Sie die Leistung optimieren können.Azure hat auch ein sehr einfaches CDN-Angebot, das Sie ausprobieren können, aber es macht nicht das, was Cloudflare tut.
22. Können Sie die neue Azure Cold Storage-Option verwenden?
Azure bietet jetzt warmen und kalten Azure-Speicher. Warm ist für Daten gedacht, die häufig verwendet werden, und kalt ist für Daten, die selten verwendet werden. Wenn Sie viele Daten haben, die kaum verwendet werden, Backups, Archive oder andere Daten, sollten Sie sich Cold Storage ansehen.
Optimierung der Azure Cloud-Hosting-Kosten
Ich hoffe, Sie fanden diese Liste hilfreich. Beginnen Sie mit einigen der einfachsten Ideen, die Sie implementieren können, und lassen Sie die Optimierung Ihres Codes zum Schluss.
Die Optimierung Ihres Codes ist bei weitem der schwierigste Teil und kann enorm viel Zeit und Regressionstests in Anspruch nehmen. Bei Stackify haben wir APIs, die Millionen und Abermillionen Mal am Tag aufgerufen werden. Wenn Sie Code haben, der so oft aufgerufen wird wie unserer, lohnt es sich auf jeden Fall, in die Low-Level-Code-Optimierungen zu investieren, sonst … vielleicht nicht.