Cloud-databasesetup
Om maar meteen met de deur in huis te vallen: er is niet één beste advies dat voor iedereen geldt. Voor elke databaseconfiguratie en setup gelden andere wensen en voor elke use case is een verhaal. Maar dit rapport kan goed helpen bij het kiezen van je cloudprovider en de machines die je gaat gebruiken.
Het geeft je handvatten hoe je huidige cloud setup eens onder de loep kunt nemen. Hoewel voor CockroachDB zelf vooral Storage-I/O een belangrijke performance indicator is, hebben ze over de volle breedte de benchmark uitgevoerd, waardoor je voor elk type database daar je indicatoren uit kunt destilleren.
Uitgangspunten
Het rapport vergelijkt de prestaties van AWS, Azure en GCP (Google Cloud Platform) op een reeks microbenchmarks en workloads om de performance te meten van de drie cloudproviders met haar beschikbare machinetypes. De benchmark is gericht op IaaS, dus het afnemen van een server in IaaS-services van AWS, Azure of GCP waarop je je eigen database installeert.
Het rapport is in grote lijnen representatief voor de performance van de meest voorkomende relationele databases (zoals PostgreSQL, SQL Server, en CockroachDB zelf) maar uiteraard niet 100% volledig op alle gebruikssituaties. Zou zouden bijvoorbeeld machinelearninggerichte gebruikers waarschijnlijk een andere set van benchmarks willen gebruiken bij het vergelijken van de prestaties van de cloudprovider.
Hoe is de test uitgevoerd?
De test bestaat uit duizend benchmarktests uitgevoerd op 26 van de nieuwste en best presterende machinetypes verkrijgbaar bij AWS, Azure en GCP op drie assen: CPU, Netwerk en Opslag-I/O. Na beoordeling van de microbenchmarks, zijn de nieuwste topklasse machinetypes van elke cloudprovider geselecteerd en is gebenchmarkt op de industrienorm TPC-C. CockroachLabs heeft alle testmethoden en scripts beschikbaar gesteld om de benchmark zelf te kunnen reproduceren of naar wens aan te passen voor eigen testen.
Ook de broncode is beschikbaar. De tools die zijn heeft gebruikt, zijn o.a. stress-ng, sysbench, iPerf en ping.
Resultaten CPU-test
De best presterende Azure-machines behaalden aanzienlijk betere resultaten op de CPU-microbenchmark. Het verschil tussen de CPU’s van de cloudproviders was dat, hoewel alle machines 16 vCPU’s hebben, de best presterende Azure-machines 16 cores met één thread per core bevatten. De andere cloudproviders maken gebruik van hyperthreading over alle instances en hebben acht cores met twee threadsper core om 16 vCPU’s te bereiken.
Netwerk-throughput
Het netwerk van GCP ziet er veel beter uit dan dat van AWS of Azure. Niet alleen verslaan hun best presterende machines de best presterende machines van elk netwerk, zelfs hun minst performante machine is in overeenstemming met de maximale netwerk-throughput van AWS, zoals te zien is in de tests. Dit is vooral indrukwekkend omdat AWS vorig jaar beter presteerde dan GCP in de netwerktests.
Netwerk-latency
Naast de throughput is ook de netwerk-latency getest. Zonder te testen op latency kunnen aanzienlijke vertragingen over het hoofd worden gezien omdat die door de algemene performance worden gemaskeerd. Latency beperkt bijvoorbeeld de prestaties van individuele operaties.
Bij het gebruik van Azure op twee locaties (zoals een datacenter in Belgie en een in Nederland) zal het regelmatig toch gebeuren dat data niet direct tussen de twee locaties verplaatst, maar een keer heen en weer over de oceaan gaat. Dat scheelt aanzienlijk in de performance en dit soort latency kan veel problemen opleveren met bijvoorbeeld replicatie.
Zelfs de beste machine op Azure is meer dan vijf keer slechter dan op AWS of GCP. GCP heeft zijn netwerk-latency buitengewoon goed verbeterd sinds vorig jaar, maar AWS is nog steeds met kop en schouders de beste. Alle machinetypes van AWS bieden gemiddeld een lage netwerk-latency en de topmachines doen het beter dan de concurrenten.
Storage I/O
Het belang van storage-I/O hangt af van de applicatie. Voor CockroachDB, een applicatie die altijd wil lezen en schrijven naar persistent storage, is dit van cruciaal belang. Voor andere stateless applicaties maakt storage performance niet zo’n verschil. Er is een verscheidenheid aan verschillende beschikbare storagetechnologieën, van klassieke harddisks en moderne SSD’s tot aan het netwerk gekoppelde storage en gerepliceerde storage.
Zelfs als je in de cloud draait zijn er een aantal keuzes die gemaakt kunnen worden bij de vorm van storage.
Na het vergelijken van alle drie de topmachines van de cloudproviders, biedt AWS superieure write performance met het type i3en machine.
Net als de write performance wint AWS met read performance in alle categorieën met zijn i3-machinetype.
TPC-C Performance
TPC-C is een populaire OLTP-benchmarktool die een e-commerce-bedrijf simuleert met een (groot) aantal verschillende magazijnen die meerdere transacties tegelijk verwerken.
TPC-C wordt op twee verschillende manieren gemeten. De ene is throughput per minuut type C (tpmC) (ook wel bekend als het aantal verwerkte orders per minuut). De andere is het totaal aantal ondersteunde magazijnen.
Kostenefficiëntie is net zo belangrijk als performance. Als voor topperformance twee tot drie keer meer dan de gemiddelde performance moet worden betaald, is het misschien niet de moeite waard. Om deze reden wordt TPC-C meestal gemeten in termen van prijs per tpmC. Dit maakt het mogelijk om zowel over de cloudproviders heen als binnen de cloudproviders een eerlijke vergelijking te maken. In deze analyse worden de standaard on-demand prijzen gebruikt, om het simpel te houden.