Le principe du scaling appliqué à un restaurant
Un jour j’allais chercher mon petit menu habituel au restaurant japonais, juste après la période des fêtes. En discutant un peu avec le gérant du restaurant sur le covid on a digressé sur l’infra de gestion des résultats de tests covid qui n’a pas tenu la charge pendant la période.
Oui je sais, drôle de sujet de conversation dans un restau japonais.
Je lui ai dit que dans certain cas, on a beau prévoir les choses en amont ça ne suffit pas. J’ai trouvé que la gestion d’un restaurant s’appliquait parfaitement à ce que je voulais expliquer, alors j’ai décidé de retransmettre et développer ici mon explication pour que tout le monde en profite.
La porte d’entrée
La porte d’entrée est le principal point de passage des clients, dans un restaurant civilisé, les clients rentrent et sortent sans se bousculer ou forcer une priorité et tout se passe bien. On considère qu’ils vont commander au comptoir ou occuper les places disponibles dans le restaurant et commander quand vient leur tour de façon organisée et courtoise. Ils payent à la fin sans faire d’histoire, parcequ’ils ont anticipé leur moyen de paiement et sont honnêtes.
En fait, la porte du restaurant est déjà un premier goulet d’étranglement dans l’infrastructure du restaurant, mais elle à une taille suffisante pour permettre de servir la capacité maximum prévu du restaurant étalé sur l’ensemble de la durée du service.
On sait que le restaurant à des périodes de creux et de pic de fréquentation, mais la cuisine est organisé pour absorber ces pics de demandes, les ingrédients sont suffisants pour produire les plats, la caisse est réactive.
En fait la porte n’est un problème que quand la fréquentation du restaurant est un peu au-dessus de la capacité prévue et que les gens commencent à s’énerver.
Et justement, Paf, c’est la foire à empoigne, jour de concert de baby metal dans la capitale, tout le monde veut manger japonais, grosse dinguerie.
Les gens poussent pour rentrer, alors que d’autres essayent de sortir, c’est la tokyo game week dans le restaurant. La cuisine est débordée, on entend plus les commandes, on se trompe, le ton monte, les gens commencent à partir, c’est la merde totale.
Adaptation 1, une plus grande porte
Efficacité japonaise, on construit une plus grande porte dans la nuit, on met en place une file d’attente, on nettoie tout et on prévoit même un kiosque sur le côté pour le clic and collect, pour décongestionner la porte principale. Si on reprend l’analogie, ça reviendrait à augmenter la bande passante entrante et sortante de notre infrastructure, on met de la fibre dans les maki hihi.
Le clic and collect, ça pourrait être un point d’accès API. On connaît la commande c’est déjà payé y’a plus qu’à fournir les menus et les donner aux personnes concernées.
À nouveau un pic de fréquentation important, cette fois si la porte tiens bon, les gens ne se bouscule plus, la caisse encaisse, mais la cuisine est dans les cordes.
Trop de menus, trop de demandes, pas assez de bras, malgré une très bonne organisation, le chef tout seul est débordé et c’est le burn-out.
En plus les gens veulent manger sur place, mais la capacité maximum du restaurant est insuffisante. Les gens sont frustrés, choisissent le premier resto à emporter, ils mangent des gros kebabs bien sales, ça va vite au moins …
On appelle ça un déni de service en terme technique, trop de requêtes en même temps, les machines ne peuvent pas répondre à toutes les requêtes en même temps. Le site tombe, on prend des erreurs 500, plus personne n’accède au site, la grosse loose Milouse.
Adaptation 2 les grands moyens
C’en est trop pour le gérant, qui a le kebab en travers de la gorge, il envoie les grands moyens ! Une plus grande cuisine, une plus grande salle, plus de personnel, un vigile à l’entrée, un dock de stationnement de camion à l’arrière du magasin pour les livraisons.
digression “fun” fact, cette machine est la machine considérée comme la plus grosse du monde https://fr.wikipedia.org/wiki/Bagger_293
Le restaurant cartonne, quand les concerts arrivent, tout le monde est servi dans les délais. Si on reprend l’analogie du point de vue technique, ça revient à ajouter de plus grosses machines et plus nombreuses pour absorber le nombre de demandes.
Et merde, ce n’est pas rentable
Mais gros soucis, l’investissement est énorme et la plupart du temps, le restaurant ne fonctionne qu’à 40% de sa capacité maximum. Ça coûte des sous et ce n’est plus trop rentable, il faudrait un moyen pour diminuer les effectifs en période creuse, et commander moins de matière première quand y’en à moins besoin…
Mais le gérant est malin, il appelle CD projekt RED et fait un restaurant 100% dématérialisé dans Cyberpunk 2077.
Hey je n’ai pas dit que c’était réaliste, fait un effort de projection sinon ma métaphore ne marche plus haha !
Le gérant a maintenant un restaurant qui augmente et diminue en fonction de la fréquentation du site.
En analogie technique, on appelle ça l’auto-scaling. On augmente, le nombre de machines en réponse à la demande et on diminue quand le pic de charge est fini.
Passe sanitaire, le masque SVP, OK pas de sushi
Le gérant s’aperçoit qu’il y a des petits malins qui s’amènent sans passe sanitaire ou qui ne mettent pas comme il faut leurs masques. Et même à night city il y a le cybercovid, et il faut respecter la loi sinon il y a la police qui s’amène …
Donc il prend un vigile pour vérifier les passes, les masques et les restaurants basket. Du coup ça diminue un peu les coûts et la pression sur le reste du personnel. On entend parfois dire le vigile dire “403 dégage”, mais globalement le restaurant marche impeccablement.
Crazy about sushi
De temps en temps, il y a un grand malade qui fait des commandes de débile à un rythme de robot et il commande exprès les menus les plus compliqués.
C’est chiant parce que ça perturbe la cuisine, et parfois ça met la pagaille dans le restaurant. Le vigile ce n’est pas trop son problème, le gars en question a le passe et le masque, donc il laisse passer.
Du coup on met un robot qui va regarder toutes les commandes et si le même gars s’amène avec plus de 5 commandes par minutes, il limite les commandes. Après tout, le gérant se dit que le gars paye à chaque fois, donc si on le limite un peu, ça suffira pour continuer à faire fonctionner le service et à faire rentrer les autres commandes.
Techniquement ça se traduit pas du rate limiting.
On réduit le nombre de requêtes par secondes pour une ou plusieurs adresses IP données.
Le but étant de réduire la charge des scripts un peu trop agressive et mitigée un peu les attaques par déni de service.
Le chien à cyberpunks
De temps en temps, il y a des petits cons qui essayent de pirater la caisse ou essayent un peu n’importe quoi pour casser le restaurant. Ils commandent des plats qui n’existent pas, demandent 500 paires de baguettes, flood le gérant à la caisse avec plein de fausses commandes.
Du coup le gérant sort le chien à cyberpunks. Il s’appelle WAF, ouais il ne s’est pas foulé pour le nom. WAF (web application firewall), va renifler les commandes et les clients et aboyer sur les cyberpunks pour les faire partir.
Techniquement, un WAF inspecte les requêtes entrantes, et bloque les requêtes suspectes.
On planque tout ça en Californie (non c’est pas de la beuh, c’est des algues)
Le chef est malin et sais que les Français mangent surtout des california maki. Comme la recette ne varie jamais, il en produit régulièrement et en quantité en avance et aussi certain des makis les plus demandées. Il s’arrange pour que les produits gardent une bonne fraicheur en jetant les makis non consommés avant qu’ils soit non consommable.
On peut le traduire techniquement par une stratégie de cache, on enregistre à l’avance le résultat des requêtes qui est très demandé en lecture et qui varie peu. On met cette information dans un service de cache rapide, ça permet de décharger l’infrastructure et de rendre le site globalement plus rapide.
Conclusion
Je pense ici avoir couvert les concepts de base de l’infrastructure réseau. De façon surprenante, un restaurant n’est pas si éloigné que ça d’une infrastructure informatique. J’espère vous avoir donné envie d’en savoir un peu plus et je vous donne rendez-vous plus tard pour ma prochaine connerie.
Bon c’est pas tout ça, mais il est où mon menu L1 ?