0

PaaS PostgreSQL AWS vs Azure

twitterlinkedinmail

Introduction

Maintenant que nous avons vu en détail les performances des PaaS PostgreSQL sur AWS puis sur Azure nous allons essayer de comparer ceux-ci ; nous essaierons de construire un jugement objectif, attention cependant, celui-ci est basé sur un benchmark de type TPC-C, il se peut donc que dans certains cas le comportement observé ne soit pas identique, d’autre part, les configurations postgreSQL ont été laissées à leurs valeurs prédéfinies qui peuvent donc varier d’un “Cloud provider” à l’autre.

Normalisation

De façon à pouvoir comparer il à d’abord fallu “normaliser les PaaS”, c’est à dire pouvoir faire correspondre les types d’instances entre les différents “Cloud Provider”, ainsi les instances de type  “GP” (General Purpose) d’Azure correspondent à des instances “db.m” d’AWS et les instances “MO”  (Memory Optimized) correspondent à des instances de type “db.r” (une remarque qui ne change à rien au test, ce sont à chaque fois des instances de 5eme génération qui sont utilisées, càd “db.m5” ou “db.r5” pour AWS et Gen 5 chez Azure) :

Pour les instances GP Azure provisionne 5Go de RAM / vCore
Pour les instances MO Azure provisionne 10Go de RAM / vCore

AWS     AZURE    
Instance class CPU MEM CLASS CPU MEM
db.m5.8xlarge 32 128 GP_32 32 160
db.m5.4xlarge 16 64 GP_16 16 80
db.m5.2xlarge 8 32 GP_8 8 40
db.m5.xlarge 4 16 GP_4 4 20
db.m5.large 2 8 GP_2 2 10
db.r5.8xlarge 32 256 MO_32 32 320
db.r5.4xlarge 16 128 MO_16 16 160
db.r5.2xlarge 8 64 MO_8 8 80
db.r5.xlarge 4 32 MO_4 4 40
db.r5.large 2 16 MO_2 2 20

On a donc les instances Azure qui sont provisionnées avec un peu plus de mémoire.

Par souci de commodité, dans ce qui suit les dénomination d’instances suivantes seront utilisées pour AWS et Azure :

