Catégorie : Technique

  • [blog] Suivi des discus­sions

    Vieux sujet traîné en commun avec Karl et David (mais pas que) : Faire en sorte de décen­tra­li­ser les blogs et les discus­sions qui s’en suivent.

    L’his­toire

    Par le passé nous avions Track­back. On envoyait une noti­fi­ca­tion aux conte­nus liés, avec le lien vers notre contenu, le nom du blog, un extrait et un titre. Le codage carac­tère était globa­le­ment mal géré, les titres et extraits se sont révé­lés globa­le­ment inutiles voire contre-produc­tifs, mais c’était implé­menté un peu partout et ça, tech­nique­ment, ça fonc­tion­nait assez bien.

    Pour faire court, les gens conti­nuaient à commen­ter dans le billet d’ori­gine plutôt que de commen­ter dans un nouveau billet chez eux. Par contre les track­backs étaient très utili­sés pour le spam, avec au final un ratio signal/bruit vrai­ment mauvais et donc l’aban­don du système.

    Il y a aussi eu Ping­back. Système simi­laire mais avec une auto­dé­cou­verte plus sympa et l’ar­rêt de trans­mis­sion des titres et extraits. Vu que ces derniers n’étaient jamais person­na­li­sés spéci­fique­ment pour la noti­fi­ca­tion, autant les récu­pé­rer direc­te­ment à partir du lien si jamais on en a besoin.

    Diffé­rence, Ping­back propo­sait de véri­fier la présence d’un lien sortant dans le contenu tiers avant de vali­der une liai­son entrante. Cette diffé­rence fut peu impac­tante au finale. L’idée a aussi été implé­men­tée dans les track­back mais les spameurs ont vite appris à faire des liens sortants pour poster leur spam, quitte à faire des liens invi­sibles pour le lecteur ou des liens tempo­raires suppri­més après l’opé­ra­tion.

    Je trouve aussi l’idée discu­table dans le sens où la valeur ajou­tée du lien n’est pas la même dans les deux sens. Si je réalise analyse sur une dépêche AFP, il peut être utile d’avoir une noti­fi­ca­tion chez plusieurs personnes qui reprennent verba­tim cette dépêche, mais cela n’au­rait aucun sens d’en lier plus d’un à partir de mon analyse (ce que la véri­fi­ca­tion de ping­back impose).

    Wiki­pe­dia cite aussi Refback. Je ne l’avais jamais vu forma­lisé sous ce nom mais la pratique est connue : Explo­rer les entêtes HTTP Refer­rer pour repé­rer de nouveaux liens entrants auto­ma­tique­ment. Les spam­meurs jouaient à faus­ser ces entêtes depuis long­temps donc là aussi ça n’a pas changé grand chose.

    Tous ces systèmes ne spéci­fient que la noti­fi­ca­tion. Il s’agit de parler un langage commun au niveau de cette noti­fi­ca­tion pour que ce soit plus simple pour tout le monde. Il reste à l’édi­teur du site lié de choi­sir ce qu’il fait de la noti­fi­ca­tion : L’af­fi­cher auto­ma­tique­ment avec une modé­ra­tion a poste­riori, gérer une liste blanche, mettre un système anti-spam auto­ma­tisé, ou même faire une vali­da­tion manuelle a priori.

    Il y a aussi Salmon, très orienté commen­taire, mais extrê­me­ment complexe et quasi­ment pas implé­menté (les deux sont certai­ne­ment liés). J’ai du mal à voir ce proto­cole réel­le­ment implé­menté partout.

    Webmen­tion

    Aujourd’­hui on parle de Webmen­tion. Même séman­tique que Ping­back, même méca­nismes d’au­to­dé­cou­vertes (seule la valeur de « rel » change), même requête initiale et mêmes para­mètres (seuls les noms des para­mètres changent légè­re­ment pour reti­rer les trois derniers carac­tères).

    Les diffé­rences tiennent exclu­si­ve­ment dans la préci­sion de la méthode HTTP à utili­ser (POST) et dans les codes de retours (Webmen­tion utilise les codes HTTP stan­dards et un lien vers la mention créée, là où Ping­back renvoie une code de retour dans le corps de la réponse).

    C’est tech­nique­ment plus satis­fai­sant pour les affi­cio­na­dos de HTTP mais la valeur ajou­tée fonc­tion­nelle est nulle. On ne fait rien de plus, rien de moins, et pas vrai­ment diffé­rem­ment. J’échoue d’ailleurs à

    Sachant que ping­back a une implé­men­ta­tion dispo­nible sur à peu près tous les gros moteurs de blogs, je ne trouve pas que cela justi­fie de lancer un nouveau proto­cole. En l’état c’est d’une utilité encore plus faible que ce que j’ima­gi­nais initia­le­ment. Pas de quoi m’em­bê­ter à l’im­plé­men­ter.

    En fait à choi­sir entre ping­back et webmen­tion, une fonc­tion­na­lité forte de ping­back est l’at­tri­but ping­back, qui permet­trait de faire une noti­fi­ca­tion auto­ma­tique suivant ce dernier proto­cole, et donc de rempla­cer (en opt-in) l’en­tête HTTP Refer­rer là où elle est bloquée par HTTPS. Cette possi­bi­lité me semble bien plus utile que le respect théo­rique de HTTP (je sens que je vais atti­rer pas mal de commen­taires avec cette phrase mais j’as­sume).

    Suivi des discus­sion

    Et puis j’ai l’im­pres­sion qu’on regresse un peu par rapport au track­back initial. Ping­back et Webmen­tion noti­fient d’un lien entrant, pas d’un suivi de discus­sion.

    Je peux avoir un lien entrant sans aucun ajout à la discus­sion, juste un relai. Inver­se­ment je peux avoir un nouveau contenu qui apporte à la discus­sion et qui méri­te­rait de noti­fier plusieurs conte­nus déjà exis­tant sans forcé­ment s’im­po­ser de faire des liens.

    Autre commen­taire de Karl : Certains aime­ront avoir plus qu’un lien, avec un petit texte sur le pourquoi de la noti­fi­ca­tion, de ce qu’ajoute ce nouveau contenu au sujet déjà en cours – par exemple pour orien­ter la modé­ra­tion et le choix de (non-)publi­ca­tion. Pas forcé­ment perti­nent de le rendre obli­ga­toire (ça empê­che­rait pas mal d’au­to­ma­tismes) mais le rendre possible serait utile.

    Et si je n’im­pose pas de lien dans le contenu noti­fié, il faudra que je puisse en authen­ti­fier l’ori­gine. Un système de signa­ture simpliste devrait suffire mais sera néces­saire.

    Faire une spéci­fi­ca­tion qui implé­mente ça demande deux heures tout au plus. Rien n’em­pêche même qu’elle soit compa­tible avec Webmen­tion et qu’on puisse avoir un point d’en­trée unique. Simple­ment ça n’a de sens que si je ne suis pas le seul à jouer.

    David, Karl, les autres ? vous en pensez quoi ?

  • The lie of the API

    Quelques réponses sur un billet qui a beau­coup circulé : The lie of the API.

    Ça flatte beau­coup la mouvance HATEOAS mais je n’ac­croche pas. Même avec des clients très smart, impos­sible de faire un même site pour les visites « navi­ga­teur » et les accès « API ».

    Le logi­ciel client de l’API ne sera jamais assez intel­li­gent pour comprendre autant le contexte que l’hu­main derrière son navi­ga­teur, et jamais assez souple pour gérer des chan­ge­ments non prévus.

    Donc partons de notre biblio­thèque qui expose des collec­tions avec des conte­nus, chacun reliés à des auteurs.

    Et si demain je change mes repré­sen­ta­tions pour ne plus mettre les bio des auteurs dans la fiche du livre direc­te­ment ? Certes tech­nique­ment il est possible de faire un robot qui sache récu­pé­rer cette bio sur la fiche de l’au­teur, mais quelle est la proba­bi­lité que les robots actuels gèrent le chan­ge­ment ?

    Et si demain le site web est changé pour que le point d’en­trée premier soit l’au­teur ? Le logi­ciel saura-t-il recher­cher un livre dont il ne connait pas l’adresse ?

    Et si demain je change le système de clas­si­fi­ca­tion des livres pour passer de BISAC à la CLIL française ? Quelle proba­bi­lité que le robot et l’ap­pli­ca­tif derrière gère ça de façon trans­pa­rente ?

    La partie desti­née au robot (qu’on nomme géné­ra­le­ment « API ») n’a simple­ment pas les mêmes besoins que la partie desti­née aux humains (qu’on nomme souvent « web »). On peut faire conci­lier les deux au début, mais ça va casser au fur et à mesure des évolu­tions de la partie desti­née aux humains.

    Tout ça pour quoi ? La satis­fac­tion intel­lec­tuelle du déve­lop­peur qui se dit qu’il corres­pond au schéma idéal du web. La valeur ajou­tée ne me semble pas justi­fier le risque.

    C’est d’au­tant plus vrai qu’en réalité les clients qui codent des robots hyper­me­dia corrects il n’y en a pas tant que ça. Rapi­de­ment des tiers vont coder des robots en faisant de l’in­gé­nie­rie inverse sur les adresses, les iden­ti­fiants, la struc­ture, les données. Ça sera peut être de leur faute, mais ça va casser si vous faites des chan­ge­ments en vous repo­sant unique­ment sur le côté hyper­me­dia.

    D’où la ques­tion : Souhai­tez-vous que ça fonc­tionne ou avoir raison ?

  • La fin d’AdB­lock ? Google prend le contrôle exclu­sif des exten­sions Chrome

    La fin d’AdB­lock ? Google prend le contrôle exclu­sif des exten­sions Chrome. Le titre est là pour faire du buzz mais le problème est réel : Celui du contrôle de l’éco­sys­tème et de l’as­sujet­tis­se­ment à une ou plusieurs multi­na­tio­nale qui décident ce qu’on a le droit ou non de faire sur le web, avec nos conte­nus.

    Rappe­lez-vous qu’en mars de l’an­née dernière Google qui menaçait de mettre des appli­ca­tions Android dehors si elles ne passaient pas par la solu­tion de paie­ment inté­grée de Google (avec les commis­sions adéquates). Rappe­lez-vous encore aujourd’­hui Google qui bloque les reve­nus publi­ci­taires dès qu’on voit un bout de peau dénu­dée sur le site web.

    Le fait de pouvoir faire ou pas ce qu’on veut sur la porte d’en­trée sur le web est juste un enjeu de société. À la limite ne pas pouvoir placer d’ex­ten­sions est moins dange­reux : on ne risque pas de se voir orienté incons­ciem­ment par ce qui est présent.

     

  • Please stop preten­ding PHP is a good language

    The first step to fixing a problem is admit­ting that there is one.

    Bon, des critiques de PHP ce n’est pas ce qui manque mais pour une raison incon­nue je m’étais dit que ça partait bien quand j’ai lu la première ligne. Sauf qu’au final

    • It’s not ok that you can’t relia­bly get the first element of an array using less than 4 lines of code without causing side effects.*[1]
    • It’s not ok that the output of echo 5/3 might depend on the coun­try you live in if you don’t know the fine details of confi­gu­ring PHP.
    • It’s not ok that you won’t be able can’t call array_map” or just “$itera­tor->reduce” on an itera­tor in 2014.
    • It’s not ok to ignore the simple fact that most of the PHP world currently relies on parsing func­tion and class comments for it’s code to func­tion because people can’t get their shit toge­ther on mailing lists.
    • It’s not ok to run around shou­ting “type hinting for lite­rals would mean that passing an int to float hint would fatal PHP” and calling that an reaso­nable argu­ment while people just write $x = (float)$x; in the cases where it actually does matter anyways.
    • It’s not ok to be not able to talk to 2 back end data sources in paral­lel, using “promises” or whate­ver, in a language that has “pull stuff out of data­base and put it into the inter­net” as a proclai­med core compe­tency.
    • It’s not ok that echo 0.000001; produces 1.0E-6 and that casting it to string doesn’t help but putting quotes around it does.
    • It’s not ok that you have to clear the error buffer by gene­ra­ting a suppres­sed unde­fi­ned variable error just to be able to sanely use token_get_all().

    Au final la moitié des items ressemblent juste à « ça ne fait pas ce que j’es­père ». Alors pour ceux qui m’ont fait suivre le lien :

    Pour le premier item il existe plusieurs solu­tions, dont un simple array_values($tab)[0]. Bref, rien d’ex­cep­tion­nel pour aller itérer sur un diction­naire.

    Pour le second, si on demande expli­ci­te­ment au niveau du système à affi­cher les résul­tats suivant les conven­tions d’un pays spéci­fique, PHP s’y conforme. C’est le cas de la plupart des langages, y compris la ligne de commande de base. Diffi­cile d’avan­cer que c’est un problème, d’au­tant qu’il est bien évidem­ment possible d’igno­rer la confi­gu­ra­tion du système pour forcer une locale au niveau du langage.

    Quant à savoir comment affi­cher 0.000001 ou 1E-6, comme le langage n’a aucun moyen de savoir comment a été tapé la valeur initiale dans le code source (rien de spéci­fique à PHP, à ma connais­sance aucun ne le fait), il faut bien qu’il choi­sisse une forme arbi­trai­re­ment à la sortie. Si l’au­teur veut forcer autre chose, il a tous les outils pour ça.

    Pour le dernier item j’ai la flemme de véri­fier les cas limites mais à priori c’est juste que l’au­teur n’a pas eu le courage d’al­ler créer un gestion­naire d’er­reur pour gérer ses erreurs.

    Bref, tout ça c’est bien joli mais à première vue une bonne partie n’est qu’un problème de déve­lop­peur frus­tré, pas un problème de langage.

    Ce qui me frustre moi c’est que des problèmes de langages il y en a plein, et que pous­ser des faux problèmes décré­di­bi­lise ceux qui essayent de corri­ger les problèmes réels.

  • Bonnes pratiques API – les fichiers

    J’ai eu la chance d’échan­ger autour des API à trois confé­rences récem­ment. Les sujets ont été globa­le­ment les mêmes mais sous des angles diffé­rents.

    Mes réflexions avancent suite aux discus­sions et aux diffé­rents retours. Main­te­nant c’est à moi de travailler un peu pour ordon­ner tout ça et le retrans­crire quelque part.

    Entre temps je mets en ligne mes notes et mes présen­ta­tions pour ceux que ça inté­resse.

    Je vous recom­mande surtout les notes et la présen­ta­tion Paris-Web comme premières lectures. Norma­le­ment les trois présen­ta­tions ont été enre­gis­trées en vidéo, vous devriez les retrou­ver sur les pages des diffé­rents événe­ments le temps que le montage soit terminé (mais en géné­ral ça prend du temps).

  • Paris web en une anec­dote

    Il y a quelques minutes : Ques­tions réponses après une confé­rence tech­nique qui débor­dait sur l’éthique, sur l’in­te­rac­tion entre la tech­no­lo­gie et notre monde.

    À deux langues de distances, l’ora­teur à une confé­rence tech­nique répond à une ques­tion d’un malen­ten­dant. Inter­prète LSF-français, traduc­tion français-anglais, en direct. Même chose dans l’autre sens.  Au-dessus défile un sous-titrage auto­ma­tique de tout ce qui est dit, le tout (audio, vidéo, sous-titrage) trans­mis en direct sur le web.

    Parler d’ac­ces­si­bi­lité est une chose, le faire en est une autre.

    Si je dois résu­mer ce qui a été créé à Paris Web et que je ne retrouve nulle part ailleurs, même en dehors de nos fron­tières, je crois que ce sont ces quelques minutes qui l’ex­priment le mieux.

  • Forte baisse des salaire en raison de la pénu­rie d’in­for­ma­ti­ciens

    Remix Jobs relance la polé­mique sur la mythique pénu­rie d’in­for­ma­ti­ciens. Les mêmes rengaines arrivent chaque année entre juin et septembre. Cette fois ci, une semaine après, on voit dans la presse « Forte baisse des salaires à l’em­bauche en SSII ».

    Je n’ar­ri­ve­rai pas à comprendre comment on peut consi­dé­rer qu’il y a tension au recru­te­ment tout en faisant bais­ser les salaires. Ce n’est pas tant que les infor­ma­ti­ciens soient mal payés – ils ne le sont pas – mais les salaires d’autres pays sont bien plus haut, donc logique­ment la diffi­culté de recherche devrait faire monter les salaires au moins au niveau des voisins.

    Et qu’on ne se trompe pas, si la propor­tion des expé­ri­men­tés passe en dessous du tiers pour les nouvelles embauches, ce n’est pas qu’ils sont rares, c’est que personne n’a envie de payer pour l’ex­pé­rience avec autant de jeunes diplô­més sur le marché.

    Métier mal consi­déré, loca­tion de person­nel (majo­rité des embauches en SSII), salaire en baisse, déve­lop­peurs français recon­nus comme bons et mieux payés à l’étran­ger, déva­lo­ri­sa­tion du déve­lop­peur avec plus de cinq ans d’ex­pé­rience (« il aurait du passer chef de projet »)… il ne faut pas s’éton­ner que certains claquent la porte des recru­teurs français.

  • Vive la trans­la­tion du jargon

    J’ai cher­ché comment traduire « commit » dans le contexte d’un contrôle de versions type git ou subver­sion. J’ai eu quelques propo­si­tions qui peuvent permettre de construire des phrases au cas par cas, mais aucun terme vrai­ment éclai­rant et géné­rique.

    Mais surtout je me suis heurté à pas mal de réac­tions concer­nant l’idée même de traduire le terme.

    Fran­che­ment je ne cherche pas à « défendre la langue française ». Elle va très bien, merci pour elle, et surtout elle ira d’au­tant mieux qu’elle restera vivante et s’au­to­ri­sera à impor­ter des termes étran­gers. Il est d’ailleurs amusant de voir de temps en temps de la résis­tance à impor­ter un terme anglais… qui est en fait un terme français qui a été importé outre-manche ou outre-atlan­tique il y a bien long­temps. Bref, là n’est pas la ques­tion.

    Ma petite histoire

    C’est Eyrolles qui m’a pas mal ouvert les yeux sur l’uti­lité d’une traduc­tion. À l’époque de la rédac­tion de mon livre sur PHP, ils nous ont imposé de cher­cher au maxi­mum des traduc­tions.

    • Premier constat : Quand on cherche, le plus souvent, on trouve un terme français qui corres­pond très bien.
    • Second constat : Le plus souvent même ceux qui n’uti­lisent que les termes anglais ne remarquent même pas qu’il y a eu effort parti­cu­lier de traduc­tion.

    Tout le monde utilise thread, parser, template, tag… mais fina­le­ment un fil de discus­sion ou d’exé­cu­tion, un moteur ou un analy­seur syntaxique, un gaba­rit, une balise ou une étiquette, ça fonc­tionne très bien aussi. En fait ça fonc­tionne même mieux, avec une lecture bien plus fluide quand bien même les termes sont rare­ment fran­ci­sés dans le contexte infor­ma­tique.

    Il m’a ainsi fallu pas mal de volonté pour faire un chapitre sur les gaba­rits de pages HTML en PHP. Damned, j’ai résisté et voulu écrire « template » jusqu’au bout. Je me demande même si nous n’avions pas fini sur un compro­mis en lais­sant « template » dans le titre de chapitre en crai­gnant que « gaba­rit » ne soit pas immé­dia­te­ment compris. Sauf qu’au final je suis bien content de l’avoir fait ce chan­ge­ment.

    Abra­ca­da­bra

    J’ai vu trop d’in­for­ma­ti­ciens utili­ser les termes anglais comme des formules magiques. J’ai même eu plusieurs discus­sions à l’époque du choix de « gaba­rit » où on m’a expliqué qu’un « template » c’était diffé­rent parce que [insé­rez ici une conno­ta­tion imagi­naire]. Moins mon inter­lo­cu­teur avait de recul sur ce qu’il mani­pu­lait et de compré­hen­sion du fonc­tion­ne­ment, plus il était atta­ché au terme anglais. Cette consta­ta­tion n’a jamais été démen­tie (atten­tion à ne pas vous vexer : je ne prétends pas que la réci­proque est vraie).

    Si je tiens au français, c’est juste­ment pour parler français et pour ne pas utili­ser de termes formules magiques où chacun y met son propre imagi­naire. Ça permet de norma­li­ser le discours, de lais­ser prendre du recul à ceux qui sont trop habi­tués à copier sans comprendre, et de parler du fonc­tion­ne­ment plus que d’une série d’ou­tils et de commandes.

    Comme la plupart des infor­ma­ti­ciens, j’ai beau­coup tendance à utili­ser l’an­glais dans mon jargon. J’ai toute­fois pu noter de réelles diffé­rence d’im­pact et de compré­hen­sion dès que je fais l’ef­fort d’uti­li­ser des termes français. Et cette faci­lité d’échange ne concerne pas que les débu­tants : Je la constate aussi face à des habi­tués du terme comme de la tech­nique qu’il recoupe. À vrai dire plus la personne en face a du recul et de la compré­hen­sion, plus on peut parler de ce qu’il y a derrière et autour et plus la langue utili­sée est un détail.

    À l’usage

    Seule l’ha­bi­tude fait un peu résis­tance, mais pas tant que ça. En fait tout l’enjeu c’est de trou­ver un terme qui sera immé­dia­te­ment compris sans réflé­chir par un natif fran­co­phone, même par celui qui n’uti­lise que le terme anglais dans sa vie profes­sion­nelle. Très souvent on trouve, et si extrê­me­ment peu de mes corres­pon­dants parle­ront eux-même de fil d’exé­cu­tion, aucun ne tique quand je le fais.

    Il reste quelques termes diffi­ciles à traduire. Le plus souvent ce sont des termes qui ont déjà été détour­nés de leur sens usuel en anglais. Forcé­ment, trou­ver un terme français revient aussi souvent à le détour­ner de son sens usuel… et là ça coince. À l’écrit, quand ça arrive, je tente de forcer un peu le terme français s’il me semble viable, quitte à mettre le terme anglais en paren­thèses à la première occur­rence.

    Et quand rien ne va ? et bien j’uti­lise l’an­glais, ça me va aussi très bien. Fuck à l’Aca­dé­mie Française qui créé un nouveau mot complè­te­ment déli­rant par volonté abso­lue de ne pas utili­ser l’an­glais. Ce n’est pas ma moti­va­tion. Par contre j’en arrive là après une recherche sérieuse, avec l’aide de ceux qui le veulent.

    Et pour « commit » alors ? Après un nombre impor­tant de contri­bu­tions sans aucune suffi­sam­ment claire et géné­rique – de mon avis person­nel – Karl a proposé le simplis­sime « enre­gis­trer ». Ça ne plaira peut être pas aux puriste, mais j’ai l’im­pres­sion que ça colle parfai­te­ment à pas mal de sens qu’on donne à « commit », et que je trou­ve­rai bien les termes pour les quelques sens manquants avec les notions de version et tran­sac­tion. Ceci dit ça reste un sujet ouvert pour moi.

  • Bases de données en master – master

    J’ai cher­ché de quoi stocker des données avec plusieurs serveurs maîtres en répli­ca­tion, mais je n’ai rien trouvé d’in­té­res­sant pour l’ins­tant. Je me suis dis que toi, fidèle lecteur, tu pour­rais appor­ter ta pierre. D’au­tant qu’il me semble que c’est une problé­ma­tique courante, au moins pour les améri­cains qui doivent avoir des serveurs sur les deux côtes, synchro­ni­sés entre eux.

    Fonc­tion­nel­le­ment

    J’ai des visi­teurs qui vont accé­der en lecture, en écri­ture ou en modi­fi­ca­tion à des données. Ces visi­teurs peuvent être répar­tis géogra­phique­ment et j’ai­me­rai que dans la mesure du possible, ils puissent accé­der à leurs données rapi­de­ment. Par rapi­de­ment j’en­tends « sans avoir à payer 100 à 200 ms de latence pour joindre un serveur de base de données sur une autre côte ou sur un autre conti­nent ».

    Là où j’ai de la chance, c’est qu’une même données ne sera crée, modi­fiée ou lue que par un seul utili­sa­teur (ou presque). Cet utili­sa­teur sera donc le plus souvent au même endroit, donc je peux répar­tir mes données en consi­dé­rant qu’un seul serveur est maître sur chaque données. Dans mon esprit ça veut dire que ce sera rapide (données proches) 90% du temps et lent (serveur maître loin) les 10% du temps restant si l’uti­li­sa­teur navigue géogra­phique­ment. Par contre il faut que lors de la créa­tion d’une donnée, je puisse choi­sir quel serveur sera le maître pour la donnée en ques­tion (pas de répar­ti­tion auto­ma­tique par hachage de clef puisque le maître est choisi en fonc­tion de la proxi­mité géogra­phique).

    Histoire de complé­ter : J’ai assez peu de rela­tion­nel dans ces données et j’y accède quasi­ment toujours par leur clef primaire. Je suis prêt à utili­ser du SGBDR type MySQL, du clef/valeur type Redis, ou des inter­mé­diaires type MongoDB (bon, j’ai une préfé­rence pour du Redis, qui serait mon choix sans la contrainte multi-maître).

    J’ai des volumes qui vont repré­sen­ter plusieurs Go, entre 5 et 20 on va dire à vue de nez, non vola­tiles (donc j’ex­clue tout système qui ne permet pas de sauve­garde ou qui n’a pas de couche écri­ture disque). La perfor­mance est impor­tance lors des accès, mais je ne vais pas avoir un débit d’écri­ture phéno­mé­nal non plus. Je ne pense pas que ce soit le critère de choix prin­ci­pal.

    Enfin, je n’ai pas besoin d’écri­tures synchrones sur plusieurs serveurs. Je suis prêt à avoir une latence d’une ou plusieurs secondes avant de pouvoir accé­der à une nouvelle donnée (ou à une modi­fi­ca­tion) depuis un autre serveur que celui de sa créa­tion.

    Tech­nique­ment

    Beau­coup de solu­tions ont un mode maître-maître qui ne semble pas conve­nir à mon besoin, où les conflits peuvent être légion : Si un utili­sa­teur fait volon­tai­re­ment une opéra­tion sur une données à partir de plusieurs empla­ce­ments géogra­phique, je risque de ne pas pouvoir tracer ses diffé­rentes opéra­tions mais d’avoir au mieux la trace de la dernière. Sauf erreur de ma part, les bidouillages multi-maîtres MySQL et Post­greSQL entrent dans cette caté­go­rie.

    J’ai jeté un oeil à Redis-clus­ter, qui a l’air d’être assez proche de la philo­so­phie que je cherche (chaque donnée a un et un seul maître) mais c’est malheu­reu­se­ment avec une isola­tion complète, c’est à dire qu’au­cun noeud n’a l’en­semble des infor­ma­tions en lecture. J’y vien­drai s’il le faut, mais si je veux un fail-over correct ça veut dire qu’il faut que je double chaque noeud (le maître, puis son esclave en cas de défaillance). Je ne suis pas non plus certain de pouvoir choi­sir le maître à utili­ser lors de l’écri­ture.

    Je regarde Riak, CouchDB, RethinkDB, Tyrant, Volde­mort, Dyno­mite et quelques autres mais je manque cruel­le­ment de retours d’ex­pé­rience et d’in­for­ma­tions pour faire un choix éclairé, si tant est que l’un de ceux là puisse corres­pondre.

    J’ai aussi en tête de faire quelque chose à la main avec une logique appli­ca­tive par dessus le connec­teur Redis, pour qu’il se connecte au bon serveur en fonc­tion du premier carac­tère de la clef, mais j’ai­me­rai fran­che­ment éviter les bidouilles manuelle pour quelque chose qui doit certai­ne­ment avoir une solu­tion sur étagère.

    Dis, lecteur, as tu des liens, des retours d’ex­pé­rience, des infor­ma­tions, des commen­taires ?

     

  • Diffé­ren­cier le trafic pour créer de la valeur – le réseau auto­rou­tier

    Les jour­na­listes râlent encore sur l’en­com­bre­ment des réseaux auto­rou­tiers. Marron­nier. Évidem­ment il est hors de ques­tion d’aug­men­ter encore les tarifs des usagers.

    Vinci est créa­teur de 7500 emplois directs, les Auto­routes Paris-Rhin-Rhône plus de 4500, et ce ne sont que deux des conces­sion­naires du réseau auto­rou­tier. Tout ça fait vivre autant de personnes sur les commerces et sur l’éco­no­mie géné­rée aux alen­tours. C’est aussi par l’au­to­route que sont désen­cla­vées nombre de petites villes qui sinon dépé­ri­raient. Faut-il mettre tout ce monde au chômage sur l’au­tel d’un concept théo­rique ?

    Les asso­cia­tions se sont en effet oppo­sés à la segmen­ta­tion fine du trafic auto­rou­tier. Créa­teur de valeur pour les conces­sions d’au­to­route, ce système aurait pour­tant permis de géné­rer un revenu supplé­men­taire signi­fi­ca­tif.

    Merce­dez-Benz est en effet l’ori­gine de 20% du trafic auto­rou­tier poids-lourd à lui tout seul, le trafic le plus encom­brant pour le réseau. Le construc­teur profite sans gêne de nos infra­struc­tures pour vendre ses camions. Il est évident que les conces­sion­naires d’au­to­route ne peuvent pas conti­nuer à finan­cer seuls l’évo­lu­tion du réseau auto­rou­tier alors que les étran­gers qui y injectent du trafic n’y contri­buent en rien.

    La solu­tion tout le monde la connait : Faire du trafic diffé­ren­cié et canton­ner les véhi­cules de Merce­dez à la voie la plus à droite et à une seule file au barrières de péages. Le construc­teur devra payer l’opé­ra­teur auto­rou­tier pour un accès plus perfor­mant, et contri­buer ainsi au paie­ment des infra­struc­tures.

    Ce système vien­drait en renfor­ce­ment des offres à valeur ajou­tée pour les usagers : Des accès privi­lé­giés ont déjà été mis en œuvre via les télé­badges qui permettent de passer par des files prio­ri­taires dans les barrières de péage. On réflé­chit à étendre ce système pour permettre à des profes­sion­nels de sauter les bouchons via la bande d’ar­rêt d’ur­gence sous réserve de sous­crip­tion à un abon­ne­ment spéci­fique, ou d’ache­ter une exten­sion « Accès prio­ri­taire Merce­dez » pour ne plus être limité à la voie de droite.

    Les asso­cia­tions idéa­listes crient à l’at­teinte à la neutra­lité mais ces dernières n’ont rien compris à l’éco­no­mie, à la confron­ta­tion entre notre réseau auto­rou­tier financé en partie par l’État et les usagers, et entre les gros construc­teurs étran­gers qui en profitent sans y contri­buer. Il est temps d’ar­rê­ter avec ces concepts théo­riques et de prendre pied dans la réalité. Lais­sons les opéra­teurs d’au­to­route créer de la valeur.