0

Azure et PostgreSQL en PaaS

twitterlinkedinmail

Nous nous retrouvons pour le 2eme article de la série de PostgreSQL en PaaS public, avec cette fois Azure.

Présentation

Azure, bien que assez récent dans sa conquête du cloud (février 2010) a beaucoup étoffé son offre et notamment son offre PaaS BDD avec aujourd’hui près d’une dizaine d’offres dont 3 entièrement dédiées à PostgreSQL (hors offre Arc*) :

  • Single server
  • Flexible server (toujours en preview lors de cet article)
  • Hyperscale (racheté à Citusdata)

Cela montre à quel point Microsoft veut asseoir sa position dans la fourniture d’une offre PaaS PostgreSQL, en effet, l’offre de base ne date que 2017.

La stratégie d’allocation d’instances sur Azure est de simplifier les choix disponibles, ainsi la quantité de mémoire est liée au nombre de CPU.

*Azure Arc permet de créer des infrastructures cloud hybride ou multi cloud

Azure PostgreSQL Single Server

C’est la première offre PaaS PostgreSQL Azure à avoir vu le jour, petite particularité évidente uniquement pour Microsoft, le PaaS ne peut pas être stoppé, redémarré oui mais pas arrêté (à moins de vouloir supprimer celui-ci).

Les versions supportées vont de la 9.5 à la 11 (sachant que la version 13 est sortie le 12/11/2020).

Pour le provisionnement d’instance, on a le choix entre :

  • Basic => Idéal pour les petites charges, instances de 1 à 2 CPU, 2Go de RAM / CPU
  • General Purpose => de 2 à 64 CPU, 5Go de RAM / CPU
  • Memory Optimized => de 2 à 32 CPU, 10Go de RAM / CPU

Stockage

Le stockage allouable va de 5Go à  16To et peut être configuré pour profiter de “l’autogrow” (augmentation automatique du stockage), les IOPS sont liées à la quantité de stockage (3 IOPS/GB, Min 100 IOPS, Max 20,000 IOPS), ce qui implique de devoir “sur-provisionner” pour avoir la quantité d’IOPS voulue.

Azure PostgreSQL Flexible Server

Ce service est en preview mais semble prometteur, en effet, il “comble” certaines lacunes du Single Server notamment le fait de pouvoir arrêter le PaaS sans avoir à le supprimer, ajout du support de la version 12 (support des versions 11 et 12 uniquement).
Flexible Server apporte également certaines “régressions” (qui devraient être comblées à terme), notamment la perte de “l’autogrow”.

Le stockage

Le stockage s’alloue avec un minimum de 32Go et chaque nouvelle augmentation est le double du précédent, ainsi, on a les valeurs suivantes comme stockage disponible :

32

64

128

256

512

1024

2048

4096

8192

16384

Les IOPS sont ici aussi liées au stockage (mais également au CPU) :

Storage size

32

64

128

256

512

1024

2048

4096

8192

16384

IOPS_MAX

120

240

500

1100

2300

5000

7500

7500

16000

18000

Attention, contrairement au Single Server le PaaS nécessite un arrêt pour upgrader le stockage.

Azure PostgreSQL Hyperscale (Citus)

Cette version du PaaS reposant sur l’extension de Citus data (racheté par Microsoft en 2019) est surtout dédiée aux gros entrepôts de données, en effet grace à l’extension Citus les données sont “shardées” et les requêtes parallélisables sur de nombreux noeuds.

La mise en place de Citus et donc l’exploitation correcte d’hyperscale demande cependant d’avoir un schéma de données se prêtant correctement car il faut pouvoir partitionner suivant une certaine clef, cependant, ceci étant fait, les accès sont alors transparents (pas d’ajout de code supplémentaire) pour l’application (et/ou les clients).

Performances

Seuls les PaaS Single Server et Flexible Server ont été “Benchés”.

Comme lors de l’article précédent, l’outil benchmarkSQL a été utilisé, les métriques des PaaS ont également été capturées.

Les sources sont disponibles à l’adresse : https://github.com/Capdata/benchmarksql et mises à jour en fonction des avancées, un article a d’ailleurs été écrit montrant comment utiliser benchmarkSQL (https://blog.capdata.fr/index.php/postgresql-benchmarking/)

Les PaaS ont tous la version 11 de PostgreSQL, les options PostgreSQL sont laissées à leurs défauts, les instances de type Basic et Burstable ont été écartées du test car trop limitées en capacités.

