M365Con 2027 – bezpłatna konferencja online · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Wyjście poza granice: dlaczego do ogromnych obciążeń potrzebujesz Azure Compute Fleet

By ·

Witamy ponownie w naszym cyklu poświęconym zaawansowanym architekturom chmurowym. W najnowszym odcinku podcastu, Azure Compute Fleet – Simply Explained, zajęliśmy się m…

Automatically translated with AI from the original post. Read the English original

Cover: Azure Compute Fleet – Simply Explained

Witamy ponownie w naszym ciągłym przeglądzie zaawansowanych architektur chmurowych. W najnowszym odcinku podcastu Azure Compute Fleet – Simply Explained omówiliśmy ogromne wyzwanie, z jakim mierzą się nowoczesne przedsiębiorstwa, zarządzając infrastrukturą chmurową. Jeśli kiedykolwiek próbowałeś uruchomić setki lub tysiące maszyn wirtualnych naraz na potrzeby wymagającego zadania wsadowego, symulacji obliczeń wysokiej wydajności czy dużego potoku przetwarzania danych, znasz frustrację wynikającą z nagłego braku zasobów. W tym wpisie rozwiniemy te koncepcje, wyjaśniając, dlaczego tradycyjne metody zawodzą i w jaki sposób Azure Compute Fleet zasadniczo zmienia sposób pozyskiwania i zarządzania dużymi zasobami obliczeniowymi w chmurze.

Czym jest Azure Compute Fleet?

Azure Compute Fleet to wyspecjalizowana, zarządzana usługa stworzona właśnie po to, by rozwiązywać problemy z pojemnością na dużą skalę. Gdy trzeba błyskawicznie zwiększyć obciążenie z zera do tysięcy wykonawców, standardowe metody wdrażania łatwo mogą napotkać wąskie gardło. Utworzenie pojedynczej maszyny wirtualnej jest proste, ale poproszenie regionu o wydanie tysiąca identycznych maszyn wirtualnych w jednym, konkretnym rozmiarze SKU to zupełnie inne wyzwanie. Azure Compute Fleet zmienia zasadnicze pytanie, jakie zadajesz chmurze. Zamiast pytać: "Jak uzyskać tysiąc identycznych maszyn wirtualnych tego konkretnego rozmiaru?", pytasz: "Jak uzyskać zasoby obliczeniowe potrzebne mojemu obciążeniu, korzystając z różnych dopuszczalnych opcji?" Opisując ogólne wymagania dotyczące pojemności, dopuszczalne rozmiary maszyn wirtualnych, preferencje regionalne oraz tolerancję dla cen na żądanie kontra tańszych instancji Spot, platforma Azure może inteligentnie przeszukać wiele puli dostępności, aby zabezpieczyć zasoby potrzebne Twojej aplikacji.

Dlaczego elastyczność ma znaczenie

Aby zrozumieć, dlaczego Compute Fleet jest tak potężny, musimy dokładnie przyjrzeć się temu, jak działa pojemność w chmurze. Rozmiar maszyny wirtualnej (SKU) to konkretne połączenie procesora, pamięci, architektury pamięci masowej i rodziny procesorów. Jeśli skrypty automatyzacji żądają tylko jednego, konkretnego SKU, Azure może szukać wyłącznie tego dokładnego dopasowania. Jeśli ta konkretna rodzina jest w dużym zapotrzebowaniu w docelowym regionie, wdrożenie utknie w kolejce lub całkowicie się nie powiedzie. Compute Fleet wprowadza elastyczność, pozwalając określić szeroki wybór dopuszczalnych rozmiarów maszyn wirtualnych. O ile bazowe obciążenie jest zaprojektowane tak, by działać poprawnie na różnych konfiguracjach sprzętowych, Azure może dynamicznie rozdzielać wykonawców. Przy dużej skali ta elastyczność wielokrotnie zwiększa szansę na pozyskanie dokładnie takiej łącznej mocy obliczeniowej, jakiej potrzebujesz, i to właśnie wtedy, gdy jej potrzebujesz.

Do 10 000 maszyn wirtualnych w jednym Fleet

Ręczne zarządzanie infrastrukturą na dużą skalę to prosta droga do wyczerpania operacyjnego. Pisanie niestandardowych skryptów orkiestracji, które obsługują ponawianie wdrożeń, zapasowe rozmiary maszyn wirtualnych i monitorowanie w dziesiątkach różnych konfiguracji, szybko staje się koszmarem nie do utrzymania. Compute Fleet ma wyeliminować ten narzut operacyjny, obsługując do 10 000 maszyn wirtualnych w ramach jednego żądania Fleet. Definiujesz parametry fleet raz, a Azure ocenia dostępne zasoby we wszystkich dopuszczalnych wyborach, automatycznie wskazuje optymalną kombinację zasobów i uruchamia wymagane grupy bazowych maszyn wirtualnych. Ta natywna możliwość pozwala zespołom inżynierskim skupić się na właściwych obciążeniach zamiast tracić niezliczone godziny na rozwiązywanie błędów alokacji infrastruktury.

