English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gość
1 / ?
powrót do lekcji

Co Rozwiązuje Książka Allspaw'a

Dyscyplina Niezawodzenia

John Allspaw napisał „The Art of Capacity Planning" (O'Reilly, 2008; drugie wydanie 2017) po zarządzaniu operacjami w Flickr przez lata eksplozywnego wzrostu. Jego teza: planowanie pojemności nie jest jednorazowym ćwiczeniem ze arkuszem kalkulacyjnym. Jest ciągłą dyscypliną łączącą pomiar, prognozowanie i osąd inżynierski. Pomiń którekolwiek z tych trzech, a albo skończy Ci się pojemność w produkcji, albo będziesz palić pieniądze na sprzęt, który biega w kółko.

Planowanie pojemności siedzi między dwoma trybami awarii:

- Niedowystarczające zaprowidencjonowanie: usługi działają na gorąco, opóźnienia wzrastają, wskaźniki błędów wspinają się, klienci odchodzą. Najszybszy sposób na stracenie użytkowników w fazie wzrostu.

- Nadmiernie zaprowidencjonowanie: sprzęt siedzi na 10% wykorzystaniu, finanse pytają dlaczego budżet cały czas rośnie bez wzrostu przychodów. Najszybszy sposób na stracenie liczby pracowników w przeglądzie budżetu.

Sztuka polega na znalezieniu korytarza między tymi dwoma przepaściami i pozostaniu wewnątrz niego gdy obciążenie się zmienia.

Trzy pytania zasadnicze napędzają każde ćwiczenie pojemności:

- Co mamy? Bieżąca pojemność w konkretnych jednostkach: żądania na sekundę, zapytania na sekundę, gigabajty pamięci, jednoczesne połączenia.

- Co nam jest potrzebne? Prognozowany popyt w przyszłości z wyraźnymi granicami niepewności.

- Kiedy musimy działać? Czas realizacji zamówienia, zaprowidencjonowania lub skalowania. Chmura redukuje to do minut; na serwerach lokalnych może to oznaczać miesiące.

Korytarz planowania pojemności: niedowystarczający, optymalny, nadmierny

Dlaczego Nie Może to Być Arkusz Kalkulacyjny

Firma e-commerce planuje pojemność raz w roku w listopadzie, ekstrapolując poprzednie 12 miesięcy ruchu liniowo. Pracuje na dedykowanych serwerach z czasem realizacji zamówienia 6 tygodni. Ich ruch pokazuje silną sezonowość tygodniową (szczyt 3x w weekend), silną sezonowość roczną (5x Black Friday) i rósł 40% rok do roku przez trzy lata.

Wymień co najmniej trzy konkretne tryby awarii, które to podejście prognozowania liniowego raz w roku będzie prawdopodobnie wytwarzać. Dla każdej awarii nazwij konkretną część rzeczywistości firmy, którą arkusz kalkulacyjny ignoruje, i zaproponuj bardziej częstą kadencję pomiaru lub planowania, która ją rozwiązuje.

Obciążenie versus Wykorzystanie

Dwie Różne Liczby, Obie Wymagane

Planowanie pojemności zawodzi gdy zespoły mierzą tylko jeden z dwóch istotnych wymiarów.


Obciążenie: popyt na system z zewnątrz. Żądania na sekundę, transakcje na minutę, megabajty na sekundę, jednoczesni użytkownicy. Obciążenie opisuje co świat Ci od Ciebie żąda.


Wykorzystanie: jak pełny jest system podczas serwowania tego popytu. Procent CPU, używana pamięć, głębokość kolejki, przepustowość sieciowa, IOPS dysku. Wykorzystanie opisuje jak system się czuje pod tym popytem.


Obciążenie samo mówi Ci co nadchodzi ale nie czy możesz je serwować. Wykorzystanie samo mówi Ci jak pełny jesteś ale nie co czekać jutro. Potrzebujesz obu, wykreślonych obok siebie, aby dokonywać decyzji pojemności.


Stosunek pojemności = obciążenie / wykorzystanie. Jeśli serwujesz 1000 żądań na sekundę na 50% CPU, Twój stosunek pojemności to 2000 RPS na 100% CPU na serwer. Ten współczynnik konwersji pozwala Ci przełożyć prognozowany ruch na wymaganą liczbę serwerów.


Allspaw podkreśla pomiar na prawidłowej granularności. Jedna próbka na minutę ukrywa piki 30-sekundowe. Jedna próbka na godzinę ukrywa wszystko. Prawdziwa praca pojemności potrzebuje rozdzielczości poniżej minuty dla pików i rozdzielczości minutowej do trendowania. Cokolwiek grubszego produkuje niebezpieczną fałszywą pewność.

