Microsoft Azure zapewnia potężny zestaw usług, które pomagają programistom tworzyć i wdrażać ich aplikacje. Platforma Azure sprawia, że jest tak łatwa w użyciu, że możesz szybko pozwolić, aby koszty hostingu platformy Azure wymknęły się spod kontroli. Istnieją jednak sposoby lepszego zarządzania cenami platformy Azure i optymalizacji ogólnych kosztów.
w Stackify korzystamy z platformy Azure od ponad 4 lat. Dorastaliśmy z Azure, jak lubimy to mówić i korzystamy z szerokiej gamy różnych usług platformy Azure i wydajemy na nią co roku niewielką fortunę. Piszemy ten artykuł, aby podzielić się niektórymi z naszych najlepszych wskazówek.
skupmy się na 5 różnych sposobach na obniżenie kosztów:
- obniż rzeczywiste ceny platformy azure
- dowiedz się, jakie są Twoje bieżące koszty
- zoptymalizuj sposób wdrażania aplikacji
- Popraw wydajność aplikacji
- inne wskazówki
Jak obniżyć ceny platformy Microsoft Azure & efektywne zarządzanie kosztami platformy Azure
jedna z najłatwiejszych rzeczy, które możesz można zrobić to po prostu uzyskać zniżki na rachunku lub dostać coś za darmo!
1. Zapłać z góry, aby uzyskać zniżkę, nawet na koncie pay-as-you-go.
Microsoft oferuje zniżki w wysokości 2,5-5% na podstawie przedpłaty na 6 lub 12 miesięcy. Sprawdź, czy możesz z tego skorzystać. Lepszym rozwiązaniem może być jednak umowa EA.
2. Uzyskaj umowę EA, aby uzyskać maksymalne rabaty na platformę Azure.
umowy EA wymagają wyboru rocznego zobowiązania pieniężnego i blokowania stopy dyskontowej. Następnie rozliczane są kwartalnie za wszelkie przekroczenia powyżej rocznego zobowiązania.
w przypadku niektórych produktów platformy Azure umowa EA może zaoszczędzić nawet do 20-30%. Ostrzegam, harmonogramy zniżek są bałagan. Na przykład stopa dyskontowa dla usługi SQL Azure może wynosić 5% , ale Usługi w chmurze mogą wynosić około 10-20% i jest inna dla każdego sprzedawanego SKU. Niektóre mogą nie oferować wiele zniżek w ogóle. Są tysiące SKU. Pamiętaj więc, aby wiedzieć, jakich usług platformy Azure naprawdę potrzebujesz i zmaksymalizować zniżkę na te jednostki SKU w umowie EA.
3. Czy możesz zapisać się do Bizspark?
Stackify był pierwotnie w Bizspark i był w stanie uzyskać wiele niesamowitych bezpłatnych korzyści. Microsoft reklamuje do $ 120,000 w bezpłatnych korzyściach dla startupów. Niezły interes!
4. Czy możesz zmienić regiony platformy Azure, aby uzyskać lepsze ceny platformy azure?
ceny platformy Azure różnią się w zależności od regionu, nawet w USA. Sprawdź dokładnie ceny w różnych regionach, aby sprawdzić, czy możesz trochę zaoszczędzić.
przykład: A2 VM w West US wynosi $133.92, ale $126.48 w West US 2. 168,14 zł
5. Uzyskaj bezpłatne pieniądze od firmy Microsoft, współpracując z partnerem platformy Azure nad projektem.
Jeśli masz duży projekt do przeniesienia na platformę Azure, możesz uzyskać zniżki, aby zachęcić partnera firmy Microsoft i zapłacić za niego. Jako przykład, byliśmy w stanie to zrobić, aby pomóc w pracy z szefem kuchni.
dowiedz się, jakie są Twoje bieżące koszty platformy Azure i zorganizuj raportowanie
kursy, nie wiesz, czego nie wiesz, jeśli chodzi o to, ile wydajesz i na co je wydajesz. Z platformą Azure tak łatwo jest uruchomić nowe zasoby i po prostu o nich zapomnieć.
6. Wiedz, ile wydajesz na co, co jest trudne bez narzędzia do tego.
Microsoft ma kilka narzędzi, których możesz użyć do analizy rozliczeń:
- Azure billing portal
- EA portal – https://ea.azure.com/
oba te elementy pozostawiają wiele do życzenia dla każdego zaawansowanego poziomu raportowania. Możesz połączyć swoje dane EA z PowerBI, co otwiera więcej możliwości ich przetwarzania, ale naprawdę musisz podzielić dane według projektu, działów itp. aby uzyskać więcej wglądu w to.
istnieje wiele narzędzi innych firm dostępnych, choć przerażająco, wiele z nich ponad $1,000 miesięcznie! Zalecamy korzystanie z usługi o nazwie Azure Costs (https://azure-costs.com/), która jest niedroga i świetnie się sprawdza. Ma darmowy poziom i płatne opcje od $29 – $199 miesięcznie.
aby dać ci pomysł, możesz pogrupować raportowanie na kilka różnych sposobów, aby zrozumieć, czy wydajesz dużo na maszyny wirtualne, SQL Azure, usługi aplikacji itp.
Grupuj według różnych pól w Azure Costs
7. Przypisuj wydatki platformy Azure według projektu, środowiska lub klienta, aby lepiej raportować.
w Stackify obsługujemy nasze aplikacje produkcyjne, przedprodukcyjne, QA, programistyczne i testowe na platformie Azure. Patrząc na naszą ustawę na wysokim poziomie, nie ma dobrego sposobu, aby wiedzieć, ile wydajemy na które środowisko, które jest dla nas ważne.
to, ile wydajemy na produkcję, wpływa na nasze marże jako firmy i chcemy również zminimalizować koszty w środowiskach programistycznych/testowych.
używamy Azure Costs do organizowania tego, na co wydajemy pieniądze. Po prostu oznaczamy każdy zasób platformy Azure, a następnie możemy uzyskać raportowanie według tagów, aby łatwo zobaczyć wydatki na środowisko.
Tag resources in Azure Costs
następnie możemy uzyskać raportowanie za pomocą każdego tagu, aby zrozumieć, w jaki sposób wydajemy nasze pieniądze.
raportowanie według tagu w Azure koszty
zoptymalizuj sposób wdrażania aplikacji, aby zaoszczędzić pieniądze na platformie Azure
Jeśli przenosisz aplikację na platformę Azure, istnieje kilka sposobów na zaoszczędzenie pieniędzy, o których możesz nawet nie myśleć. Chcemy również dać ci kilka wskazówek na temat optymalizacji usług aplikacji, usług w chmurze itp.
8. Wybierz odpowiedni typ i rozmiar maszyn wirtualnych.
Jeśli używasz platformy Azure do hostowania maszyn wirtualnych, upewnij się, że wybrałeś odpowiedni typ wystąpienia. Istnieją dosłownie dziesiątki różnych typów i rozmiarów. Upewnij się, że wybierzesz odpowiedni typ w oparciu o to, czy potrzebujesz więcej pamięci, procesora, szybszego dysku itp.
9. Użyj Azure DevTest Labs, aby zapewnić automatyczne zamykanie testowych maszyn wirtualnych, aby zaoszczędzić pieniądze.
nic nie jest bardziej irytujące niż ktoś zakładający serwer testowy i dowiadujący się później, że płacisz za niego od miesięcy. Usługa Azure DevTest Labs świetnie nadaje się do tworzenia serwerów, których potrzebujesz od czasu do czasu lub tylko w określonych godzinach dnia.
DevTest Labs może je automatycznie włączyć i wyłączyć zgodnie z harmonogramem. To bardzo pomaga w rozwiązaniu problemu, w którym twój zespół ds. kontroli jakości zapomniał zamknąć serwery przed wyjazdem na dzień lub weekend.
Uwaga: DevTest Labs nie kosztuje nic dodatkowego w użyciu. Po prostu płacisz za same maszyny wirtualne.
10. Unikaj płacenia za miejsca postoju w usługach w chmurze.
dzięki usługom Chmurowym Azure dla ról internetowych i roboczych płacisz pełną cenę za sloty stagingowe, tak jak w przypadku slotów produkcyjnych. Dobrym pomysłem jest wdrożenie do slotów staging, a następnie Zamiana staging na produkcję, aby zminimalizować przestoje.
upewnij się, że usuniesz miejsca postoju tak szybko, jak to możliwe. Nic nie sprawia, że jestem bardziej szalony niż zalogowanie się do platformy Azure i zobaczenie wielu rzeczy wdrożonych w slotach staging bez powodu.
Edytuj widok w portalu Azure Portal, aby dodać kolumny dla „Staging” i „Production”, aby szybko zobaczyć, które z nich mają coś w slotach staging. Usługi w chmurze kosztują nawet w przypadku zatrzymania serwerów. Musisz je usunąć!
11. Połącz aplikacje internetowe z planami usługi Azure App Service, aby zmniejszyć liczbę serwerów.
jedną z absolutnie najlepszych funkcji platformy Azure są usługi aplikacji. Możesz utworzyć plan usługi aplikacji, który reprezentuje 2-3 lub więcej serwerów, a następnie spakować do nich dowolną liczbę aplikacji internetowych.
jest to ogromna przewaga nad płaceniem za cały serwer za aplikację internetową, która prawie nic nie robi. Używamy Cloud Service web Roles na zawsze, aw niektórych przypadkach mamy 3 wystąpienia zapewniające wysoką dostępność w aplikacji internetowej, która praktycznie nie generuje ruchu. To ogromna strata.
12. Przestań używać ról internetowych usług w chmurze, chyba że musisz.
o ile nie musisz używać Azure Cloud Services dla ról internetowych, chciałbym pracować nad przełączeniem aplikacji na usługi App Services, aby skorzystać z połączenia wielu aplikacji na mniejszą liczbę serwerów.
usługi w chmurze również potrzebują wieczności, aby je wdrożyć. Usługi aplikacji są o lata świetlne szybsze do wdrożenia.
13. Do łączenia aplikacji Użyj usługi Azure Service Fabric lub usługi kontenera.
z tych samych powodów, o których wspomniałem powyżej w przypadku usług App Services i ról internetowych, spójrz na przeniesienie ról pracowników do Service Fabric lub Container Service. Oba postępują zgodnie ze schematem, takim jak plany usług aplikacji, w których zasadniczo udostępniasz grupę serwerów, a następnie rzucasz na nie kilka aplikacji.
14. Użyj automatycznego skalowania, aby obniżyć koszty w godzinach poza godzinami pracy.
większość aplikacji ma bardziej ruchliwe i wolniejsze okresy w ciągu tygodnia lub dnia. Skorzystaj z automatycznego skalowania wbudowanego w platformę Azure, aby zaoszczędzić trochę pieniędzy podczas powolnych okresów.
wszystkie te typy wdrożeń obsługują automatyczne skalowanie:
- usługi w chmurze
- usługi aplikacji
- zestawy skalowania maszyn wirtualnych (w tym Batch, Service Fabric, Container Service)
skalowanie może również oznaczać całkowite zamknięcie aplikacji. Usługi aplikacji mają funkcję o nazwie AlwaysOn, która kontroluje, czy aplikacja powinna zostać wyłączona z powodu braku aktywności. Możesz również zaplanować zamykanie serwerów dev / QA za pomocą czegoś takiego jak DevTest Labs. Istnieją również usługi stron trzecich, takie jak Park My Cloud.
15. Używaj funkcji usługi Azure PaaS; nie używaj własnych maszyn wirtualnych, chyba że musisz.
rozmawiałem z kilkoma osobami, które używają platformy Azure, a ich Wersja korzystania z platformy Azure konfiguruje niektóre maszyny wirtualne i hostuje ich aplikację i serwer SQL na tych maszynach.
Wykorzystanie platformy Azure dla maszyn wirtualnych i IaaS jest w porządku, ale brakuje ci wielu możliwości obniżenia kosztów zarządzania i obniżenia kosztów platformy Azure jako całości. O ile nie masz naprawdę, naprawdę dobrego powodu, aby używać SQL w maszynie wirtualnej, jak kupowanie zewnętrznego Load balancera działającego w maszynie wirtualnej i innych scenariuszach, po prostu nie rób tego.
w Stackify wykorzystujemy każdą możliwą funkcję PaaS platformy Azure. Obejmuje to SQL Azure, Redis, przechowywanie tabel, magistralę usług itp. Myśl o skonfigurowaniu maszyn wirtualnych dla Redis lub innej usługi kolejkowania wydaje się naprawdę okropnym pomysłem. Jedynym wyjątkiem dla nas jest elasticsearch.
Usługa Azure Search jest dostępna i stanowi podstawową ofertę Elasticsearch PaaS. Ze względu na rozmiar i skalę naszego klastra elasticsearch, bardziej sensowne jest samodzielne zarządzanie nim.
16. Użyj SQL Elastic Pools.
Jeśli masz dużo baz danych, powinieneś rozważyć elastyczne pule SQL.
dzięki platformie Azure musisz wybrać warstwę wydajności dla każdej bazy danych. Działa to bardzo dobrze i zapewnia przewidywalny poziom wydajności. Jednak w wielu przypadkach skutkuje to również nadmierną wydajnością alokacji.
pomyśl o elastycznej puli usługi Azure SQL jako o serwerze i możesz przypisać do niego kilka baz danych. Pozwala to na zwiększenie wydajności każdej bazy danych w ramach łącznych zasobów serwera.
w Stackify każdy z naszych klientów ma własne bazy danych SQL. Mamy ich dosłownie setki, a każdego dnia dodajemy nowe i usuwamy niektóre z nich. Elastyczne Pule SQL mają kluczowe znaczenie dla zarządzania tak wieloma bazami danych na dużą skalę.
Popraw wydajność samej aplikacji
ok, jeśli zmaksymalizowałeś, ile wydajesz na platformę Azure, jeśli chodzi o ogólne ceny platformy Azure i sposób wdrażania aplikacji, nadszedł czas, aby zacząć trochę poprawiać wydajność.
sugerowałbym użycie jakiegoś rodzaju narzędzia APM, takiego jak Retrace, Azure Application Insights lub New Relic.
17. Czas wypuścić profilerów!
Jeśli chcesz zoptymalizować wydajność swojego kodu, musisz wykonać pewne profilowanie kodu. Istnieją trzy różne typy profilerów i możesz potrzebować wszystkich trzech, aby naprawdę poprawić swój kod.
- Standardowy profiler – profiluj swój kod na swojej stacji roboczej, aby szukać wolnych metod w kodzie
- śledzenie transakcji-przechwytywanie pełnych żądań internetowych za pośrednictwem ASP.NET profilowanie i przeglądanie tego, co się dzieje
- APM-śledź ogólną wydajność aplikacji i jej zależności
18. Zidentyfikuj najczęściej używane i najwolniejsze żądania internetowe lub transakcje.
Szukaj żądań, które zajmują dużo czasu lub zdarzają się umiarkowanie wiele razy, ale trwają zbyt długo. Spójrz na ASP.NET śledzenie transakcji, aby sprawdzić, czy dzieje się zbyt wiele zapytań SQL, powolne usługi sieciowe itp.
większość nowoczesnych aplikacji jest bardziej związana wywołaniami baz danych lub usług internetowych. Jeśli sam kod może być powolny, prawdopodobnie chcesz użyć standardowego profilera. NET, takiego jak Visual Studio profiler, aby dowiedzieć się, dlaczego.
najlepsze żądania sieci Web z Retrace APM
19. Zoptymalizuj wydajność bazy danych SQL.
każda zajęta aplikacja może Zwykle skorzystać z podstawowego tuningu SQL. SQL Azure ma kilka doskonałych podstawowych funkcji do raportowania wydajności i rekomendacji dostrajania indeksów.
Jeśli chcesz głębiej, upewnij się, że odpytywasz DMV w SQL, aby zidentyfikować, które zapytania są najczęściej dostępne, użyj większości IO, weź najdłuższe itp. Należy również uważać, aby sprawdzić, jak długo trwają zapytania z punktu widzenia aplikacji.
Możesz również użyć narzędzia APM, aby określić, które zapytania są najczęściej używane i jakie działania w Twoim oprogramowaniu je wywołują.
Top zapytania SQL widok z Retrace APM
20. Śledź wykorzystanie i wydajność wszystkich zależności aplikacji.
poza serwerem SQL aplikacja prawdopodobnie wykonuje połączenia z usługami sieciowymi, używa kolejek, buforowania i innych zależności, w tym innych funkcji platformy Azure, takich jak DocumentDB, Azure Storage itp.
upewnij się, że wszystkie te zależności działają dobrze i są odpowiednio skalowane za pośrednictwem platformy Azure.
inne pomysły na obniżenie kosztów platformy Azure
oto kilka innych pomysłów, które należy rozważyć, aby obniżyć wydatki na platformę Azure.
21. Czy można użyć CDN?
CDN taki jak Cloudflare sprawia, że naprawdę łatwo jest dodać buforowanie wszystkich plików statycznych bez zmian kodu. Cloudflare ma również mnóstwo fajnych funkcji, które można wykorzystać do optymalizacji wydajności.
Azure ma również bardzo prostą ofertę CDN, którą możesz wypróbować, ale nie robi tego, co robi Cloudflare.
22. Czy można skorzystać z nowej opcji usługi Azure cold storage?
Azure oferuje teraz ciepłą i zimną pamięć masową Azure. Ciepły jest przeznaczony do danych, które są często używane, a zimny do danych, które są rzadko używane. Jeśli masz dużo danych, które są mało używane, kopie zapasowe, archiwa lub inne dane, sprawdź cold storage.
optymalizacja kosztów hostingu w chmurze Azure
mam nadzieję, że ta lista okazała się pomocna. Pamiętaj, aby zacząć od najprostszych pomysłów do wdrożenia i pozostawić optymalizację kodu na koniec.
Optymalizacja kodu jest zdecydowanie najtrudniejszą częścią do zrobienia i może wymagać ogromnej ilości czasu i testów regresji. W Stackify mamy interfejsy API, które są wywoływane miliony razy dziennie. Jeśli masz kod, który jest wywoływany tyle razy, co nasz, zdecydowanie warto zainwestować w niskopoziomowe optymalizacje kodu, w przeciwnym razie … może nie.