Vijf jaar lang duurde het kopen van een server hier mediaan drie minuten en twintig seconden van de betalingswebhook tot de inloggegevens in uw inbox. Niemand klaagde. Het was sneller dan de meeste in de branche en aanzienlijk sneller dan alles waarvoor een menselijke goedkeuring nodig is.
Het waren ook vier seriële stappen die niets serieels te zoeken hadden, en zodra je dat opvalt, kun je het niet meer negeren. De herschrijving werd in maart uitgebracht en de mediaan is nu zevenenveertig seconden, met het vijfennegentigste percentiel op net onder vier minuten.
Wat de oude deed
| Stap | Mediaan | Wat er gebeurde |
|---|---|---|
| Image kopiëren | 84 s | Een schijfimage van een per-site opslag naar de doelknoop trekken |
| Volume aanmaken | 31 s | Het NVMe-volume toewijzen en formatteren |
| Adrestoewijzing | 46 s | Een vergrendeling op de site-adrespool nemen, een IPv4 kiezen, reverse DNS schrijven |
| Eerste boot en cloud-init | 39 s | Sleutels genereren, het bestandssysteem uitbreiden, e-mail sturen |
Vier stappen, één wereldwijde workerpool en een vergrendeling op de adrespool waar elke bestelling op dezelfde site achter in de rij moest wachten. Op een rustige dinsdag was het prima. Tijdens een promotie, of tijdens het uur nadat een grote klant veertig aanmaakacties scriptte, verdubbelde de mediaan en liep de staart op tot meer dan twaalf minuten.
Wat we hebben gewijzigd
Images worden vooraf geseed, niet gekopieerd. Elke knoop heeft een dunne clone-basis voor elk image in de catalogus, die 's nachts wordt ververst. Het aanmaken van een volume is nu een copy-on-write clone tegen een lokale Gen4 NVMe-spiegel in plaats van een netwerkpull. Die stap ging van vierentachtig seconden naar onder twee.
Adressen worden vooraf gereserveerd. Elke site heeft een warme pool van toegewezen adressen met al geschreven reverse DNS, groot genoeg voor ongeveer zes uur vraag op die site. Toewijzing is nu een pop uit een vooraf gebouwde pool in plaats van een vergrendeling, een scan en een DNS-schrijfactie. Zesenenveertig seconden werden ongeveer vierhonderd milliseconden.
Queues zijn per site. Een haast in Frankfurt vertraagt geen aanmaak in São Paulo meer, wat voor de hand liggend klinkt en niet het oorspronkelijke ontwerp was, omdat het oorspronkelijke ontwerp vier sites en één engineer had.
Workers zijn idempotent en hervatbaar. Elke stap is gesleuteld, dus een worker die halverwege sterft laat een hervatbare taak achter in plaats van een half gebouwde instantie en een supportticket. Handmatige tussenkomst bij een mislukte aanmaak daalde van ongeveer één op de vierhonderd bestellingen naar één op negenduizend.
Het resultaat
| Metriek | Voor | Na |
|---|---|---|
| Mediaan | 3 min 20 s | 47 s |
| 95e percentiel | 12 min 10 s | 3 min 56 s |
| 99e percentiel | 41 min | 8 min 20 s |
| Mislukte aanmaak die een mens nodig heeft | 1 op 400 | 1 op 9.000 |
| Gelijktijdigheid per site voordat de mediaan verschuift | 6 | 90 |
Wat er onderweg misging
In maart, gedurende elf uur, faalde de nachtelijke verversing van de dunne clone-bases stilzwijgend op vier sites en diende het vooraf geseede Debian-image een point release die negen dagen oud was. Ongeveer negentig instanties werden ervan gebouwd. Geen ervan was op een interessante manier kapot, aangezien een verouderde point release een pakketupdate verwijderd is van een actuele, maar niemand die een server koopt zou moeten hoeven te controleren.
We herbouwden de getroffen instanties op verzoek, e-mailden alle negentig of ze erom vroegen of niet, en voegden een controle toe die de hash van het basis-image vergelijkt met de catalogus voordat een knoop aanmaakacties mag bedienen. Een stille fout in een nachtelijke taak is de meest saaie mogelijke oorzaak en het is de moeite waard om het op te schrijven juist omdat het saai is.
Wat nog steeds langzaam is
- Aangepaste ISO-installaties. Nog steeds handmatig, nog steeds gemeten in tientallen minuten, meestal binnen het uur voltooid. De bottleneck is een persoon die bevestigt dat het image doet wat de uploader zegt dat het doet.
- Windows. Licentieactivering voegt twee tot drie minuten toe en is niet onder onze controle.
- Bare metal. Zelfde dag in plaats van zelfde minuut. Een fysieke machine heeft een fysieke herbouw, en we geven u liever een eerlijke offerte dan een klok te starten die we niet kunnen verslaan.
- IPv6 /48-delegatie. Handmatig op drie sites waar de fabricconfiguratie ouder is. Wordt langzaam opgelost.
Waarom we hier zijn gestopt
We zouden de mediaan naar ongeveer twintig seconden kunnen brengen door instanties vooraf op te starten en u er gewoon één te overhandigen bij betaling. Dat betekent inactieve capaciteit aanhouden, wat betekent betalen voor cores die niemand gebruikt, wat betekent dat iedereen een beetje meer betaalt zodat nieuwe bestellingen elf seconden sneller kunnen voelen.
Zevenenveertig seconden is kort genoeg dat de beperking nu de keten is die uw betaling bevestigt in plaats van iets wat wij doen. Optimaliseren tot voorbij het punt waar de klant het merkt is een hobby, geen engineering.