Obciążenie + wykorzystanie wykreślone razem w czasie

Co Instrumentować

Twój zespół uruchamia instrumentację pojemności na nowym uruchomieniu produktu (usługa transkodowania wideo). Możesz wybrać do 8 metryk do śledzenia z rozdzielczością poniżej minuty. Usługa wchłania przesyłania wideo, umieszcza je w kolejce, transkoduje na wiele formatów i zapisuje wyniki w magazynie obiektów.

Wybierz dokładnie 8 metryk. Dla każdej oznacz czy przechwytuje obciążenie czy wykorzystanie i uzasadnij dlaczego każda metryka zasługuje na włączenie w porównaniu z metryką którą wyłączyłeś. Zidentyfikuj jedną metrykę, która jeśli byś miał tylko jedną byłaby najbardziej predyktywna dla wyczerpania pojemności.

Trend, Sezonowość, Niepewność

Trzy Warstwy Każdej Prognozy

Allspaw i księga Google SRE zgadzają się na strukturę użytecznej prognozy: trend, sezonowość i granice niepewności. Pomiń którekolwiek i prognoza staje się mylna.


Trend: nachylenie popytu przez miesiące lub lata. Często modelowane regresją liniową dla krótkich okien, eksponencjalnie lub piecewise-linear dla wzrostu złożonego. Linia trendu odpowiada na pytanie 'gdzie rośnie popyt ogólnie?'


Sezonowość: cykliczne wzory na wielu skalach czasowych. Dziennie (szczytowy ruch popołudniowy), tygodniowo (szczyty weekendowe), rocznie (Black Friday, sezon podatkowy, rok szkolny). Sezonowość multiplikatywna skaluje się z trendem; sezonowość addytywna dodaje stały przesunięty.


Granice niepewności: stożek prognozy. Prognoza bez granic to domysł. Prawdziwe prognozy publikują centralny szacunek z wyraźnymi górną i dolną granicą, typowo na 90% lub 95% pewności. Stożek się powiększa gdy projektujesz dalej w przyszłość. Prognoza 4-tygodniowa może mieć granice ±10%; prognoza 12-miesięczna często ma ±50%.


Rozseparowanie wzrostu biznesu od technicznego popytu: planowanie pojemności prognozuje techniczny ruch, ale zespoły biznesu prognozują przychód, rejestracje lub kampanie. Pracą planisty pojemności jest przełożenie prognoz biznesu na techniczny popyt: wzrost rejestracji o 30% może oznaczać 30% więcej połączeń API, ale może oznaczać 80% więcej jeśli nowych użytkowników będzie bardziej aktywnych lub tylko 15% jeśli konwertują się w niższych stopach. Stosunek konwersji ma znaczenie tak samo jak prognoza biznesowa.

Prognoza: linia trendu, fale sezonowe, powiększający się stożec

Prognozowanie Ruchu Świątecznego

Twoja usługa obsługuje witrynę e-commerce. Ruch Black Friday w zeszłym roku był 5x średniej listopadowej, utrzymywany przez 12 godzin. Firma wzrosła 40% rok do roku. Marketing uruchamia płatną promocję oczekiwaną do dodania dodatkowych 20% do ruchu Black Friday w tym roku.

Szacuj szczyt Black Friday tego roku jako wielokrotność bieżącej średniej miesięcznej. Pokaż swoją pracę. Następnie zaproponuj konkretne górne i dolne granice prognozy i wyjaśnij jakie zdarzenia rzeczywiste mogą popchnąć aktualny popyt poza te granice.

Znaj Swój Sufit

Znajdź Sufit Zanim Produkcja To Zrobi

Prognozowanie mówi Ci co nadchodzi. Testy sufitu mówią Ci czy system to może serwować. Allspaw traktuje testy sufitu jako obowiązkowy wkład w planowanie pojemności: nie wiesz jaką masz rzeczywistą pojemność dopóki nie testowałeś jej pod kontrolowaną obciążeniem.

Trzy rodzaje testów sufitu:

- Syntetyczny test obciążenia: generator obciążenia (k6, Locust, JMeter, vegeta) napędza ruch do docelowej usługi w przygotowaniu. Zwiększaj obciążenie aż coś się złamie. Punkt złamania to sufit. Najlepsze dla testowania izolowanej usługi.