Czego Compute Fleet nie robi

Choć Azure Compute Fleet to przełom w pozyskiwaniu zasobów obliczeniowych, warto zrozumieć jego granice. Compute Fleet rozwiązuje problem pojemności, ale nie narzuca ani nie zastępuje całej architektury aplikacji. Nadal w pełni odpowiadasz za obrazy maszyn wirtualnych, konfigurację sieci, grupy zabezpieczeń i oprogramowanie aplikacji, którego każdy worker potrzebuje do działania. Compute Fleet nie wie z założenia, czy workery renderują zaawansowane efekty wizualne, wykonują złożone obliczenia finansowe, uruchamiają automatyczne testy regresji czy analizują surowe dane telemetryczne z badań naukowych. Nie zastępuje również kluczowych elementów architektury, takich jak load balancery, trwałe kolejki komunikatów, logika aplikacji czy mechanizmy odzyskiwania po awarii. Jego jedyną, ściśle określoną misją jest pozyskiwanie i zarządzanie dużymi zasobami mocy obliczeniowej wtedy, gdy istnieje wiele akceptowalnych konfiguracji.

Wybór akceptowalnych rozmiarów maszyn wirtualnych

Skuteczne wdrożenie floty zaczyna się od kluczowej decyzji architektonicznej: ustalenia, których rozmiarów maszyn wirtualnych Twoja aplikacja faktycznie może użyć. W skali floty nie powinieneś koncentrować się na wymuszaniu konkretnego modelu procesora z osobistych preferencji. Zamiast tego należy dokładnie przeanalizować wymagania oprogramowania. Od jakiej liczby rdzeni CPU, progów pamięci, parametrów wydajności lokalnej pamięci masowej czy typów akceleratorów naprawdę zależy Twoja aplikacja? Jeśli kilka rodzin maszyn wirtualnych spełnia te progi operacyjne, ich uwzględnienie daje Azure znacznie szersze pole poszukiwań. Musisz jednak rygorystycznie zweryfikować każdy rozmiar, który dodajesz. Nigdy nie dodawaj rodziny maszyn wirtualnych do konfiguracji floty wyłącznie dlatego, że wydaje się tańsza, jeśli Twoje oprogramowanie wymaga określonych zestawów instrukcji, wyspecjalizowanych sterowników, unikalnych konfiguracji pamięci masowej lub konkretnych możliwości sprzętowych.

Pojemność a cena

Kolejnym istotnym aspektem projektowym jest równoważenie bieżących potrzeb w zakresie pojemności z ogólną optymalizacją kosztów. Różne obciążenia wymagają zupełnie innych strategii wdrożenia. Na przykład nocne obliczenia ryzyka finansowego mogą mieć ściśle określone okno wykonania i muszą zakończyć się, zanim rynki światowe otworzą się następnego ranka. W takim przypadku natychmiastowe zapewnienie gwarantowanej pojemności jest znacznie ważniejsze niż uzyskanie absolutnie najniższej ceny za rdzeń. Z kolei inne obciążenia oferują ogromną elastyczność harmonogramowania. Testy w tle, długoterminowe symulacje, przetwarzanie zaległych danych oraz tymczasowe środowiska deweloperskie często mogą tolerować niewielkie opóźnienia w uzyskaniu pełnej pojemności w zamian za znacznie niższe koszty infrastruktury. Compute Fleet daje organizacjom swobodę architektoniczną, by dopasować wdrożenia do tych różnych priorytetów operacyjnych.

Wybór maszyn wirtualnych oparty na atrybutach

Aby konfiguracja była jeszcze potężniejsza, Azure oferuje podejście do wyboru maszyn wirtualnych oparte na atrybutach, które w naszych niedawnych materiałach podcastowych zostało przedstawione jako ciekawa funkcja w wersji zapoznawczej. Zamiast ręcznie wymieniać dziesiątki konkretnych SKU maszyn wirtualnych, ta możliwość pozwala zdefiniować ogólne charakterystyki. Możesz określić takie parametry, jak minimalna i maksymalna liczba vCPU, zakresy pamięci, wymagania dotyczące lokalnej pamięci NVMe czy wyspecjalizowane akceleratory GPU. Azure następnie dynamicznie identyfikuje i wykorzystuje rozmiary maszyn wirtualnych odpowiadające tym dokładnie zdefiniowanym atrybutom. Zapewnia to ogromną przyszłościową elastyczność, gdy Microsoft wprowadza do chmury nowsze, bardziej wydajne generacje maszyn wirtualnych, choć Twoje aplikacje nadal muszą przejść odpowiednią walidację na każdym nowo dopasowanym profilu sprzętowym.

