Written by

On vous a gâtés avec de nom­breuses nou­veau­tés ces der­nières semaines, mais je soup­çonne que l’an­nonce du jour risque de rem­por­ter tous les suf­frages… Depuis quelques jours, les nou­veaux comptes mutua­li­sés, VPS et ser­veurs dédiés tournent sur notre toute nou­velle infra­struc­ture logi­cielle. Qu’apporte-t-elle ? Ouvrons le capot.

Des versions (beaucoup) plus récentes

Notre nou­velle infra­struc­ture tourne sous la der­nière ver­sion de Debian (Jessie), ce qui apporte une mise à jour de l’en­semble des logi­ciels et biblio­thèques dis­po­nibles, de git ou Vim à Apache ou Java. Des logi­ciels et lan­gages ont éga­le­ment été ajou­tés, comme Go ou R.

Mais le cœur du chan­ge­ment se situe du côté de Python et Ruby : nous avons fait évo­luer notre ges­tion des paquets pour ne plus dépendre des ver­sions pro­po­sées par Debian, ce qui nous per­met d’offrir :

  • pour Python, de la ver­sion 3.6 à 3.3 et 2.7 à 2.4 ;
  • pour Ruby, de la ver­sion 2.4 à 1.8.7 ;
  • pour PHP, rien ne change : nous pro­po­sions déjà la der­nière ver­sion (7.1), et nous gar­dons en prime toutes les ver­sions depuis la 5.2, et même la 4.4 pour les (légers) retardataires.

Une installation de paquets simplifiée

Que ce soit pour Python ou Ruby, l’ins­tal­la­tion de paquets (via pip ou gem) deman­dait quelques efforts, minimes mais par­fois dérou­tants pour les plus débu­tants. Il fal­lait ici spé­ci­fier une option, là défi­nir une variable d’en­vi­ron­ne­ment, ou encore créer un fichier (.bash_profile) pour que les nou­velles com­mandes puissent être exé­cu­tées directement.

Désormais, pip ins­tall et gem ins­tall fonc­tionnent direc­te­ment, sans le moindre para­mé­trage. Encore mieux : vous n’au­rez même pas besoin d’a­jou­ter un quel­conque che­min pour que vos appli­ca­tions trouvent les biblio­thèques : c’est automatique.

Nous avons aus­si pen­sé à PHP et ses exten­sions PECL : indi­quez à la com­mande ad_install_pecl (un script mai­son) le nom de l’ex­ten­sion PECL que vous sou­hai­tez ins­tal­ler, elle s’oc­cu­pe­ra de la télécharger/configurer/compiler : il ne vous res­te­ra plus qu’à char­ger le fichier .so depuis la sec­tion Environnement > PHP de l’ad­mi­nis­tra­tion alwaysdata.

Un environnement vierge

Encore une fois, cela s’ap­plique prin­ci­pa­le­ment à Python et Ruby : jus­qu’à pré­sent, cer­taines biblio­thèques étaient ins­tal­lées glo­ba­le­ment sur nos sys­tèmes, notam­ment Django et Ruby on Rails. Cela posait un cer­tain nombre de pro­blèmes à l’u­sage, aus­si nous avons déci­dé de les reti­rer. Vous démar­re­rez donc avec un envi­ron­ne­ment vierge, mais on a vu à la sec­tion pré­cé­dente qu’ins­tal­ler des biblio­thèques était désor­mais trivial.

Les sites Python et Ruby propulsés par uWSGI

Les sites de type WSGI (Python) ou Ruby Rack et Ruby on Rails étaient gérés par Apache (via mod_wsgi ou Passenger). Ils sont désor­mais gérés par uWSGI, un ser­veur d’ap­pli­ca­tions pré­sen­tant plu­sieurs avan­tages. Ce chan­ge­ment est lar­ge­ment trans­pa­rent pour nos clients, mais de nou­velles options (toutes facul­ta­tives) font leur appa­ri­tion dans le for­mu­laire de confi­gu­ra­tion d’un site :

  • for­cer une ver­sion de Python ou Ruby particulière ;
  • les variables d’en­vi­ron­ne­ment à définir ;
  • le réper­toire de travail ;
  • pour Python, le vir­tua­lenv à utiliser ;
  • pour Ruby, uti­li­ser le Gemfile de l’application.

Bientôt, de nouveaux langages

Cette nou­velle infra­struc­ture ouvre la voie au sup­port de nou­veaux lan­gages, en par­ti­cu­lier pour faire tour­ner des appli­ca­tions web. Node.js sera cer­tai­ne­ment le pre­mier, mais d’autres devraient suivre assez vite.

Comment en bénéficier ?

Dès main­te­nant, en ouvrant un nou­veau compte mutua­li­sé, VPS ou ser­veur dédié. Pour les anciens clients, il va fal­loir patien­ter encore un peu : nous pré­pa­rons la phase de migra­tion qui démar­re­ra dans les pro­chaines semaines, en même temps d’ailleurs que la migra­tion vers notre propre infra­struc­ture maté­rielle (pour les mutua­li­sés les plus anciens). Chaque client sera pré­ve­nu par email au préa­lable et aura à sa disposition :

  • une page de docu­men­ta­tion lis­tant les chan­ge­ments majeurs sus­cep­tibles de pro­vo­quer des incompatibilités ;
  • des outils per­met­tant de simu­ler par­tiel­le­ment son compte sous la nou­velle infrastructure.

Les plus témé­raires peuvent tou­te­fois deman­der par ticket une migra­tion dès main­te­nant, mais à leurs risques et périls, et sans pos­si­bi­li­té de reve­nir en arrière. Inutile de dire que si vous avez quoi que ce soit en pro­duc­tion, pas­sez votre che­min et atten­dez la migra­tion offi­cielle. Si vous cher­chez des sen­sa­tions fortes, sau­tez plu­tôt en parachute.

Et après ?

Nous avons conçu cette nou­velle infra­struc­ture pour qu’elle soit beau­coup plus souple que la pré­cé­dente, et ne plus nous retrou­ver dans une situa­tion avec des logi­ciels vieillis­sants. Bien que nous ne puis­sions pas tou­jours pro­po­ser les toutes der­nières ver­sions dès leur sor­tie, pour de nom­breuses rai­sons (manque de recul sur la sta­bi­li­té, bugs blo­quants, dépen­dances indis­po­nibles), cette nou­velle flexi­bi­li­té nous per­met­tra par exemple de réduire l’at­tente pour Python 3.7 et Ruby 2.5 à quelques jours seulement !