- Ćwiczenie pożarowe w produkcji: celowo zmniejsz pojemność w produkcji (odciąż procent serwerów, zabij region) i obserwuj jak pozostała pojemność obsługuje rzeczywisty ruch. Testuje prawdziwe zachowanie produkcyjne włączając nieoczekiwane interakcje. Najwyższa pewność ale najwyższe ryzyko.

- Obciążenie cienia: odtwórz rzeczywisty ruch produkcyjny w docelowej usługi działającej równolegle do produkcji. Przechwytuje rzeczywiste wzory obciążenia (rzadki mix zapytań, dziwne user-agenty) bez wpływu na użytkowników. Silne rozwiązanie pośrednie.


Zapas to bufor między bieżącym obciążeniem a sufitem. Reguły główne SRE:

- 50% zapasu w stanie stabilnym dla usługi z jednym regionem (aby awaria regionu nie wyczerpała przeżywającego regionu)

- 30% zapasu dla usługi multi-region z redundancją N+2

- 100%+ zapasu zbliżając się do znanych pików (Black Friday, finały sportowe)


Zapas to nie marnotrawstwo. To koszt nie wydzwaniania inżynierów o 3 nad ranem, nie tracenia klientów podczas szczytów i nie cierpienia awarii kaskadowej gdy jeden region zawali się. Zespoły finansowe czasem naciskają na zmniejszenie zapasu; inżynierowie pojemności muszą wyrazić koszt działania napięcia aby ta rozmowa była faktyczna zamiast emocjonalnej.

Bufor zapasu: bieżące obciążenie, sufit i przerwa między nimi

Projektowanie Testu Sufitu

Dziedziczysz usługę bez udokumentowanego sufitu pojemności. Bieżące obciążenie produkcyjne to 800 żądań na sekundę na 12 serwerach, średni CPU 35%. Marketing ogłasza kampanię za 6 tygodni oczekiwaną do napędzenia ruchu do 3000 RPS w szczytach.

Zaprojektuj program testu sufitu w następnych 4 tygodniach. Określ rodzaj(e) testów, metryki które definiują 'złamane', cel zapasu który byś ustawił i akcję którą podejmujesz w zależności od tego czy test sufitu ujawnia wystarczającą pojemność. Bądź konkretny o tym co robisz jeśli test sufitu pokazuje że bieżące 12 serwerów nie mogą obsługiwać 3000 RPS.

Górą, Na Boki, czy Diagonalnie

Kiedy Dodać Moc, Dodać Pudełka, czy Oba

Trzy podstawowe strategie skalowania, każda z wyraźnymi profilami kosztów i niezawodności:


Skalowanie pionowe (skalowanie w górę): większe maszyny. Zamień 8-rdzeniowe serwery na 32-rdzeniowe. Najprostszy sposób; działa dopóki nie trafisz limitów pojedynczej maszyny. Punkt awarii pojedynczej maszyny pozostaje. Koszt rośnie nieliniowo: maszyna 32-rdzeniowa często kosztuje więcej niż 4x 8-rdzeniowa.


Skalowanie poziome (skalowanie na boki): więcej maszyn. Dodaj serwery za load balancerem. Pojemność skaluje się liniowo z liczbą serwerów. Tryby awarii się przesuwają: musisz obsługiwać koordynację rozproszoną, ale awaria pojedynczego serwera nie niszczy już usługi. Złożoność operacyjna rośnie.