Maszyny wirtualne na żądanie

Budowanie solidnej floty wymaga zrozumienia odrębnych ról różnych modeli zakupu. Maszyny wirtualne na żądanie stanowią stabilny, niezawodny fundament floty. Gdy zamawiasz maszynę wirtualną na żądanie, płacisz standardową, przewidywalną stawkę, a Azure gwarantuje, że nie odbierze tego zasobu tylko dlatego, że wzrósł popyt innego klienta. Dzięki temu pojemność na żądanie idealnie sprawdza się jako absolutne minimum bazowej mocy obliczeniowej, potrzebnej Twojemu obciążeniu do stałej pracy. Krytyczne elementy infrastruktury, takie jak koordynatorzy zadań, nasłuchiwacze kolejek komunikatów czy podstawowi workery bazowi, powinny niemal zawsze korzystać z pojemności na żądanie, aby zapewnić nieprzerwany nadzór.

Maszyny wirtualne typu Spot

Po drugiej stronie spektrum zakupowego znajdują się maszyny wirtualne Spot. Maszyny wirtualne Spot pozwalają wykorzystać niewykorzystaną pojemność obliczeniową platformy Azure z dużymi zniżkami, często oszczędzając do dziewięćdziesięciu procent w porównaniu ze standardowym cennikiem pay-as-you-go. Ceną za tak znaczne oszczędności jest ryzyko przerwania działania. Platforma Azure zastrzega sobie prawo do odebrania pojemności Spot z niewielkim wyprzedzeniem, gdy popyt w regionie wymaga zwrotu tych zasobów fizycznych. Dzięki temu maszyny wirtualne Spot są szczególnie atrakcyjne dla obciążeń odpornych na awarie, w których procesy robocze mogą zniknąć w trakcie zadania bez spowodowania poważnych awarii, pod warunkiem że architektura jest zaprojektowana tak, by bezpiecznie ponawiać przerwane operacje.

Łączenie pojemności Spot i pay-as-you-go

Nie musisz wybierać między wyłącznie modelem pay-as-you-go a podejściem opartym wyłącznie na Spot. W rzeczywistości najbardziej odporne architektury łączą oba modele zakupu w jednej spójnej flocie. Wykorzystując maszyny wirtualne pay-as-you-go jako trwałą płaszczyznę sterowania i podstawowe procesy robocze, gwarantujesz przewidywalną minimalną przepustowość. Jednocześnie możesz zasilić flotę maszynami wirtualnymi Spot, aby obsłużyć ogromne skalowanie obliczeń za ułamek zwykłego kosztu. Jeśli platforma Azure odbierze część procesów roboczych Spot w okresie niedoboru pojemności, Twoje podstawowe procesy pay-as-you-go będą nadal przetwarzać dane bez przerw, osiągając dobrą równowagę ekonomiczną między oszczędnościami a stabilnością operacyjną.

Projektowanie z myślą o przerwaniach

Chociaż Azure Compute Fleet w sposób kontrolowany zarządza przydziałem bazowej pojemności i obsługuje powiadomienia o przerwaniach dla maszyn Spot, nie może w magiczny sposób chronić danych aplikacji przechowywanych wyłącznie w pamięci pojedynczego procesu roboczego. Aby w pełni wykorzystać możliwości floty, obciążenie musi być od podstaw zaprojektowane tak, by obsługiwać zakończenie działania procesu roboczego. Weźmy na przykład rozproszony potok renderowania wideo. Jeśli projekt jest podzielony na pojedyncze zadania renderowania klatek, a maszyna wirtualna Spot zostanie odebrana przez Azure podczas przetwarzania klatki 412, to zadanie powinno automatycznie wrócić do centralnej kolejki komunikatów, aby mógł je podjąć inny dostępny proces roboczy. Ten dokładnie taki wzorzec architektoniczny sprawdza się równie dobrze w symulacjach naukowych, zautomatyzowanych buildach oprogramowania, testach ciągłej integracji oraz masowej analizie danych.

Przechowuj stan poza procesem roboczym

Aby przetrwać w dynamicznym środowisku floty, aplikacja musi kierować się złotą zasadą: stan należy całkowicie przechowywać poza procesem roboczym. Nie polegaj na lokalnym tymczasowym dysku dla krytycznych danych trwałych. Zamiast tego korzystaj z trwałych rozwiązań magazynowych, takich jak Azure Blob Storage, zarządzane relacyjne bazy danych czy rozproszone magazyny NoSQL, aby utrzymywać źródło prawdy. Używaj trwałych kolejek do rozdzielania zadań w całej flocie i upewnij się, że procesy robocze zapisują regularne punkty kontrolne podczas długotrwałych operacji. Projektuj zadania jako idempotentne, czyli takie, które mogą być uruchamiane wielokrotnie bez tworzenia zduplikowanych rekordów lub uszkodzonych wyników. Gdy maszyna wirtualna Spot nieoczekiwanie zniknie, stracisz jedynie niewielki ułamek pracy będącej w toku, zamiast godzin nieodwracalnego przetwarzania.