A chaque test, on utilise les 2 typologie d’instances (Memory Optimized et General Purpose) et on itère à la fois sur le nombre de CPU (et donc de fait la quantité de RAM) puis sur le stockage alloué (de façon à avoir plus d’IOPS), les résultats sont récapitulés ci-dessous, avec en abscisse l’ID du test composé du type d’instance (General Purpose ou Memory Optimised), du nombre de CPU et de la taille du stockage alloué séparés par “_” et en ordonné le nombre de transactions par minute au 75eme centile  :

 

  • Premier constat, il y a peu de différences entre les instances de type Memory Optimized et General Purpose
  • Deuxième constat, les PaaS de type Flexible Server (azurefs) sont nettement plus performants (en terme de nombre de transactions admissibles / minute) que les PaaS de type Single Server (azuress)
  • Dernier constat, sur Flexible Server le stockage alloué limite très peu les IOPS, ie, pour du GP_16 (General purpose 16 CPU), si on compare les performances pour le stockage minimun  (128 Go) au maximun (2 To) on a quasiment autant de transactions par minute, pour preuve la comparaison sur les IOPS des instances lors des benchs (ID correspond à <stockage alloué>_<nombre de cpu>, les types d’instance General Purpose et Memory Optimized ont été agrégées ici et on ne garde que le max de chaque) :

On a donc un réel changement qu’à partir de 1To de stockage provisionné, les IOPS auraient été limitées par le CPU ? Voyons ça ci-dessous :

On a donc une limite sur les petites instances (de 2 et 4 CPU) mais plus rien après.

C’est donc une bonne nouvelle, reste à voir maintenant si cela n’est pas du au fait que le service soit en mode preview car pour rappel, les IOPS max pour 128Go de stockage sont d’uniquement 500 contre près de 4500 ici !!!

 

Comparaison financière

Dans le tableau ci-dessous les tarifs sont donnés de façon indicative uniquement, le but étant de comparer un coût Single Server avec un Flexible Server.

SIZESingleServerFlexibleServerDiff
CPUStorageTotalCPUStorageTotal
GP_2_1281191413311614130-3
MO_2_12816114175161141750
GP_4_1282371425123314247-4
MO_4_12832314337323143370
GP_8_1284741448846514479-9
MO_8_12864614660646146600
GP_16_1289491496393114945-18
MO_16_128129114130512921413061
GP_2_2561192714611627143-3
MO_2_25616127188161271880
GP_4_2562372726423327260-4
MO_4_25632327350323273500
GP_8_2564742750146527492-9
MO_8_25664627673646276730
GP_16_2569492797693127958-18
MO_16_256129127131812922713191
GP_2_5121195517411655171-3
MO_2_51216155216161552160
GP_4_5122375529223355288-4
MO_4_51232355378323553780
GP_8_5124745552946555520-9
MO_8_51264655701646557010
GP_16_51294955100493155986-18
MO_16_512129155134612925513471
GP_2_1024119109228116109225-3
MO_2_10241611092701611092700
GP_4_1024237109346233109342-4
MO_4_10243231094323231094320
GP_8_1024474109583465109574-9
MO_8_10246461097556461097550
GP_16_102494910910589311091040-18
MO_16_102412911091400129210914011
GP_2_2048119218337116218334-3
MO_2_20481612183791612183790
GP_4_2048237218455233218451-4
MO_4_20483232185413232185410
GP_8_2048474218692465218683-9
MO_8_20486462188646462188640
GP_16_204894921811679312181149-18
MO_16_204812912181509129221815101

Les instances Flexible Server sont donc moins chères, la plus grande différence de tarif allant jusqu’à 18€ pour les instances les plus grosses ce qui représente presque 20% du tarif (je rappelle aussi que contrairement aux Single Server, les instances Flexible Server peuvent être stoppées, suspendant de fait leur coût).

Conclusion

Plus performantes, moins chère, plus de fonctionnalités, les instances Flexible Server sont sans nul doute la prochaine itération des PaaS PostgreSQL sur Azure, reste à savoir si les performances resteront après le passage en General Availability.

Au delà de ce comparatif sur les performances pures, on peut voir à quel point Microsoft investi dans le Cloud et notamment PostgreSQL.

Continuez votre lecture sur le blog :

twitterlinkedinmail

Capdata team

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.