{"id":75075,"date":"2023-12-14T13:13:25","date_gmt":"2023-12-14T12:13:25","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=75075&#038;preview=true&#038;preview_id=75075"},"modified":"2023-12-15T12:37:22","modified_gmt":"2023-12-15T11:37:22","slug":"manuel-cto-startup-postgres","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/","title":{"rendered":"Le manuel du directeur technique d&rsquo;une startup sur Postgres"},"content":{"rendered":"<p>Vous d\u00e9marrez un nouveau projet &#8211; ou une nouvelle entreprise &#8211; et vous avez d\u00e9cid\u00e9 d&rsquo;utiliser Postgres. La partie la plus difficile (choisir votre base de donn\u00e9es) est termin\u00e9e, et maintenant la partie la plus amusante commence : s&rsquo;assurer que vous n&rsquo;aurez pas besoin d&rsquo;y repenser avant quelques ann\u00e9es.<\/p>\n<p>Cet article pr\u00e9sente quelques astuces moins connues pour configurer Postgres \u00e0 long terme, de la mise en commun des connexions aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Configurer le pooling de connexions pour Postgres avec PGBouncer<\/h2>\n<p>Par d\u00e9faut, Postgres cr\u00e9e un <a href=\"https:\/\/www.postgresql.org\/docs\/current\/connect-estab.html\" target=\"_blank\" rel=\"noopener noreferrer\">processus distinct pour chaque connexion client<\/a> \u00e0 partir du processus principal du syst\u00e8me d&rsquo;exploitation. \u00c0 faible volume, le temps n\u00e9cessaire \u00e0 la cr\u00e9ation et \u00e0 la destruction de ces processus, ainsi que le fait qu&rsquo;ils ne soient jamais r\u00e9utilis\u00e9s, n&rsquo;ont pas d&rsquo;importance. Vous pouvez d\u00e9finir <a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-connection.html\" target=\"_blank\" rel=\"noopener noreferrer\">manuellement<\/a> un certain nombre de max_connections, mais au fur et \u00e0 mesure que vous augmenterez votre volume, vous rencontrerez probablement des probl\u00e8mes \u00e0 ce niveau. <strong><a href=\"https:\/\/stackoverflow.blog\/2020\/10\/14\/improve-database-performance-with-connection-pooling\/\" target=\"_blank\" rel=\"noopener noreferrer\">La mise en commun des connexions<\/a><\/strong> vous permet de \u00ab mettre en cache \u00bb ces processus et de les <strong>r\u00e9utiliser<\/strong> au fur et \u00e0 mesure que les clients se connectent et se d\u00e9connectent de votre base de donn\u00e9es.<\/p>\n<p>Bien que vous <em>puissiez<\/em> int\u00e9grer la mise en commun des connexions dans votre logique applicative, la plupart des gens optent pour un outil tiers, et dans le cas de Postgres, il s&rsquo;agit de <strong><a href=\"https:\/\/www.pgbouncer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PGBouncer<\/a><\/strong>. Il s&rsquo;agit d&rsquo;un pooler de connexion l\u00e9ger et open source que vous <a href=\"https:\/\/www.pgbouncer.org\/faq.html\" target=\"_blank\" rel=\"noopener noreferrer\">pouvez<\/a> installer sur votre serveur de base de donn\u00e9es ou votre serveur d&rsquo;application. Vous avez le choix entre <a href=\"https:\/\/www.pgbouncer.org\/features.html\" target=\"_blank\" rel=\"noopener noreferrer\">trois niveaux de pooling<\/a>:<\/p>\n<ul>\n<li><strong>Pooling de session <\/strong>: il reste fid\u00e8le au mod\u00e8le \u00ab les connexions client sont ind\u00e9finies \u00bb et maintient une connexion ouverte pendant toute la dur\u00e9e de la connexion du client.<\/li>\n<li><strong>Mise en commun des transactions <\/strong>: les connexions ne durent que le temps d&rsquo;une transaction, apr\u00e8s quoi elles sont renvoy\u00e9es dans le pool.<\/li>\n<li><strong>Pooling de requ\u00eates<\/strong> : les connexions ne durent que le temps d&rsquo;une requ\u00eate, donc si vous en avez plusieurs dans le cadre d&rsquo;une transaction, cela ne fonctionnera pas du tout.<\/li>\n<\/ul>\n<p>La plupart des utilisateurs choisissent la mise en commun de sessions &#8211; c&rsquo;est la solution la plus conservatrice et la moins risqu\u00e9e pour l&rsquo;abandon de connexions &#8211; mais chaque application est diff\u00e9rente et vous devrez d\u00e9terminer le mode qui convient \u00e0 vos contraintes.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>La plupart des frameworks web s&rsquo;en remettent \u00e0 des outils tiers (voir <a href=\"https:\/\/groups.google.com\/g\/django-developers\/c\/NwY9CHM4xpU\">ce forum Django<\/a> sur PGBouncer), mais Rails fournit en fait une <a href=\"https:\/\/api.rubyonrails.org\/classes\/ActiveRecord\/ConnectionAdapters\/ConnectionPool.html\">fonctionnalit\u00e9 native de pool de connexions<\/a>.<\/p>\n<\/aside>\n\n<h3>Impact de la mise en commun des connexions sur les performances<\/h3>\n<p>Mais la question \u00e0 un million de dollars : <strong>cela fonctionne-t-il vraiment ?<\/strong> <a href=\"https:\/\/www.percona.com\/blog\/scaling-postgresql-with-pgbouncer-you-may-need-a-connection-pooler-sooner-than-you-expect\/\" target=\"_blank\" rel=\"noopener noreferrer\">Percona a effectu\u00e9<\/a> une s\u00e9rie de tests pour d\u00e9terminer l&rsquo;impact de PGBouncer sur les performances. Avec un petit nombre de clients simultan\u00e9s (&lt;60), PGBouncer <em>d\u00e9grade consid\u00e9rablement le<\/em> nombre de transactions par seconde (TPS) en raison des frais g\u00e9n\u00e9raux li\u00e9s \u00e0 la mise en commun. Mais lorsque vous passez \u00e0 plus de 100 clients, vous commencez \u00e0 voir des avantages significatifs en termes de performances.<\/p>\n<figure>\n<figure style=\"width: 612px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/10\/pgbouncer.png\" alt=\"PGBouncer\" width=\"612\" height=\"371\"><figcaption class=\"wp-caption-text\">PGBouncer<\/figcaption><\/figure>\n<p>Avez-vous besoin d&rsquo;un pooler de connexions d\u00e8s maintenant pour prendre en charge vos premiers utilisateurs ? Probablement pas. Mais l&rsquo;utilisation de PGBouncer vous aidera d\u00e8s que vous atteindrez un trafic faible\/mod\u00e9r\u00e9.<\/figure>\n<h2>La s\u00e9curit\u00e9 Postgres pour les nuls<\/h2>\n<p>Pendant les premi\u00e8res semaines o\u00f9 vous travaillez sur votre projet, il n&rsquo;y a g\u00e9n\u00e9ralement qu&rsquo;un ou deux d\u00e9veloppeurs qui travaillent sur une base de donn\u00e9es vide ; la s\u00e9curit\u00e9 n&rsquo;est pas une priorit\u00e9. Mais lorsque vous lancez votre application dans le monde entier, il va falloir y penser. Et avec les bases de donn\u00e9es, on a parfois l&rsquo;impression qu&rsquo;il y a un <a href=\"https:\/\/www.postgresql.org\/docs\/7.0\/security.htm\" target=\"_blank\" rel=\"noopener noreferrer\">million de fa\u00e7ons diff\u00e9rentes de verrouiller les choses<\/a>.<\/p>\n<h3>Restreindre l&rsquo;acc\u00e8s au niveau de l&rsquo;h\u00f4te ou de l&rsquo;utilisateur<\/h3>\n<p>Commen\u00e7ons par l&rsquo;acc\u00e8s. Postgres restreint l&rsquo;acc\u00e8s de deux mani\u00e8res :<\/p>\n<ol start=\"1\">\n<li>Au niveau de l&rsquo;<strong>h\u00f4te<\/strong> &#8211; en d\u00e9finissant des adresses IP et des domaines avec des droits d&rsquo;acc\u00e8s<\/li>\n<li>Au niveau de l&rsquo;<strong>utilisateur<\/strong> &#8211; en d\u00e9finissant les utilisateurs de la base de donn\u00e9es et leurs autorisations<\/li>\n<\/ol>\n<p>Le <a href=\"https:\/\/www.postgresql.org\/docs\/current\/auth-pg-hba-conf.html\" target=\"_blank\" rel=\"noopener noreferrer\">fichier <strong>pg_hba.conf<\/strong><\/a> dans le r\u00e9pertoire PGDATA est l&rsquo;endroit o\u00f9 vous d\u00e9finissez qui peut se connecter \u00e0 quelles bases de donn\u00e9es. Si vous n&rsquo;avez pas d&rsquo;entr\u00e9e pour un client dans ce fichier, il ne pourra pas acc\u00e9der \u00e0 la base de donn\u00e9es. En supposant que votre serveur d&rsquo;application tourne ailleurs, voici comment vous pourriez l&rsquo;autoriser \u00e0 acc\u00e9der \u00e0 la base de donn\u00e9es :<\/p>\n<pre><code class=\"language-bash\"># Trust any connection via TCP\/IP from this machine\nhost all 127.0.0.1 255.255.255.255 trust<\/code><\/pre>\n<p>En dehors du simple fait de \u00ab faire confiance \u00e0 toutes les connexions \u00e0 partir de cette machine \u00bb, il existe des tonnes de fa\u00e7ons diff\u00e9rentes d&rsquo;<a href=\"https:\/\/www.postgresql.org\/docs\/current\/client-authentication.html\" target=\"_blank\" rel=\"noopener noreferrer\">authentifier votre client aupr\u00e8s du serveur de base de donn\u00e9es<\/a>, du mot de passe \u00e0 l&rsquo;identifiant en passant par les certificats. Et si vous avez renonc\u00e9 au confort de RDS (ou de Kinsta) et que vous ex\u00e9cutez votre backend sur le m\u00eame serveur que votre base de donn\u00e9es, vous pouvez <a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-connection.html\" target=\"_blank\" rel=\"noopener noreferrer\">vous connecter via des sockets Unix<\/a> au lieu de TCP\/IP.<\/p>\n<h3>Autorisation et privil\u00e8ges<\/h3>\n<p>Une fois que votre client est authentifi\u00e9, vous devez vous occuper de la question de l&rsquo;autorisation. La norme SQL d\u00e9finit un syst\u00e8me de privil\u00e8ges, et chaque objet de Postgres (comme une table, une ligne, etc.) est associ\u00e9 \u00e0 diff\u00e9rents privil\u00e8ges qui peuvent \u00eatre attribu\u00e9s aux utilisateurs : des choses comme <code>SELECT<\/code> et <code>UPDATE<\/code>, mais aussi <code>TRUNCATE<\/code>, <code>REFERENCES<\/code>, <code>TRIGGER<\/code>, etc. Vous attribuez des privil\u00e8ges aux utilisateurs \u00e0 l&rsquo;aide de la commande <code><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-grant.html\" target=\"_blank\" rel=\"noopener noreferrer\">GRANT<\/a><\/code> vous permet d&rsquo;attribuer des privil\u00e8ges aux utilisateurs.<\/p>\n<p>La meilleure pratique consiste \u00e0 suivre le principe du moindre privil\u00e8ge, de sorte que l&rsquo;utilisateur de la base de donn\u00e9es que vous cr\u00e9ez pour votre ou vos clients ne doit <em>pouvoir<\/em> acc\u00e9der qu&rsquo;\u00e0 ce dont il <em>a besoin<\/em>.<\/p>\n<h3>S\u00e9curit\u00e9 au niveau des lignes<\/h3>\n<p>La derni\u00e8re chose \u00e0 couvrir ici est la <strong><a href=\"https:\/\/www.postgresql.org\/docs\/current\/ddl-rowsecurity.html\" target=\"_blank\" rel=\"noopener noreferrer\">la s\u00e9curit\u00e9 au niveau des lignes<\/a><\/strong>. La s\u00e9curit\u00e9 au niveau des lignes existe du point de vue de la table (et non de l&rsquo;utilisateur) et limite les lignes auxquelles il est possible d&rsquo;acc\u00e9der, de mettre \u00e0 jour, etc. Par d\u00e9faut, la s\u00e9curit\u00e9 au niveau des lignes n&rsquo;est pas activ\u00e9e pour les tables, de sorte que votre utilisateur pourra faire ce que sa politique d&rsquo;acc\u00e8s lui dicte. Pour activer le RLS pour une table, vous devez commencer par :<\/p>\n<pre><code class=\"language-sql\">ALTER TABLE [table_name] ENABLE ROW LEVEL SECURITY<\/code><\/pre>\n<p>Puis ajoutez une politique. Supposons que vous souhaitiez restreindre l&rsquo;acc\u00e8s en lecture \u00e0 votre table <strong>lightsaber_internals <\/strong>aux personnes de confiance, qui sont d\u00e9j\u00e0 d\u00e9finies dans le groupe d&rsquo;utilisateurs <strong>jedi<\/strong>, de sorte que seul le propri\u00e9taire d&rsquo;un sabre laser puisse en voir les d\u00e9tails internes. Voici comment proc\u00e9der :<\/p>\n<pre><code class=\"language-sql\">ALTER TABLE lightsaber_internals ENABLE ROW LEVEL SECURITY\nCREATE POLICY jedi_only ON lightsaber_internals TO jedi\n    USING (jedi = lightsaber_jedi);<\/code><\/pre>\n<p>Les politiques RLS de ce type sont utiles lorsque vous avez besoin d&rsquo;une s\u00e9curit\u00e9 \u00e0 un niveau plus granulaire que les seules tables (situations avec des informations confidentielles, etc.).<\/p>\n<h2>Pensez \u00e0 l&rsquo;avance aux probl\u00e8mes de mise \u00e0 l&rsquo;\u00e9chelle<\/h2>\n<p>Dans toutes les startups o\u00f9 j&rsquo;ai travaill\u00e9, il y a eu un certain degr\u00e9 de mise \u00e0 l&rsquo;\u00e9chelle manuelle en ce qui concerne la base de donn\u00e9es. Un jour, vous vous r\u00e9veillez et Datadog s&rsquo;affole parce que votre serveur Postgres est compl\u00e8tement \u00e0 court d&rsquo;espace. Vous enqu\u00eaterez, mettrez \u00e0 jour la page des incidents et augmenterez \u00e9ventuellement la taille du disque jusqu&rsquo;\u00e0 ce que cela se reproduise (bien que la prochaine fois, il s&rsquo;agira peut-\u00eatre d&rsquo;un probl\u00e8me de RAM). Il peut \u00eatre utile de prendre de l&rsquo;avance sur ces probl\u00e8mes ! Voici quelques suggestions :<\/p>\n<h3>1. Mettez en place une surveillance de la base de donn\u00e9es<\/h3>\n<p>La plupart des entreprises dans lesquelles j&rsquo;ai travaill\u00e9 utilisent <a href=\"https:\/\/www.datadoghq.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Datadog<\/a> pour la surveillance de leur base de donn\u00e9es. Si vous utilisez un service de base de donn\u00e9es g\u00e9r\u00e9, vous pouvez probablement vous d\u00e9brouiller un peu en utilisant leurs outils natifs. Datadog a <a href=\"https:\/\/www.datadoghq.com\/blog\/postgresql-monitoring\/\" target=\"_blank\" rel=\"noopener noreferrer\">publi\u00e9 un bon article sur son blog<\/a> couvrant les principales mesures que vous devriez surveiller, comme le d\u00e9bit de lecture et d&rsquo;\u00e9criture, les balayages s\u00e9quentiels, les donn\u00e9es \u00e9crites sur le disque, etc.<\/p>\n<h3>2. \u00c9laborez des lignes directrices pour la mise \u00e0 l&rsquo;\u00e9chelle verticale<\/h3>\n<p>Lorsque votre \u00e9quipe est bip\u00e9e &#8211; et cela arrivera &#8211; la derni\u00e8re chose que vous souhaitez, c&rsquo;est que tout le monde doive mettre la main \u00e0 la p\u00e2te pour r\u00e9soudre le probl\u00e8me, alors que dans la plupart des cas, une simple mise \u00e0 l&rsquo;\u00e9chelle r\u00e9sout le probl\u00e8me. Il est bon d&rsquo;\u00e9laborer un plan de base pour votre \u00e9quipe sur ce qui est possible lorsque vous manquez d&rsquo;espace ou de ressources informatiques.<\/p>\n<h3>3. Aspirez et r\u00e9glez votre Autovacuum<\/h3>\n<p>Lorsque vous <code>DELETE<\/code> des donn\u00e9es dans Postgres ou <code>UPDATE<\/code> des donn\u00e9es (ce qui est fonctionnellement \u00e9quivalent \u00e0 la suppression et l&rsquo;insertion), Postgres <a href=\"https:\/\/www.2ndquadrant.com\/en\/blog\/autovacuum-tuning-basics\/\" target=\"_blank\" rel=\"noopener noreferrer\">ne supprime pas r\u00e9ellement ces donn\u00e9es<\/a> imm\u00e9diatement (\ud83d\ude31). Au lieu de cela, elles sont \u00ab marqu\u00e9es \u00bb comme supprim\u00e9es en stockant l&rsquo;ID de transaction de la suppression dans un en-t\u00eate <strong>xmax<\/strong>; la raison en est que cela rend le MVCC dans Postgres plus simple. Mais si ces lignes ne sont pas <em>r\u00e9ellement<\/em> supprim\u00e9es \u00e0 terme, elles commenceront \u00e0 gaspiller de l&rsquo;espace disque et \u00e0 vous poser des probl\u00e8mes.<\/p>\n<p>La fa\u00e7on la plus simple de se d\u00e9barrasser de ces lignes est d&rsquo;utiliser la commande <code><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-vacuum.html\" target=\"_blank\" rel=\"noopener noreferrer\">VACUUM<\/a><\/code> pour se d\u00e9barrasser de ces lignes. Vous pouvez lancer un vacuum manuellement lorsque des lignes mortes s&rsquo;accumulent ou m\u00eame simplement le configurer pour qu&rsquo;il s&rsquo;ex\u00e9cute toutes les x minutes, mais une meilleure strat\u00e9gie consiste \u00e0 faire un autovacuum en fonction du nombre de lignes mortes accumul\u00e9es. Le r\u00e9glage de votre autovacuum est un sujet nuanc\u00e9 qui d\u00e9passe le cadre de cet article : Je vous recommande vivement de lire l&rsquo;<a href=\"https:\/\/www.2ndquadrant.com\/en\/blog\/autovacuum-tuning-basics\/\" target=\"_blank\" rel=\"noopener noreferrer\">article<\/a> de 2ndQuadrant \u00e0 ce sujet.<\/p>\n<h3>4. Mettez en place une r\u00e9plique de lecture (ou deux)<\/h3>\n<p>Celle-ci est facile \u00e0 mettre en place. Si vous anticipez une augmentation significative du trafic (un lancement \u00e0 venir, etc.), vous pouvez facilement cr\u00e9er des r\u00e9pliques en lecture seule (ou au moins une) ; elles vous aideront \u00e0 d\u00e9charger l&rsquo;instance principale de la base de donn\u00e9es.<\/p>\n<p>Si vous optez pour plusieurs r\u00e9pliques, vous aurez l&rsquo;avantage suppl\u00e9mentaire d&rsquo;am\u00e9liorer la disponibilit\u00e9 si l&rsquo;une d&rsquo;entre elles tombe en panne pour une raison quelconque. L&rsquo;ajout de r\u00e9pliques est assez simple chez la plupart des fournisseurs de DBaaS ; surveillez simplement le co\u00fbt : elles sont souvent factur\u00e9es au m\u00eame niveau qu&rsquo;une instance de base de donn\u00e9es principale, bien qu&rsquo;elles soient en lecture seule.<\/p>\n<h2>Ajoutez des index \u00e0 vos tables anticip\u00e9es comme les plus volumineuses<\/h2>\n<p>Les index de base de donn\u00e9es permettent d&rsquo;acc\u00e9l\u00e9rer les requ\u00eates en lecture en cr\u00e9ant des structures de donn\u00e9es auxiliaires qui acc\u00e9l\u00e8rent vos analyses. Pour de nombreux cas d&rsquo;utilisation, l&rsquo;ajout d&rsquo;un index \u00e0 une ou deux tables est une \u00e9vidence. Dans Postgres, vous pouvez cr\u00e9er un index avec la commande <code><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-createindex.html\" target=\"_blank\" rel=\"noopener noreferrer\">CREATE INDEX<\/a><\/code> (duh). Lorsque vous interrogez une table, la base de donn\u00e9es v\u00e9rifie si un index existe et l&rsquo;utilise si c&rsquo;est le cas (vous pouvez v\u00e9rifier que c&rsquo;est bien le cas avec la commande <code><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-explain.html\" target=\"_blank\" rel=\"noopener noreferrer\">EXPLAIN<\/a><\/code> pour v\u00e9rifier que c&rsquo;est bien le cas).<\/p>\n<p>Le type d&rsquo;index le plus populaire dans Postgres &#8211; et celui par d\u00e9faut lorsque vous utilisez <code>CREATE INDEX<\/code> &#8211; est un <strong>index B-Tree<\/strong>. Essentiellement, il prend la colonne sur laquelle vous voulez cr\u00e9er un index, la trie et stocke des pointeurs vers les lignes tri\u00e9es. De cette mani\u00e8re, vous pouvez obtenir une efficacit\u00e9 de recherche binaire sur n&rsquo;importe quelle colonne, et pas seulement sur la colonne sur laquelle la table est tri\u00e9e (s&rsquo;il y en a une). Vous pouvez lire plus en d\u00e9tail comment ces arbres sont impl\u00e9ment\u00e9s dans la documentation de Postgres <a href=\"https:\/\/www.postgresql.org\/docs\/current\/btree-implementation.html\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>.<\/p>\n<p>Bien qu&rsquo;utiles, les index ne sont pas une partie de plaisir ; ils prennent de la place et si vous ne faites pas attention au nombre et au type d&rsquo;index que vous cr\u00e9ez, ils peuvent commencer \u00e0 d\u00e9grader les performances de la base de donn\u00e9es. Personne ne le dit mieux que la <a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-createindex.html\" target=\"_blank\" rel=\"noopener noreferrer\">documentation Postgres<\/a> elle-m\u00eame :<\/p>\n<p><em>\u00ab Les index sont principalement utilis\u00e9s pour am\u00e9liorer les performances de la base de donn\u00e9es (bien qu&rsquo;une utilisation inappropri\u00e9e puisse entra\u00eener un ralentissement des performances) \u00bb<br \/>\n<\/em><br \/>\nSous le capot, lorsque vous cr\u00e9ez un index, Postgres mat\u00e9rialise une table de consultation contenant l&rsquo;index et un pointeur vers l&rsquo;enregistrement de l&rsquo;index. Un trop grand nombre de ces tables consomme de l&rsquo;espace disque, rend les requ\u00eates INSERT plus longues et oblige le moteur de requ\u00eates \u00e0 consid\u00e9rer plus d&rsquo;options avant de choisir comment ex\u00e9cuter une requ\u00eate.<\/p>\n<h2>Bonus : Ajoutez quelques extensions Postgres<\/h2>\n<p>L&rsquo;une des particularit\u00e9s de Postgres est la <a href=\"https:\/\/www.postgresql.org\/docs\/15\/external-extensions.html\" target=\"_blank\" rel=\"noopener noreferrer\">prise en charge native<\/a> des extensions propos\u00e9es par des tiers. Vous pouvez les cr\u00e9er \u00e0 partir de SQL et de C, et elles peuvent \u00eatre aussi petites que quelques instructions ou aussi grandes qu&rsquo;une biblioth\u00e8que logicielle compl\u00e8te. L&rsquo;utilisation d&rsquo;<a href=\"https:\/\/gist.github.com\/joelonsql\/e5aa27f8cc9bd22b8999b7de8aee9d47#file-postgresql-extensions-md\" target=\"_blank\" rel=\"noopener noreferrer\">extensions disponibles publiquement\/open source<\/a> vous aide de la m\u00eame mani\u00e8re que l&rsquo;utilisation d&rsquo;un progiciel ; pourquoi \u00e9crire votre propre code quand vous pouvez utiliser celui de quelqu&rsquo;un d&rsquo;autre ? Voici quelques-unes des extensions Postgres les plus populaires :<\/p>\n<h3>Timescale<\/h3>\n<p><a href=\"https:\/\/www.timescale.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Timescale<\/a> est une extension Postgres qui permet de travailler avec des donn\u00e9es de s\u00e9ries temporelles. En bref, elle rend vos requ\u00eates (beaucoup) plus rapides et stocke les donn\u00e9es de s\u00e9ries temporelles de mani\u00e8re tr\u00e8s efficace. Vous pouvez trouver les instructions d&rsquo;installation <a href=\"https:\/\/docs.timescale.com\/self-hosted\/latest\/install\/\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>, ou consid\u00e9rer l&rsquo;option h\u00e9berg\u00e9e dans le cloud de Timescale si votre activit\u00e9 repose vraiment sur des donn\u00e9es de s\u00e9ries temporelles (bien que vous en soyez probablement d\u00e9j\u00e0 conscient si c&rsquo;est le cas).<\/p>\n<h3>PostGIS<\/h3>\n<p><a href=\"https:\/\/postgis.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">PostGIS<\/a> ajoute un support de Postgres pour le stockage, l&rsquo;indexation et l&rsquo;interrogation de donn\u00e9es g\u00e9ographiques (lignes, polygones, lieux, etc.). Si vous utilisez un fournisseur de services en ligne, la plupart d&rsquo;entre eux pr\u00e9installent PostGIS. Mais si vous devez l&rsquo;installer vous-m\u00eame, vous trouverez des instructions d&rsquo;installation <a href=\"https:\/\/postgis.net\/documentation\/getting_started\/\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>.<\/p>\n<h3>pg_stat_staements<\/h3>\n<p><a href=\"https:\/\/www.postgresql.org\/docs\/current\/pgstatstatements.html\" target=\"_blank\" rel=\"noopener noreferrer\">pg_stat_statements<\/a> cr\u00e9e une vue dans votre base de donn\u00e9es Postgres avec des statistiques sur chaque requ\u00eate ex\u00e9cut\u00e9e sur la base de donn\u00e9es. Vous pouvez voir des statistiques comme la dur\u00e9e d&rsquo;ex\u00e9cution de la requ\u00eate (moyenne, m\u00e9diane, moyenne, etc.), qui a ex\u00e9cut\u00e9 la requ\u00eate, les acc\u00e8s au cache des blocs, le nombre de blocs \u00e9crits, et bien plus encore (44 colonnes au total dans cette vue). <a href=\"https:\/\/gist.github.com\/rcanepa\/535163dc249539912c25\" target=\"_blank\" rel=\"noopener noreferrer\">Pour l&rsquo;installer<\/a>, il suffit de l&rsquo;ajouter \u00e0 votre fichier .conf et de red\u00e9marrer le serveur.<\/p>\n<h3>pg_audit<\/h3>\n<p><a href=\"https:\/\/www.pgaudit.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">pg_audit<\/a> est utile aux entreprises susceptibles d&rsquo;\u00eatre soumises \u00e0 des audits d\u00e9taill\u00e9s (par exemple, gouvernementaux, financiers, etc.). Vous pouvez faire en sorte que Postgres enregistre toutes les requ\u00eates effectu\u00e9es sur la base de donn\u00e9es en configurant `log_statement=all`, mais cela ne signifie pas que l&rsquo;information dont vous avez besoin sera facile \u00e0 rechercher et \u00e0 trouver. pg_audit utilise les fonctions d&rsquo;enregistrement internes de Postgres pour faciliter la recherche et le travail avec les enregistrements dont un auditeur pourrait avoir besoin. Vous pouvez trouver les instructions d&rsquo;installation <a href=\"https:\/\/github.com\/pgaudit\/pgaudit\" target=\"_blank\" rel=\"noopener noreferrer\">ici<\/a>.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Postgres est une option formidable (et <a href=\"https:\/\/clearbit.com\/resources\/books\/data-driven-marketing\/b2b-seo-content-that-ranks\" target=\"_blank\" rel=\"noopener noreferrer\">tr\u00e8s populaire<\/a>) sur laquelle vous pouvez construire votre entreprise et que nous sommes fiers de soutenir chez Kinsta. Nous esp\u00e9rons que ces conseils vous aideront \u00e0 d\u00e9marrer et \u00e0 vous pr\u00e9parer \u00e0 l&rsquo;expansion. D&rsquo;autres conseils ou r\u00e9flexions issus de votre exp\u00e9rience ? Faites-nous en part ici.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous d\u00e9marrez un nouveau projet &#8211; ou une nouvelle entreprise &#8211; et vous avez d\u00e9cid\u00e9 d&rsquo;utiliser Postgres. La partie la plus difficile (choisir votre base de &#8230;<\/p>\n","protected":false},"author":310,"featured_media":75076,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1002],"class_list":["post-75075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Le manuel du directeur technique d&#039;une startup pour utiliser Postgres - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu&#039;aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Le manuel du directeur technique d&#039;une startup sur Postgres\" \/>\n<meta property=\"og:description\" content=\"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu&#039;aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-14T12:13:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-15T11:37:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Justin Gage\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu&#039;aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Justin Gage\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\"},\"author\":{\"name\":\"Justin Gage\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f\"},\"headline\":\"Le manuel du directeur technique d&rsquo;une startup sur Postgres\",\"datePublished\":\"2023-12-14T12:13:25+00:00\",\"dateModified\":\"2023-12-15T11:37:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\"},\"wordCount\":2764,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\",\"name\":\"Le manuel du directeur technique d'une startup pour utiliser Postgres - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\",\"datePublished\":\"2023-12-14T12:13:25+00:00\",\"dateModified\":\"2023-12-15T11:37:22+00:00\",\"description\":\"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu'aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/postgresql\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Le manuel du directeur technique d&rsquo;une startup sur Postgres\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f\",\"name\":\"Justin Gage\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g\",\"caption\":\"Justin Gage\"},\"description\":\"Justin is a technical writer and author of the popular Technically newsletter. He did his B.S. in Data Science before a stint in full-stack engineering and now focuses on making complex technical concepts accessible to everyone.\",\"sameAs\":[\"https:\/\/technically.substack.com\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/justingage\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Le manuel du directeur technique d'une startup pour utiliser Postgres - Kinsta\u00ae","description":"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu'aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/","og_locale":"fr_FR","og_type":"article","og_title":"Le manuel du directeur technique d'une startup sur Postgres","og_description":"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu'aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.","og_url":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-12-14T12:13:25+00:00","article_modified_time":"2023-12-15T11:37:22+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","type":"image\/jpeg"}],"author":"Justin Gage","twitter_card":"summary_large_image","twitter_description":"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu'aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Justin Gage","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/"},"author":{"name":"Justin Gage","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f"},"headline":"Le manuel du directeur technique d&rsquo;une startup sur Postgres","datePublished":"2023-12-14T12:13:25+00:00","dateModified":"2023-12-15T11:37:22+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/"},"wordCount":2764,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/","url":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/","name":"Le manuel du directeur technique d'une startup pour utiliser Postgres - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","datePublished":"2023-12-14T12:13:25+00:00","dateModified":"2023-12-15T11:37:22+00:00","description":"Apprenez quelques astuces moins connues pour configurer Postgres \u00e0 long terme, depuis la mise en commun des connexions jusqu'aux bases de la s\u00e9curit\u00e9, en passant par les extensions et les indices.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/the-startup-ctos-handbook-to-running-on-postgres.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/manuel-cto-startup-postgres\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL","item":"https:\/\/kinsta.com\/fr\/sujets\/postgresql\/"},{"@type":"ListItem","position":3,"name":"Le manuel du directeur technique d&rsquo;une startup sur Postgres"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/9c79ef0f55180723ff2b31baffe9070f","name":"Justin Gage","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/204874e8a52203e297ea240336c356ba?s=96&d=mm&r=g","caption":"Justin Gage"},"description":"Justin is a technical writer and author of the popular Technically newsletter. He did his B.S. in Data Science before a stint in full-stack engineering and now focuses on making complex technical concepts accessible to everyone.","sameAs":["https:\/\/technically.substack.com\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/justingage\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/310"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=75075"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75075\/revisions"}],"predecessor-version":[{"id":75093,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/75075\/revisions\/75093"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/75075\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/75076"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=75075"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=75075"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=75075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}