NLEN
Technical support?
Home > Blog

Wie van de 3...Database in AWS Azure of GCP

Edco Wallet 8-7-2020 8:51
Categorieën: Beheer, BLOG, Cloud, DBMS, Review

De transitie naar de cloud is in volle gang. Private, public, hybride, IaaS, PaaS, DbaaS; de cloud kent talloze vormen en toepassingen. Maar welke cloudprovider en welke machines matchen nu het best met je omgeving, en vooral met je database? CockroachLabs - het bedrijf achter CockroachDB – heeft recent hun jaarlijkse Cloud Report gepubliceerd. Zij hebben een uitgebreide en grondige benchmark uitgevoerd met de drie meest bekende cloudproviders. Daarbij gaan ze uit van een database instance op een cloudserver en niet van DbaaS. In deze blog deelt Edco Wallet een samenvatting van het Cloud Report 2020.

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.

CPU Throughput AWS, Azure en GCP

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 throughput AWS, Azure en GCP

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.

Netwerk Latency AWS, Azure en GCP

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.

Storage I/O Write Throughput AWS, Azure en GCP

Storage I/O Write Latency en iOPs AWS, Azure en GCP

Net als de write performance wint AWS met read performance in alle categorieën met zijn i3-machinetype.

Storage I/O read Throughput AWS, Azure en GCP

Storage I/O read latency en iOPs AWS, Azure en GCP

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.

TPC-C Performance AWS, Azure en GCP

Alle drie de cloudproviders zitten dichtbij elkaar met de prijs per tpmC. Echter, dit jaar zien we dat de GCP n2-highcpu-16 de beste prestaties per dollar biedt. Als geld geen rol speelt dan is AWS absoluut de beste performer op throughput.

Conclusie

GCP laat een geweldige verbetering zien in het 2020 Cloud Report met AWS en Azure op prijs per performance van TPC-C, maar zit onder de performance van AWS en Azure betreffende max. tpmC op een three node cluster. Als netwerklatency een belangrijke factor is in je configuratie dan is AWS by far de beste keuze, op dit moment.

Dit soort testen en benchmarks zijn een momentopname en de performance kan van maand tot maand veranderen omdat de cloudproviders uiteraard de hardware wijzigen en updaten om bij te blijven in de race om performance. Daarom is het goed om regelmatig te blijven vergelijken in relatie tot de gewenste of toegepaste configuratie.

Het volledige rapport kun je hier downloaden.

De 3 cloudproviders zijn voor publicatie van het rapport geinformeerd over de resultaten. In deze blogpost kun je een verslag lezen van hun reactie en aanbevelingen voor het volgende Cloud report. Zo is er discussie of er wel voldoende maatwerk en tuning heeft plaatsgevonden omdat CockroachLabs ervoor gekozen heeft overal "default" configuratie toe te passen. Echter de configuratie opties en tunings mogelijkheden zijn zo uitgebreid en verschillend van invalshoek dat CockroachLabs de vergelijking het meest transparant en realistisch vindt door overal door de cloudprovider ingestelde of geadviseerde defaults toe te passen.

Meer weten?

Heb je een databaseomgeving in de cloud en wil je eens laten beoordelen hoe de configuratie presteert of advies wat er beter kan? Of heb je plannen om te migreren naar een cloud setup? Neem gerust vrijblijvend contact op, we denken graag mee.

Route naar effectief databasebeheer?

Wij leven in een wereld die meer en meer door data gedreven is. Goed beheer van je dataplatform (in de cloud) wordt dan ook steeds crucialer. Een goede database-expert weet precies hoe de nieuwste tooling werkt, voelt zich als een vis in het water bij zowel opensource- als gelicenceerde databaseomgevingen en vindt het oplossen van complexe databasepuzzels een feest. Maar wat is nu de route naar effectief databasebeheer? Om een aantal handvatten aan te reiken hebben we daar een whitepaper over geschreven. Download hier onze whitepaper.

Gerelateerde blogs:

DBaaS of DBA Eindbaas?

Databases in de cloud

CockRoachDB: Offspring van PostgreSQL?

Terug naar blogoverzicht

Reageer