<GP|MO>_<vCPU>_<Stockage> (la quantité de mémoire allouée pourra donc être retrouvée au besoin dans le tableau ci-dessus.

Comparaison des performances

Nous allons comparer ici AWS (RDS et Aurora) et Azure (Single Server et Flexible Server), Aurora ne pouvant être provisionné que sur des instances de type “db.r”, on restreindra le comparatif à uniquement des instances de type AWS “db.r” et Azure “MO” ; de plus, étant donné que les IOPS ne sont pas une contrainte sur Aurora on utilisera le stockage le plus gros provisionné lors des benchs (2To) comme référence de comparaison et ce même si en fait sur Aurora les 2To ne sont pas réellement provisionnés (pour rappel, sur Aurora le stockage est de facto en augmentation automatique par incrément de 30Go, cf : https://blog.capdata.fr/index.php/aws-rds-aurora-postgresql/).

Remarque : Le stockage provisionné ici est de 2To !!!

Aurora est donc surtout très performant pour des grosses instances (par rapport aux autre PaaS, je rappelle aussi qu’ici le stockage a été sur-dimensionné pour profiter de plus d’IO).
RDS classique s’en sort très bien pour les petites instances.
Azure Single Storage est plus performant qu’Azure Flexible Server (toujours avec un stockage sur-dimensionné car avec un stockage normalement dimensionné la tendance est inversée).

Pour rappel sur les comparatifs complets, cf : https://blog.capdata.fr/index.php/azure-et-postgresql-en-paas/ et  https://blog.capdata.fr/index.php/aws-rds-aurora-postgresql/ et ci-dessous les graphes.

Comparaison performances Azure Single Server vs Flexible Server

Comparaison performances AWS RDS vs AWS Aurora

Comparaison financière

La comparaison financière ci-dessous permet de comparer le “coût d’une transaction” entre les différents PaaS Azure (Single Server et Flexible Server) et AWS (RDS en GP2, RDS en Provisioned IOPS 10k, 30k et Aurora) testés précédemment.

La définition de la “taille” (l’instance utilisée) est définie comme ci-dessus, càd :

<MO|GP>_<vCore>_<stockage en Mo>

Remarque : Pour AWS MO est équivalent aux instances de type db.r5 et GP aux instances de type db.m5

Résumé

Ci-dessous un comparatif avec une taille de stockage à 1To, seule capacité où les tests ont tous été faits (en effet, pour tester du “provisioned IOPS” sur RDS il faut provisionner une quantité suffisante de stockage).

 

SIZE
Azure

Cost / TPM

aws-logo - Futurum Research
Cost / TPM
Single Server Flexible Server RDS GP2 RDS PIO 10k RDS PIO 30k Aurora
MO_2_1024 0,020 0,025 0,016 0,073 0,250 8,711
MO_4_1024 0,014 0,016 0,020 0,055 0,603 8,407
MO_8_1024 0,011 0,011 0,021 0,045 0,092 11,799
MO_16_1024 0,019 0,018 0,042 0,062 0,108 8,218

Les coûts sont exprimés en $/mois/transaction

Attention, le tableau ci-dessus peut être trompeur, en effet, il ne tient pas compte de l’activité souhaitée mais fait le postulat que l’on essaie d’avoir le maximum de transactions par minute, ce qui n’est pas souvent le cas.

Ainsi, on peut voir à quel point Aurora, bien qu’étant une solution performante peut vite devenir très onéreuse, en effet, dans le calcul du coût final / TPM a été pris en compte le fait que sur Aurora les IOPS sont facturées en plus du stockage et de l’instance ; ci-dessous le détail de ces IO.

PaaS_size Nb IO (75eme percentile)
MO_32 1716014,50994444
MO_8 977871,730525966
MO_4 445554,741155943
MO_2 253022,491465421
MO_16 1813954,3061938

Remarque, les coûts inhérents au fait de provisionner 10k IOPS et 30k IOPS ont également été pris en compte.

Tableau complet

Et le tableau complet montrant toutes les instances, les TPM et les différents coûts.

SIZE Azure
Azure
aws-logo - Futurum Research
AWS
Costs TPM Cost / TPM Costs TPM Cost / TPM
Single Server Flexible Server Single Server Flexible Server Single Server Flexible Server RDS GP2 RDS PIO 10k RDS PIO 30k Aurora* RDS GP2 RDS PIO 10k RDS PIO 30k Aurora RDS GP2 RDS PIO 10k RDS PIO 30k Aurora
GP_2_128 133,00 € 130,00 € 1212 10801 0,110 € 0,012 € 165,34 € 1 325,34 € 3 645,34 €   11200 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_2_128 175,00 € 175,00 € 2029 10011 0,086 € 0,017 € 228,70 € 1 388,70 € 3 708,70 € 255,28 € 20901 #N/D #N/D 16834 0 #N/D #N/D 9
GP_4_128 251,00 € 247,00 € 1779 25339 0,141 € 0,010 € 313,66 € 1 473,66 € 3 793,66 €   24066 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_4_128 337,00 € 337,00 € 2244 29632 0,150 € 0,011 € 440,38 € 1 600,38 € 3 920,38 € 496,48 € 40168 #N/D #N/D 30713 0 #N/D #N/D 8
GP_8_128 488,00 € 479,00 € 2045 41828 0,239 € 0,011 € 610,30 € 1 770,30 € 4 090,30 €   42873 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_8_128 660,00 € 660,00 € 1824 63373 0,362 € 0,010 € 863,74 € 2 023,74 € 4 343,74 € 978,88 € 46677 #N/D #N/D 48007 0 #N/D #N/D 12
GP_16_128 963,00 € 945,00 € 1619 53316 0,595 € 0,018 € 1 203,58 € 2 363,58 € 4 683,58 €   36851 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_16_128 1 305,00 € 1 306,00 € 1384 59160 0,943 € 0,022 € 1 710,46 € 2 870,46 € 5 190,46 € 1 943,68 € 41830 #N/D #N/D 127860 0 #N/D #N/D 8
GP_2_256 146,00 € 143,00 € 2418 12258 0,060 € 0,012 € 182,37 € 1 342,37 € 3 662,37 €   11513 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_2_256 188,00 € 188,00 € 6519 11774 0,029 € 0,016 € 245,73 € 1 405,73 € 3 725,73 € 269,36 € 16377 #N/D #N/D 16834 0 #N/D #N/D 9
GP_4_256 264,00 € 260,00 € 4793 30607 0,055 € 0,008 € 330,69 € 1 490,69 € 3 810,69 €   20136 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_4_256 350,00 € 350,00 € 16088 32641 0,022 € 0,011 € 457,41 € 1 617,41 € 3 937,41 € 510,56 € 39128 #N/D #N/D 30713 0 #N/D #N/D 8
GP_8_256 501,00 € 492,00 € 7896 60381 0,063 € 0,008 € 627,33 € 1 787,33 € 4 107,33 €   47657 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_8_256 673,00 € 673,00 € 13657 58740 0,049 € 0,011 € 880,77 € 2 040,77 € 4 360,77 € 992,96 € 57498 #N/D #N/D 48007 0 #N/D #N/D 12
GP_16_256 976,00 € 958,00 € 5559 66177 0,176 € 0,014 € 1 220,61 € 2 380,61 € 4 700,61 €   65691 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_16_256 1 318,00 € 1 319,00 € 5548 69331 0,238 € 0,019 € 1 727,49 € 2 887,49 € 5 207,49 € 1 957,76 € 60069 #N/D #N/D 127860 0 #N/D #N/D 8
GP_2_512 174,00 € 171,00 € 4968 9093 0,035 € 0,019 € 216,42 € 1 376,42 € 3 696,42 €   19401 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_2_512 216,00 € 216,00 € 10479 10450 0,021 € 0,021 € 279,78 € 1 439,78 € 3 759,78 € 297,52 € 22901 #N/D #N/D 16834 0 #N/D #N/D 9
GP_4_512 292,00 € 288,00 € 9725 23045 0,030 € 0,012 € 364,74 € 1 524,74 € 3 844,74 €   29554 #N/D #N/D #N/D 0 #N/D #N/D #N/D
MO_4_512 378,00 € 378,00 € 23090 28656 0,016 € 0,013 € 491,46 € 1 651,46 € 3 971,46 € 538,72 € 32332 #N/D #N/D 30713 0,015 € #N/D #N/D 8,405 €
GP_8_512 529,00 € 520,00 € 21327 47392 0,025 € 0,011 € 661,38 € 1 821,38 € 4 141,38 €   76063 #N/D #N/D #N/D 0,009 € #N/D #N/D #N/D
MO_8_512 701,00 € 701,00 € 36539 64192 0,019 € 0,011 € 914,82 € 2 074,82 € 4 394,82 € 1 021,12 € 73817 #N/D #N/D 48007 0,012 € #N/D #N/D 11,798 €
GP_16_512 1 004,00 € 986,00 € 33032 67148 0,030 € 0,015 € 1 254,66 € 2 414,66 € 4 734,66 €   85698 #N/D #N/D #N/D 0,015 € #N/D #N/D #N/D
MO_16_512 1 346,00 € 1 347,00 € 26944 73871 0,050 € 0,018 € 1 761,54 € 2 921,54 € 5 241,54 € 1 985,92 € 78345 #N/D #N/D 127860 0,022 € #N/D #N/D 8,218 €
GP_2_1024 228,00 € 225,00 € 7707 10714 0,030 € 0,021 € 284,51 € 1 444,51 € 3 764,51 €   19546 20574 22442 #N/D 0,015 € 0,070 € 0,168 € #N/D
MO_2_1024 270,00 € 270,00 € 13245 10805 0,020 € 0,025 € 347,87 € 1 507,87 € 3 827,87 € 353,84 € 21780 20587 15313 16834 0,016 € 0,073 € 0,250 € 8,711 €
GP_4_1024 346,00 € 342,00 € 15649 23456 0,022 € 0,015 € 432,83 € 1 592,83 € 3 912,83 €   29899 30688 26189 #N/D 0,014 € 0,052 € 0,149 € #N/D
MO_4_1024 432,00 € 432,00 € 30131 26926 0,014 € 0,016 € 559,55 € 1 719,55 € 4 039,55 € 595,04 € 28520 31311 6699 30713 0,020 € 0,055 € 0,603 € 8,407 €
GP_8_1024 583,00 € 574,00 € 51375 56428 0,011 € 0,010 € 729,47 € 1 889,47 € 4 209,47 €   62496 45416 47342 #N/D 0,012 € 0,042 € 0,089 € #N/D
MO_8_1024 755,00 € 755,00 € 69446 69565 0,011 € 0,011 € 982,91 € 2 142,91 € 4 462,91 € 1 077,44 € 46194 47345 48372 48007 0,021 € 0,045 € 0,092 € 11,799 €
GP_16_1024 1 058,00 € 1 040,00 € 77250 73993 0,014 € 0,014 € 1 322,75 € 2 482,75 € 4 802,75 €   74894 46458 52959 #N/D 0,018 € 0,053 € 0,091 € #N/D
MO_16_1024 1 400,00 € 1 401,00 € 72340 77191 0,019 € 0,018 € 1 829,63 € 2 989,63 € 5 309,63 € 2 042,24 € 43456 47841 49108 127860 0,042 € 0,062 € 0,108 € 8,218 €
GP_2_2048 337,00 € 334,00 € 9585 6621 0,035 € 0,050 € 420,70 € 1 580,70 € 3 900,70 €   22540 #N/D #N/D #N/D 0,019 € #N/D #N/D #N/D
MO_2_2048 379,00 € 379,00 € 11120 8331 0,034 € 0,045 € 484,06 € 1 644,06 € 3 964,06 € 466,48 € 20761 #N/D #N/D 16834 0,023 € #N/D #N/D 8,718 €
GP_4_2048 455,00 € 451,00 € 24501 20609 0,019 € 0,022 € 569,02 € 1 729,02 € 4 049,02 €   42415 #N/D #N/D #N/D 0,013 € #N/D #N/D #N/D
MO_4_2048 541,00 € 541,00 € 37207 24624 0,015 € 0,022 € 695,74 € 1 855,74 € 4 175,74 € 707,68 € 44550 #N/D #N/D 30713 0,016 € #N/D #N/D 8,410 €
GP_8_2048 692,00 € 683,00 € 62430 54995 0,011 € 0,012 € 865,66 € 2 025,66 € 4 345,66 €   68180 #N/D #N/D #N/D 0,013 € #N/D #N/D #N/D
MO_8_2048 864,00 € 864,00 € 74070 67194 0,012 € 0,013 € 1 119,10 € 2 279,10 € 4 599,10 € 1 190,08 € 70506 #N/D #N/D 48007 0,016 € #N/D #N/D 11,801 €
GP_16_2048 1 167,00 € 1 149,00 € 58392 71574 0,020 € 0,016 € 1 458,94 € 2 618,94 € 4 938,94 €   72923 #N/D #N/D #N/D 0,020 € #N/D #N/D #N/D
MO_16_2048 1 509,00 € 1 510,00 € 74289 67449 0,020 € 0,022 € 1 965,82 € 3 125,82 € 5 445,82 € 2 154,88 € 76100 #N/D #N/D 127860 0,026 € #N/D #N/D 8,219 €

*Coûts Aurora : Sont exclu ici les coûts inhérents aux IOPS qui sont à rajouter à la facture globale (0.00000022 / IO mensuelle)

Comparatif TPM / Coût

Stockage 128Mo

Stockage 256Mo

Stockage 512Mo

Stockage 1024Mo

Stockage 2048Mo

*Coûts Aurora : Sont exclu ici les coûts inhérents aux IOPS qui sont à rajouter à la facture globale (0.00000022 / IO mensuelle)

Conclusion

Ce comparatif aura montré d’une part que bien qu’Aurora soit un PaaS très performant qui de prime abord peut paraitre peu onéreux (si on ne prend que le prix de base instance + stockage) ce prix peut vite devenir important en fonction des opérations (et donc des IO) lancées sur celui-ci, on le réservera donc à des besoins spécifiques bien calibrés.

D’autre part, Azure bien qu’assez récent dans le domaine des PaaS PostgreSQL se montre un très bon challenger face à AWS avec des tarifications assez agressives et des performances plus qu’acceptables notamment sur les instances de type Flexible Server (performances à revérifier lors de la disponibilité en “General Availability” tout de même).

Continuez votre lecture sur le blog :

twitterlinkedinmail

Nicolas MARTIN

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.