Microsoft Azure tillhandahåller en kraftfull uppsättning tjänster som hjälper utvecklare att bygga och distribuera sina appar. Azure gör det så enkelt att använda att du snabbt kan låta dina Azure-värdkostnader komma ur kontroll. Det finns dock sätt att bättre hantera din Azure-prissättning och optimera dina totala kostnader.
på Stackify har vi använt Azure i över 4 år. Vi har vuxit upp med Azure som vi vill säga och utnyttja ett brett utbud av olika Azure-tjänster och spendera en liten förmögenhet på det varje år. Vi skriver den här artikeln för att dela några av våra bästa tips.
låt oss fokusera på 5 olika sätt att sänka dina kostnader:
- sänk dina faktiska azure-priser
- ta reda på vad dina nuvarande kostnader är
- optimera hur du distribuerar dina appar
- förbättra prestanda för din app
- andra tips
hur du sänker Microsoft Azure-prissättning& effektiv Azure Cost Management
en av de enklaste sakerna du kan göra är att helt enkelt få några rabatter på din faktura eller få något gratis!
1. Pre-pay för att få rabatt, även på ett pay-as-you-go-konto.
Microsoft har erbjudit rabatter på 2,5-5% baserat på 6 eller 12 månaders förskottsbetalning. Kontrollera om du kan dra nytta av detta. Ett EA-avtal kan dock vara ett bättre alternativ.
2. Få ett EA-avtal för maximala Azure-rabatter.
EA-avtal kräver att man väljer ett årligt monetärt åtagande och som låser in en diskonteringsränta. Du faktureras sedan kvartalsvis för eventuella överskott utöver ditt årliga åtagande.
ett EA-avtal kan spara upp till 20-30% eller så för vissa Azure-produkter. Varnas, diskonteringshastighetsscheman är en röra. Precis som ett exempel kan din diskonteringsränta på SQL Azure vara 5% men molntjänster kan vara ungefär 10-20% och det är annorlunda för varje enskild SKU de säljer. Vissa kanske inte erbjuder mycket rabatt alls. Det finns tusentals SKU. Så var noga med att veta vilka Azure-tjänster du verkligen behöver och maximera rabatten på dessa SKU: er i ditt EA-avtal.
3. Kan du anmäla dig till Bizspark?
Stackify var ursprungligen i Bizspark och kunde få många fantastiska gratisförmåner. Microsoft annonserar upp till $120,000 i gratis förmåner för startups. Inte en dålig affär!
4. Kan du byta Azure-regioner för bättre azure-prissättning?
Azure prissättning varierar från en region till en annan, även i USA. Dubbelkolla prissättningen i olika regioner för att se om du kan spara lite.
exempel: A2 VM i västra USA är $133.92 men $126.48 i västra USA 2. Australien East är $168.14
5. Få gratis pengar från Microsoft genom att arbeta med en Azure-partner i ett projekt.
Om du har ett stort projekt att flytta till Azure kan du få några rabatter som hjälper till att stimulera och betala för en Microsoft-partner för att hjälpa till att få det att hända. Som ett exempel kunde vi göra detta för att hjälpa till att göra en massa arbete med kocken.
ta reda på vad dina nuvarande Azure-kostnader är och organisera rapportering
oddsen är, du vet inte vad du inte vet när det gäller hur mycket du spenderar och vad du spenderar det på. Det är så enkelt med Azure att snurra upp nya resurser och helt enkelt glömma dem.
6. Vet hur mycket du spenderar på vad, vilket är svårt utan ett verktyg för det.
Microsoft har ett par verktyg som du kan använda för att analysera din fakturering:
- Azure billing portal
- EA portal – https://ea.azure.com/
båda dessa lämnar mycket att önska för alla avancerade rapporteringsnivåer. Du kan ansluta dina EA-data till PowerBI vilket öppnar några fler möjligheter att krossa data, men du behöver verkligen segmentera data efter projekt, avdelningar och etc. för att få mer insikt i det.
det finns många tredjepartsverktyg tillgängliga, men skrämmande, många av dem över $1000 per månad! Vi rekommenderar att du använder en tjänst som heter Azure Costs (https://azure-costs.com/) vilket är billigt och gör ett bra jobb. Den har en gratis nivå och betalda alternativ från $29 – $199 per månad.
bara för att ge dig en uppfattning kan du gruppera rapporteringen en massa olika sätt att förstå om du spenderar mycket på VM, SQL Azure, App Services etc.
Gruppera efter olika fält i Azure Costs
7. Tilldela Azure-utgifter per projekt, miljö eller klient för bättre rapportering.
på Stackify är vi värd för våra produktions -, förproduktions -, QA -, utvecklings-och testappar alla med Azure. När vi tittar på vår räkning på en hög nivå finns det inget bra sätt att veta hur mycket vi spenderar på vilken miljö, vilket är viktigt för oss.
hur mycket vi spenderar i produktionen påverkar våra marginaler som företag och vi vill också minimera kostnaderna i dev/testmiljöer.
Vi använder Azure Costs för att organisera vad vi spenderar pengar på. Vi märker helt enkelt varje Azure-resurs och sedan kan vi få rapportering av taggarna för att enkelt se utgifter per miljö.
Tag resurser i Azure kostnader
Vi kan sedan få rapportering av varje tagg för att förstå hur vi spenderar våra pengar.
rapportering efter tagg i Azure kostar
optimera hur du distribuerar dina appar för att spara pengar på Azure
om du flyttar ett program till Azure finns det några sätt att spara pengar som du kanske inte ens tänker på. Vill också ge dig några tips om hur du optimerar Apptjänster, molntjänster etc.
8. Välj rätt typ och storlek på virtuella maskiner.
om du använder Azure för att vara värd för virtuella maskiner, se till att du väljer rätt typ av instans. Det finns bokstavligen dussintals olika typer och storlekar. Se till att du väljer rätt typ baserat på om du behöver mer minne, CPU, snabbare disk etc.
9. Använd Azure DevTest Labs för att säkerställa att Test VMs får automatisk avstängning för att spara pengar.
ingenting är mer irriterande än någon som ställer in en testserver och upptäcker senare att du har betalat för det i månader och månader. Azure DevTest Labs är fantastiskt för att skapa servrar som du behöver ibland eller bara vissa timmar på dagen.
DevTest Labs kan automatiskt slå på dem och stänga av dem på ett schema. Detta hjälper mycket med att lösa problemet med att ditt QA-team glömmer att stänga av servrar innan de åker för dagen eller helgen.
Obs: DevTest Labs kostar inget extra att använda. Du betalar helt enkelt för VMs själva.
10. Undvik att betala för staging slots på molntjänster.
med Azure Cloud Services för webb-och Arbetarroller betalar du hela priset för staging slots precis som du gör produktionsplatser. Det är bra att distribuera till staging slots och sedan byta staging i produktion för att minimera stilleståndstid.
se till att du tar bort mellanlagringsplatserna så snabbt som möjligt. Ingenting gör mig galnare än att logga in i Azure och se en massa saker utplacerade i staging slots sitter där utan anledning.
redigera vyn i Azure-portalen för att lägga till kolumner för ”Staging” och ”Production” så att du snabbt kan se vilka som har något i staging-spåren. Molntjänster kostar pengar även om servrarna stoppas. Du måste ta bort dem!
11. Kombinera webbappar med Azure App-serviceplaner för att minska antalet servrar.
en av de absolut bästa funktionerna i Azure är App Services. Du kan skapa en app serviceplan som representerar 2-3 eller fler servrar och sedan packa så många webbapplikationer som du vill på dem.
detta är en stor fördel jämfört med att betala för en hel server för en webbapplikation som knappast gör någonting. Vi har använt Molntjänstens Webbroller för alltid och har i vissa fall 3 instanser för hög tillgänglighet på en webbapp som nästan inte får någon trafik. Det är ett enormt slöseri.
12. Sluta använda Molntjänstens Webbroller om du inte måste.
Om du inte måste använda Azure Cloud Services för Webbroller, skulle jag arbeta för att byta dina appar till App Services för att dra nytta av att kombinera flera appar till färre servrar.
molntjänster tar också evigt att distribuera till. Apptjänster är ljusår snabbare för distribution till.
13. Använd Azure Service Fabric eller Container Service för att kombinera appar.
av exakt samma skäl som jag nämner ovan med Apptjänster och webbroller, titta på att flytta dina Arbetarroller till Service Fabric eller Container Service. Båda följer mönstret som App serviceplaner där du i princip tillhandahåller en grupp servrar och sedan kastar en massa appar på dem.
14. Använd automatisk skalning för att minska kostnaderna under lediga timmar.
de flesta appar har livligare och långsammare perioder under en vecka eller dag. Dra nytta av automatisk skalning inbyggd i Azure för att spara lite pengar under långsamma perioder.
dessa distributionstyper stöder alla automatisk skalning:
- molntjänster
- Apptjänster
- VM-Skalsatser (inklusive Batch, Service Fabric, Container Service)
skalning kan också innebära att du stänger av din app helt. App Services har en funktion som heter AlwaysOn som styr om appen ska stängas av på grund av ingen aktivitet. Du kan också schemalägga att stänga av dina dev/QA-servrar med något som DevTest Labs. Det finns också tjänster från tredje part som Park My Cloud.
15. Använd Azure PaaS-funktioner; rulla inte dina egna på virtuella datorer om du inte måste.
Jag har pratat med flera personer som använder Azure och deras version av att använda Azure ställer in några virtuella datorer och värd för deras app och SQL Server på dessa virtuella datorer.
att utnyttja Azure för virtuella maskiner och IaaS är bra, men du går miste om många möjligheter att minska hanteringskostnaderna och sänka Azure-kostnaderna som helhet. Om du inte har en riktigt, riktigt bra anledning att använda SQL i en VM, som att köpa någon tredje parts lastbalanserare som körs i en VM och andra scenarier, gör det bara inte.
på Stackify utnyttjar vi alla PaaS-funktioner i Azure vi kan. Det inkluderar SQL Azure, Redis, Tabelllagring, servicebuss etc. Tanken på att ställa in VM för Redis eller någon annan kötjänst verkar vara en riktigt hemsk ide. Det enda undantaget för oss är elasticsearch.
Azure Search är tillgänglig och är en grundläggande elasticsearch PaaS erbjudande. På grund av storleken och omfattningen av vårt elasticsearch-kluster är det mer meningsfullt att hantera det själva.
16. Använd SQL elastiska pooler.
Om du har många databaser bör du överväga SQL Elastic pools.
med Azure måste du välja en prestandanivå för varje enskild databas. Detta fungerar mycket bra och ger en förutsägbar prestationsnivå. Men det resulterar också i över provisioning prestanda i många fall.
Tänk på en Azure SQL Elastic Pool som mer av en server och du kan få tilldela en massa databaser till den servern. Det gör att prestanda för varje databas kan ebb och flöde inom serverns totala resurser.
på Stackify har alla våra kunder sina egna SQL-databaser. Vi har bokstavligen hundratals av dem, och vi lägger till nya och avbeställer några varje dag. SQL elastiska pooler är avgörande för oss att hantera att många databaser i skala.
förbättra prestandan för själva applikationen
OK, om du har maximerat hur mycket du spenderar på Azure när det gäller din övergripande Azure-prissättning och hur du distribuerar dina appar är det dags att börja göra lite prestandajustering.
Jag föreslår att du använder någon typ av APM-verktyg som Retrace, Azure Application Insights eller New Relic.
17. Dags att ta fram profilerna!
Om du vill optimera prestandan för din kod måste du göra lite kodprofilering. Det finns tre olika typer av profiler och du kan behöva alla tre för att verkligen förbättra din kod.
- standardprofiler-profilera din kod på din arbetsstation för att leta efter långsamma metoder i din kod
- Transaktionsspårning-fånga kompletta webbförfrågningar via en ASP.NET profiler och granska vad som händer
- APM-spåra den totala prestandan för din ansökan och dess beroenden
18. Identifiera dina mest använda och långsammaste webbförfrågningar eller transaktioner.
leta efter förfrågningar som tar mycket tid eller händer ett måttligt antal gånger men tar alldeles för lång tid. Titta på ASP.NET transaktionsspår för att se om för många SQL-frågor händer, långsamma webbtjänster etc.
de flesta moderna applikationer är mer bundna av Databas-eller webbtjänstsamtal. Om själva koden kan vara långsam vill du förmodligen använda en standard. Net profiler, som Visual Studio profiler för att försöka lista ut varför.
Top Web Requests från Retrace APM
19. Optimera SQL-databasens prestanda.
varje upptagen applikation kan vanligtvis dra nytta av vissa grundläggande SQL tuning. SQL Azure har några bra grundläggande funktioner för resultatrapportering och index tuning rekommendationer.
Om du behöver gå djupare, var noga med att fråga DMVs i SQL för att identifiera vilka frågor som nås mest, använd mest IO, ta längst etc. Var också noga med att se hur lång tid frågorna tar ur din app.
Du kan också utnyttja ditt APM-verktyg för att identifiera vilka frågor som används mest och vilka åtgärder i din programvara som ringer dem.
topp SQL-frågor vy från Retrace APM
20. Spåra användning och prestanda för alla applikationsberoende.
utöver bara SQL server gör din applikation förmodligen webbtjänstsamtal, använder köer, cachning och andra beroenden, inklusive andra Azure-funktioner som DocumentDB, Azure Storage, etc.
se till att alla dessa beroenden fungerar bra och korrekt skalas via Azure.
andra ideer för att sänka Azure-kostnaderna
Här är några andra ideer att överväga för att hjälpa till att sänka hur mycket du spenderar på Azure.
21. Kan du använda en CDN?
en CDN som Cloudflare gör det väldigt enkelt att lägga till cachning av alla dina statiska filer utan kodändringar. Cloudflare har också massor av coola funktioner som kan användas för att optimera prestanda.
Azure har också ett mycket enkelt CDN-erbjudande som du kan prova, men det gör inte vad Cloudflare gör.
22. Kan du använda det nya Azure cold storage-alternativet?
Azure erbjuder nu varm och kall Azure-Lagring. Varm är utformad för data som används ofta och kall är för data som sällan används. Om du har mycket data som knappast används, säkerhetskopior, arkiv eller annan data, se till att kolla in kylförvaring.
optimera Azure Cloud Hosting kostnader
Jag hoppas att du hittade den här listan för att vara till hjälp. Var noga med att börja med några av de enklaste ideerna att implementera och lämna optimera din kod till sist.
optimera din kod är överlägset den svåraste delen att göra och kan ta en enorm tid och regressionstestning. På Stackify har vi API: er som kallas miljoner och miljoner gånger om dagen. Om du har kod som kallas så många gånger som vår, är det definitivt värt att investera i kodoptimeringar på låg nivå, annars…kanske inte.