{"id":1366,"date":"2016-10-27T10:49:26","date_gmt":"2016-10-27T08:49:26","guid":{"rendered":"https:\/\/blog.alwaysdata.com\/?p=1366"},"modified":"2018-02-01T16:27:39","modified_gmt":"2018-02-01T15:27:39","slug":"a-la-decouverte-de-notre-nouveau-reverse-proxy-alproxy-5","status":"publish","type":"post","link":"https:\/\/blog.alwaysdata.com\/fr\/2016\/10\/27\/a-la-decouverte-de-notre-nouveau-reverse-proxy-alproxy-5\/","title":{"rendered":"\u00c0 la d\u00e9couverte de notre nouveau reverse-proxy&nbsp;: alproxy 5"},"content":{"rendered":"<p>Cette ann\u00e9e, nous avons d\u00e9ploy\u00e9 notre nouvelle charte graphique, lanc\u00e9 l\u2019offre VPS, ouvert notre nouvelle infrastructure physique (100% SSD) \u00e0&nbsp;tous et commenc\u00e9 \u00e0&nbsp;mettre \u00e0&nbsp;jour les versions de nos bases de donn\u00e9es.<\/p>\n<p>Aujourd\u2019hui, nous annon\u00e7ons le d\u00e9ploiement de la nouvelle version de notre reverse-proxy <em>alproxy<\/em> qui s\u2019est termin\u00e9 en d\u00e9but de semaine sur tous nos serveurs. Cette mise \u00e0&nbsp;jour marque une nouvelle \u00e9tape vers la modernisation de nos services, et pour savoir ce qui change, suivez le&nbsp;guide&nbsp;!<\/p>\n<h1>Reverse pro \u2013&nbsp;quoi&nbsp;?<\/h1>\n<p>G\u00e9n\u00e9ralement, un seul programme a&nbsp;la t\u00e2che de g\u00e9rer tout le trafic HTTP d\u2019un serveur. Les services d\u2019alwaysdata fonctionnent un peu diff\u00e9remment&nbsp;: chaque compte a&nbsp;son propre d\u00e9mon HTTP (Apache) qui sert ses pages web. Cette sp\u00e9cificit\u00e9 donne plus de contr\u00f4le \u00e0&nbsp;nos utilisateurs&nbsp;: par exemple, ils peuvent choisir la version de PHP qu\u2019ils souhaitent utiliser, ou charger des modules Apache personnalis\u00e9s.<\/p>\n<p>Non seulement cette strat\u00e9gie offre plus de flexibilit\u00e9 (comme la possibilit\u00e9 de s\u2019interfacer avec son vieux serveur d\u2019entreprise sous Windows, de quoi faire peur aux plus jeunes), mais elle nous permet aussi de mieux isoler les comptes qui se partagent un m\u00eame serveur.<\/p>\n<p><a href=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema1_fr.png\" rel=\"attachment wp-att-1368\"><img decoding=\"async\" class=\"alignnone wp-image-1368\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema1_fr.png\" alt=\"alproxy5-schema1\" width=\"840\" height=\"380\"><\/a><\/p>\n<p>C\u2019est pour g\u00e9rer cette sp\u00e9cificit\u00e9 de notre architecture technique que nous avons eu besoin d\u2019alproxy&nbsp;: alproxy re\u00e7oit une requ\u00eate HTTP \u00e9mise par un visiteur, regarde le site destinataire, et dirige cette requ\u00eate au d\u00e9mon HTTP charg\u00e9 de servir le site. alproxy est un peu le gardien qui distribue le courrier dans l\u2019immeuble.<\/p>\n<p><a href=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema2_fr.png\" rel=\"attachment wp-att-1429\"><img decoding=\"async\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema2_fr.png\" alt=\"schema2_fr\" style=\"width: 100%\" class=\"alignnone size-medium wp-image-1429\"><\/a><\/p>\n<p>Mais alproxy ne fait pas que router les requ\u00eates et r\u00e9ponses. Il a&nbsp;aussi et surtout pour responsabilit\u00e9 de veiller \u00e0&nbsp;la bonne sant\u00e9 du d\u00e9mon HTTP de chaque compte&nbsp;: il le d\u00e9marre s\u2019il est \u00e9teint, l\u2019arr\u00eate quand il est inactif depuis longtemps (pour \u00e9conomiser la m\u00e9moire vive du serveur) et le relance quand sa configuration a&nbsp;chang\u00e9 ou qu\u2019il a&nbsp;plant\u00e9.<\/p>\n<p>Enfin, alproxy s\u2019occupe de la couche de chiffrement du trafic HTTPS, le tout dynamiquement&nbsp;: son comportement est pilot\u00e9 depuis l\u2019interface d\u2019administration d\u2019alwaysdata, plut\u00f4t que d\u00e9crit dans des fichiers de configuration.<br>\n<a href=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema3_fr.png\" rel=\"attachment wp-att-1429\"><img decoding=\"async\" width=\"897\" height=\"578\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema3_fr.png\" alt=\"schema3_fr\" style=\"width: 100%\" class=\"alignnone size-medium wp-image-1429\" srcset=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema3_fr.png 897w, https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema3_fr-300x193.png 300w, https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2016\/10\/schema3_fr-768x495.png 768w\" sizes=\"(max-width: 897px) 100vw, 897px\"><\/a><\/p>\n<h1>Les nouveaut\u00e9s d\u2019alproxy<\/h1>\n<p>alproxy est un composant central de notre pile technique, cette nouvelle version apporte logiquement des am\u00e9liorations sur de nombreux aspects.<\/p>\n<h2>HTTPS mieux s\u00e9curis\u00e9 que jamais et plus besoin d\u2019une IP d\u00e9di\u00e9e<\/h2>\n<p>Pour nos utilisateurs, cette mise \u00e0&nbsp;jour signifie des am\u00e9liorations imm\u00e9diatement disponibles, notamment du c\u00f4t\u00e9 de HTTPS. Le trafic s\u00e9curis\u00e9 est maintenant servi dans le respect des recommandations les plus modernes (note A&nbsp;sur SSLabs par d\u00e9faut) : TLS 1.2, confidentialit\u00e9 accrue (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Confidentialit%C3%A9_persistante\" target=\"_blank\"><em>forward secrecy<\/em><\/a>). Encore plus pratique&nbsp;: gr\u00e2ce au <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Server_Name_Indication\" target=\"_blank\">SNI<\/a> il n\u2019est plus n\u00e9cessaire de louer une IP d\u00e9di\u00e9e pour param\u00e9trer son certificat SSL&nbsp;!<\/p>\n<p>Nous travaillons activement \u00e0&nbsp;la g\u00e9n\u00e9ration automatis\u00e9e de certificats gratuits <a href=\"https:\/\/letsencrypt.org\/\" target=\"_blank\">Let\u2019s Encrypt<\/a>&nbsp;: bient\u00f4t, vous pourrez activer HTTPS automatiquement pour tous vos sites (et tous vos domaines). Nous ajouterons bient\u00f4t le support d\u2019OCSP et la gestion des sessions TLS, qui offrent quelques am\u00e9liorations c\u00f4t\u00e9 performances.<\/p>\n<h2>Plus de robustesse, c\u2019est toute une classe de probl\u00e8mes potentiels qui disparait<\/h2>\n<p>La nouvelle architecture d\u2019alproxy est plus robuste. Cela signifie que toute une classe de probl\u00e8mes est automatiquement d\u00e9tect\u00e9e et corrig\u00e9e, mais aussi qu\u2019alproxy r\u00e9agit mieux en cas de surcharge (lors de DDoS par exemple).<\/p>\n<h2>Utilisez Apache, Nginx, Node.js ou le serveur HTTP de votre choix\u2026 ou tout \u00e7a en m\u00eame&nbsp;temps<\/h2>\n<p>Tr\u00e8s prochainement, nous allons permettre \u00e0&nbsp;tous nos utilisateurs de configurer encore plus finement leurs services, et de choisir les d\u00e9mons HTTP qu\u2019ils souhaiteront utiliser pour leurs sites. Cela signifie qu\u2019il sera possible de remplacer Apache par Nginx, Node.js, ou m\u00eame d\u2019utiliser les trois en m\u00eame temps sur un m\u00eame compte&nbsp;!<\/p>\n<p>Les plus t\u00e9m\u00e9raires pourront tester le serveur HTTP exotique de leur choix et laisser alproxy nettoyer en cas d\u2019accident.<\/p>\n<h2>Les WebSockets sont disponibles<\/h2>\n<p>Naturellement, il serait frustrant de pouvoir utiliser un serveur HTTP moderne sans profiter de fonctionnalit\u00e9s modernes, c\u2019est pourquoi nous avons ajout\u00e9 le support de <a href=\"https:\/\/fr.wikipedia.org\/wiki\/WebSocket\" target=\"_blank\">WebSocket<\/a> dans alproxy.<\/p>\n<h2>D\u2019autres \u00e9volutions \u00e0&nbsp;venir<\/h2>\n<p>Il est encore t\u00f4t pour parler de HTTP\/2 (un gros chantier pour nous), mais pour patienter, nous avons tout de m\u00eame pr\u00e9vu de nombreuses fonctionnalit\u00e9s dans les mois \u00e0&nbsp;venir. Dans la liste, il y&nbsp;a notamment un <em>firewall applicatif<\/em> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Application_firewall\" target=\"_blank\">WAF<\/a>) qui bloque les requ\u00eates malveillantes&nbsp;(g\u00e9n\u00e9ralement efficace contre les bots qui exploitent des failles dans des logiciels comme WordPress) et un cache HTTP, qui permet d\u2019acc\u00e9l\u00e9rer le rendu de votre site et de construire un <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Content_delivery_network\" target=\"_blank\">CDN<\/a>.<\/p>\n<h1>Sous le&nbsp;capot<\/h1>\n<p>Pour finir cette pr\u00e9sentation d\u2019alproxy, parlons un peu technique.<\/p>\n<p>Le d\u00e9veloppement d\u2019alproxy a&nbsp;\u00e9t\u00e9 l\u2019occasion pour nous de relever de nombreux challenges. Il est d\u00e9velopp\u00e9 en <a href=\"https:\/\/www.python.org\/\" target=\"_blank\">Python<\/a> et repose essentiellement sur <a href=\"https:\/\/www.python.org\/dev\/peps\/pep-3156\/\" target=\"_blank\">asyncio<\/a>.&nbsp;Il tire partie de nombreuses nouvelles fonctionnalit\u00e9s de Python (version 3.5) : autant dire que nous avons essuy\u00e9 quelques pl\u00e2tres (la peinture est <a href=\"https:\/\/github.com\/python\/asyncio\/pull\/428\" target=\"_blank\">encore un peu fra\u00eeche parfois<\/a>). Nous en avons profit\u00e9 pour d\u00e9velopper <a href=\"https:\/\/github.com\/Martiusweb\/asynctest\" target=\"_blank\">asynctest<\/a>, que nous avons choisi de rendre disponible en open-source. Nous esp\u00e9rons avoir l\u2019occasion de publier quelques articles techniques pour vous en parler plus longuement. Ce sera aussi l\u2019occasion de d\u00e9crire comment nous avons r\u00e9ussi \u00e0&nbsp;g\u00e9rer la n\u00e9gociation TLS avec du code asynchrone.<\/p>\n<h1>Vers un service toujours plus&nbsp;riche<\/h1>\n<p>Nous continuons notre route vers une nouvelle plateforme toujours plus riche&nbsp;: alwaysdata va bient\u00f4t lancer son nouvel environnement de production, qui inclura notamment des versions \u00e0&nbsp;jour de PHP, Ruby et Python, et la simplification de la gestion des d\u00e9pendances (composer, pip, gem ou npm fonctionneront nativement).<\/p>\n<p>Les comptes existants b\u00e9n\u00e9ficieront de toutes ces nouveaut\u00e9s progressivement&nbsp;: le temps de nous assurer que la migration vers ce nouvel environnement ne perturbera pas le bon fonctionnement de vos sites en production.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cette ann\u00e9e, nous avons d\u00e9ploy\u00e9 notre nouvelle charte graphique, lanc\u00e9 l\u2019offre VPS, ouvert notre nouvelle infrastructure physique (100% SSD) \u00e0&nbsp;tous et commenc\u00e9 \u00e0&nbsp;mettre \u00e0&nbsp;jour les \u2026 <a class=\"read-more\" href=\"https:\/\/blog.alwaysdata.com\/fr\/2016\/10\/27\/a-la-decouverte-de-notre-nouveau-reverse-proxy-alproxy-5\/\">Keep reading<\/a><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[1],"tags":[157],"class_list":["post-1366","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-architecture-fr"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/comments?post=1366"}],"version-history":[{"count":0,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1366\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media?parent=1366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/categories?post=1366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/tags?post=1366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}