Prowadzony od października 2019

Przepisujemy kolejkę provisioningową

Mediana czasu między opłaconą fakturą a otrzymaniem danych dostępowych spadła z trzech minut i dwudziestu sekund do czterdziestu siedmiu sekund. Największy zysk pochodzi z pracy wykonanej przed złożeniem zamówienia.

Przez pięć lat zakup serwera tutaj zajmował medianowo trzy minuty i dwadzieścia sekund od webhooka rozliczeniowego do danych logowania w skrzynce. Nikt nie narzekał. Było to szybsze niż większość branży i znacznie szybsze niż cokolwiek wymagającego ludzkiej akceptacji.

Ale to były cztery sekwencyjne kroki, które nie miały prawa być sekwencyjne, a gdy to zauważysz, nie możesz przestać tego widzieć. Przepisanie zostało wdrożone w marcu, a mediana wynosi teraz czterdzieści siedem sekund, a 95. percentyl tuż poniżej czterech minut.

Co robił stary proces

KrokMedianaCo się działo
Kopiowanie obrazu84 sPobieranie obrazu dysku z lokalnego magazynu na węzeł docelowy
Tworzenie wolumenu31 sAlokacja i formatowanie wolumenu NVMe
Alokacja adresu46 sBlokada na puli adresów, wybór IPv4, zapis reverse DNS
Pierwszy boot i cloud-init39 sGenerowanie kluczy, rozszerzanie systemu plików, wysyłka maila

Cztery kroki, jedna globalna pula workerów i blokada na puli adresów, za którą każde zamówienie w tym samym miejscu musiało czekać w kolejce. W spokojny wtorek było w porządku. Podczas promocji lub w godzinę po tym, jak duży klient zamówił czterdzieści serwerów skryptem, mediana podwajała się, a ogon przekraczał dwanaście minut.

Co zmieniliśmy

Obrazy są wstępnie seedowane, nie kopiowane. Każdy węzeł ma bazę cienkich klonów dla każdego obrazu z katalogu, odświeżaną nocą. Tworzenie wolumenu to teraz klon copy-on-write z lokalnego lustra Gen4 NVMe, a nie pobieranie z sieci. Ten krok skrócił się z osiemdziesięciu czterech sekund do poniżej dwóch.

Adresy są rezerwowane z wyprzedzeniem. Każda lokalizacja utrzymuje ciepłą pulę przydzielonych adresów z zapisanym reverse DNS, o rozmiarze odpowiadającym około sześciu godzinom zapotrzebowania. Alokacja to teraz wyciągnięcie z gotowej puli, a nie blokada, skan i zapis DNS. Czterdzieści sześć sekund zamieniło się w około czterysta milisekund.

Kolejki są per lokalizacja. Wzrost we Frankfurcie nie spowalnia już tworzenia w São Paulo, co brzmi oczywiście, ale nie było pierwotnym projektem, bo pierwotny projekt miał cztery lokalizacje i jednego inżyniera.

Workery są idempotentne i wznawialne. Każdy krok jest kluczowany, więc jeśli worker umrze w połowie, zostaje zadanie do wznowienia, a nie na wpół zbudowana instancja i bilet do supportu. Ręczna interwencja przy nieudanym tworzeniu spadła z około jednego na czterysta do jednego na dziewięć tysięcy.

Wynik

MetrykaPrzedPo
Mediana3 min 20 s47 s
95. percentyl12 min 10 s3 min 56 s
99. percentyl41 min8 min 20 s
Nieudane tworzenia wymagające człowieka1 na 4001 na 9 000
Współbieżność na lokalizację przed przesunięciem mediany690

Co poszło nie tak po drodze

W marcu przez jedenaście godzin nocne odświeżanie baz cienkich klonów nie działało po cichu w czterech lokalizacjach, a pre-seedowany obraz Debian podał wersję punktową spóźnioną o dziewięć dni. Zbudowano z niego około dziewięćdziesięciu instancji. Żadna z nich nie była zepsuta w żaden interesujący sposób, bo nieaktualna wersja punktowa to pakiet aktualizacji od aktualnej, ale nikt kupujący serwer nie powinien musieć tego sprawdzać.

Odbudowaliśmy dotknięte instancje na życzenie, wysłaliśmy maila do wszystkich dziewięćdziesięciu, czy prosili, czy nie, i dodaliśmy sprawdzenie porównujące hash obrazu bazowego z katalogiem, zanim jakikolwiek węzeł może obsługiwać tworzenie. Ciche niepowodzenie w nocnym zadaniu to najbardziej nudny możliwy powód i warto go zapisać właśnie dlatego, że jest nudny.

Co nadal jest wolne

  • Instalacje z niestandardowego ISO. Nadal ręczne, nadal liczone w dziesiątkach minut, zwykle kończone w ciągu godziny. Wąskim gardłem jest osoba potwierdzająca, że obraz robi to, co mówi jego uploader.
  • Windows. Aktywacja licencji dodaje dwie do trzech minut i nie jest pod naszą kontrolą.
  • Bare metal. Tego samego dnia, nie tej samej minuty. Fizyczna maszyna wymaga fizycznej przebudowy i wolimy podać uczciwy termin, niż zacząć odliczanie, którego nie dotrzymamy.
  • Delegacja IPv6 /48. Ręczna w trzech lokalizacjach, gdzie konfiguracja sieci jest starsza. Poprawiane, powoli.

Dlaczego się tu zatrzymaliśmy

Moglibyśmy zejść z medianą do około dwudziestu sekund, trzymając instancje wstępnie uruchomione i po prostu podając ci jedną po płatności. To oznacza utrzymywanie pustych zasobów, czyli płacenie za rdzenie, których nikt nie używa, czyli pobieranie od wszystkich trochę więcej, aby nowe zamówienia wydawały się szybsze o jedenaście sekund.

Czterdzieści siedem sekund to wystarczająco krótko, że ograniczeniem jest teraz łańcuch potwierdzający twoją płatność, a nie cokolwiek, co robimy. Optymalizowanie poza punkt, w którym klient to zauważa, to hobby, a nie inżynieria.

Gotowi, gdy jesteś

Wybierz miasto. Wybierz rozmiar. Płać kryptowalutą.

Bez formularzy o tym, kim jesteś, bez czekania na akceptację człowieka, bez telefonu w celu weryfikacji. Faktura zostaje uregulowana, a dane logowania trafiają do Twojej skrzynki.