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’annonce 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’ensemble 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) retar­da­taires.

Une installation de paquets simplifiée

Que ce soit pour Python ou Ruby, l’installation 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’environnement, ou encore créer un fichier (.bash_profile) pour que les nou­velles com­mandes puissent être exé­cu­tées direc­te­ment.

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

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’extension PECL que vous sou­hai­tez ins­tal­ler, elle s’occupera 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’administration always­da­ta.

Un environnement vierge

Encore une fois, cela s’applique prin­ci­pa­le­ment à Python et Ruby : jusqu’à 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’usage, 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’installer des biblio­thèques était désor­mais tri­vial.

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’applications 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 par­ti­cu­lière ;
  • les variables d’environnement à défi­nir ;
  • le réper­toire de tra­vail ;
  • pour Python, le vir­tua­lenv à uti­li­ser ;
  • 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 dis­po­si­tion :

  • une page de docu­men­ta­tion lis­tant les chan­ge­ments majeurs sus­cep­tibles de pro­vo­quer des incom­pa­ti­bi­li­tés ;
  • des outils per­met­tant de simu­ler par­tiel­le­ment son compte sous la nou­velle infra­struc­ture.

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 para­chute.

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’attente pour Python 3.7 et Ruby 2.5 à quelques jours seule­ment !