Compute Fleet a Virtual Machine Scale Sets

Częstym pytaniem inżynierów, którzy poznają tę technologię, jest to, czym Compute Fleet różni się od Azure Virtual Machine Scale Sets (VMSS). Obie usługi zarządzają grupami maszyn wirtualnych, ale zostały zbudowane do rozwiązywania zasadniczo różnych problemów. Virtual Machine Scale Sets zwykle zaczynają się od konkretnej warstwy aplikacji. Wdrażasz aplikację internetową, interfejs API oparty na mikrousługach lub korporacyjną aplikację biznesową za modułem równoważenia obciążenia, a VMSS zwiększa lub zmniejsza liczbę identycznych instancji na podstawie ruchu sieciowego lub progów wykorzystania procesora CPU. Compute Fleet natomiast wychodzi z zupełnie innego założenia: jak szybko pozyskać dużą pulę elastycznej pojemności obliczeniowej, aby przetworzyć ogromną ilość rozproszonych zadań?

Kiedy używać Virtual Machine Scale Sets

Zestawy skalowania maszyn wirtualnych nadal są absolutnym złotym standardem dla długotrwałych, ciągłych warstw aplikacji, w których instancje pełnią jednakowe role i muszą dynamicznie reagować na ruch użytkowników. Idealne przypadki użycia to aplikacje internetowe dla klientów, publiczne interfejsy API, sklepy internetowe oraz serwery aplikacji zaplecza umieszczone za Azure LoadBalancer lub Application Gateway. W takich środowiskach głównymi czynnikami determinującymi projekt są utrzymanie ciągłej kondycji aplikacji, bezproblemowe kierowanie ruchu klientów na żywo oraz zarządzanie stopniowymi aktualizacjami systemu operacyjnego na identycznych instancjach.

Kiedy warto użyć usługi Compute Fleet

Z kolei usługa Compute Fleet sprawdza się najlepiej, gdy głównym wyzwaniem jest pozyskanie ogromnej mocy obliczeniowej do zadań asynchronicznych, wsadowych lub niezależnych. Typowe scenariusze obejmują klastry obliczeń wysokiej wydajności, przetwarzanie wsadowe w finansach, symulacje modelowania molekularnego, duże potoki pozyskiwania danych, zautomatyzowane zestawy testów, farmy renderowania multimediów oraz tymczasowe pule procesów roboczych. W takich architekturach proces roboczy pobiera wydzieloną jednostkę pracy, przetwarza ją, zapisuje gotowy wynik w trwałym magazynie i natychmiast przechodzi do kolejnego zadania. Jeśli proces roboczy zniknie, system po prostu przydziela tę jednostkę pracy innemu dostępnemu węzłowi.

Można użyć obu rozwiązań

Najlepsze w nowoczesnej architekturze chmurowej jest to, że nie trzeba wybierać tylko jednego narzędzia. Azure Compute Fleet i zestawy skalowania maszyn wirtualnych nie wykluczają się wzajemnie; mogą harmonijnie współpracować w ramach tego samego ekosystemu przedsiębiorstwa. Na przykład zaawansowana aplikacja korporacyjna może wykorzystywać zestaw skalowania maszyn wirtualnych do obsługi wysoko dostępnego frontendu aplikacji internetowej i warstwy API, zapewniając bezbłędne wrażenia użytkowników. Jednocześnie ta sama aplikacja może w tle uruchamiać usługę Azure Compute Fleet do obsługi wymagających dużych zasobów nocnych procesów hurtowni danych, generowania raportów wsadowych lub złożonych symulacji. Dobierając odpowiednie narzędzie do każdej warstwy, budujesz architekturę, która jest zarówno bardzo responsywna dla użytkowników, jak i opłacalna w skali.

Aby zgłębić te architektury i poznać praktyczne wskazówki dotyczące wdrożenia, koniecznie posłuchaj naszego pełnego odcinka podcastu towarzyszącego: Azure Compute Fleet – Simply Explained. Nie zapomnij wesprzeć naszego podcastu i bądź z nami na bieżąco, by poznać kolejne dogłębne analizy z zakresu inżynierii chmury!

Zostań sympatykiem tego podcastu: https://www.spreaker.com/podcast/m365-fm-modern-work-security-and-productivity-with-microsoft-365--6704921/support.

Entities in this article

Azure Compute Fleet Virtual machine

Related articles

RSS