Skalowanie diagonalne (termin Allspaw'a): skaluj do góry najpierw do komfortowego rozmiaru na serwer, następnie skaluj na boki z tego miejsca. Łączy prostsze operacje dużych serwerów z redundancją wielu serwerów. Większość usług produkcyjnych żyje w terytorium skalowania diagonalnego.


Pojemność zarezerwowana kontra na żądanie: dostawcy chmury nagradzają przewidywalność. Pojemność zarezerwowana jest 30-60% tańsza niż na żądanie ale wymaga zaangażowania 1-3 lat. Planisty pojemności typowo blokują popyt w stanie ustalonym z pojemnością zarezerwowaną i wybuchają na żądanie dla szczytów. Źle ocenić ten podział może albo marnować pieniądze (za dużo zarezerwowane) lub wystawiać budżet na niespodziankę (nie dosyć zarezerwowane podczas szczytów).


Spot instancje i przerywalne obciążenia: 60-90% tańsze niż na żądanie ale mogą być wycofane z kilkuminutowym powiadomieniem. Odpowiednie dla zadań wsadowych, analityki, treningu obciążeń lub każdej usługi zaprojektowanej do wdzięcznego przerwania. Ruch produkcyjny skierowany do użytkownika typowo unika spot.

Ścieżka skalowania diagonalnego: małe do średnich pudełek następnie skalowanie poziome

Wybieranie Ścieżki Skalowania

Twoja usługa transkodowania wideo działa na 8 instancjach chmury średniej wielkości (8 rdzeni każda). Oczekujesz wzrostu 3x w następnych 6 miesiącach. Obciążenie to CPU-bound, parallelizowalne na wideo, a każde transkodowanie wideo trwa 90 sekund od końca do końca. Zarezerwowane instancje kosztują 50% na żądanie. Spot instancje kosztują 30% na żądanie ale mogą być przerwane z 2-minutowym powiadomieniem.

Rekomenduj strategię skalowania na następnych 6 miesięcy. Określ które rozmiary instancji wybierasz, mieszaninę zarezerwowanych/na żądanie/spot i uzasadnij każdy kawałek mieszaniny przed charakterystyką obciążenia. Zidentyfikuj pojedyncze największe ryzyko w Twoim planie i zaproponuj jedno złagodzenie.

Kariery w Planowaniu Pojemności

Gdzie Umiejętności Planowania Pojemności Zarabiają

Planowanie pojemności jest rzadko tytułem samym w sobie. Umiejętności pojawiają się w kilku rolach:


Site Reliability Engineer: planowanie pojemności jest podstawową odpowiedzialnością SRE. Większość zespołów SRE ma jednego lub dwóch inżynierów którzy specjalizują się w pojemności, posiadając modele prognozy, testy sufitów i automatyzację zaprowidencjonowania.


Cloud Cost / FinOps Engineer: nowsza rola skupiająca się na optymalizacji wydatków na chmurę. Łączy planowanie pojemności z modelowaniem finansowym, negocjowaniem kontraktów i zarządzaniem portfolio zarezerwowanymi instancjami. Zarabia niezwykle dobrze w dużych firmach cloud-native ponieważ rachunki chmury są często drugim największym wydatkiem po wynagrodzeniach.


Performance Engineer: skupia się na wydajności na węzeł i testach sufitów. Pracą jest: wyciągnij więcej pojemności z tego samego sprzętu przez profilowanie, optymalizację i zmiany architekturalne. Ciężka wiedza systemów i runtimes języka.


Capacity Planning Specialist: w bardzo dużych firmach (Google, Meta, Amazon, Netflix) dedykowane zespoły planowania pojemności istnieją. Posiadają modele prognozy w całej flocie, negocjują zaprowidencjonowanie na skalę i koordynują z finansami na wieloletnich mapach drogowych sprzętu.


Umiejętności które się kumulują: analiza szeregów czasowych (R, Python statsmodels, Prophet), teoria kolejek (M/M/1, M/M/c, Little's Law), co najmniej jedno narzędzie zarządzania konfiguracją, co najmniej jeden pulpit kosztów chmury i zdolność napisania raportu prognozy które CFO może zrozumieć i działać. Umiejętności techniczne Cię zapraszają na rozmowę; umiejętności komunikacyjne dają Ci budżet.

Kariery pojemności: SRE, FinOps, Performance, Specialist

Podsumowanie

Co Teraz Wiesz

Planowanie pojemności jest ciągłą dyscypliną nie rocznym ćwiczeniem. Pokryłeś:

- Korytarz między niedowystarczającym zaprowidencjonowaniem a nadmiernym zaprowidencjonowaniem

- Obciążenie kontra wykorzystanie jako dwóch wymiarów pomiaru

- Trend, sezonowość i granice niepewności jako trzy warstwy każdej prognozy

- Testy sufitów (syntetyczne, cienia, ćwiczenie pożarowe) jako jedyny sposób znać rzeczywistą pojemność

- Bufory zapasu i dlaczego nie są marnotrawstwem

- Skalowanie diagonalne i decyzję ceny zarezerwowanej/na żądanie/spot

- Ścieżki karier gdzie te umiejętności zarabiają autorytet budżetu


Dwie idee mają największe znaczenie. Prognozuj z granicami, nigdy z pojedynczymi punktami. I mierz swój sufit zanim produkcja to zrobi. Przenieś te dwie naprzód i reszta idzie za tym.


Rekomendowane czytanie: „The Art of Capacity Planning" Allspaw'a (O'Reilly, 2017 drugie wydanie), odpowiednie rozdziały w Google's SRE Book (za darmo na sre.google/books/) i „Systems Performance" Brendana Gregg'a dla podstawowej pracy systemów. Lekcja towarzysza geometry-of idzie głębiej na wizualną strukturę: Little's Law jako obszar, krzywe kolejek, nachylenia trendów i koperty zapasu.