 Merci d'être venu, je vais parler de tester la web app avec Trafic Control. Quand je parle de Trafic Control, je parle d'un réseau Trafic Control comme ajouter des latencies ou limiter les bandes. Je vais faire une petite présentation de moi-même. Je suis travaillé avec container avant, j'ai travaillé sur Rocket, j'ai travaillé sur Weave Scope, sur EBPF, et avant j'ai travaillé avec Trafic Control pour différents outils. Je travaille avec Kinfolk, c'est l'un des confondeurs, et nous aimons travailler sur des softwares de low-level Linux, comme ce exemple, Rocket, SystemD, Linux. Ok, vous pouvez confier ça. Je vais commencer directement avec le démon. Le démon que je vais vous montrer aujourd'hui est cette application. C'est une web site. Vous pouvez acheter des softwares, et je vais rapidement vous montrer le futur. Il y a un catalogue, je vais... Est-ce que c'est grand? Et ensuite, vous pouvez ajouter des choses à la carte. Et ensuite, il y a vos produits. Donc, cette application, cette web site, est implémentée en utilisant l'architecture micro-service, ce qui signifie que il fonctionne dans beaucoup de contenus différents, et chaque contenu a des propos différents. Il y a le front-end, je pense qu'il fonctionne dans PHP, et il y a beaucoup de baccades différents pour différents database et différents services. Je vais vous montrer maintenant Weave Scope. Je vais vous montrer un petit peu plus petit. Weave Scope, c'est un tool de visualisation. Vous pouvez voir tout le contenu en dessous de votre cluster. Dans mon cas, je n'ai qu'une nôtre dans une machine virtuelle sur mon laptop. Mais l'idée est la même pour plus de nôtre. Ici, je peux voir, par exemple, un front-end. Ce qui est intéressant, c'est qu'il y a des choses dans la liste. Vous pouvez voir les communications entre les différents contenus. Dans cet exemple, j'ai le front-end et j'ai un lien entre le contenu de l'utilisateur et le contenu de l'utilisateur database. Si je clique sur les contenus, je vais pouvoir voir la liste de contenus, la liste de processus. Puis je peux explorer le contenu et je peux voir les différentes connexions qui s'appliquent. Ce que j'ai envie de tester, c'est un scénario où le réseau ne s'occupe pas correctement. Comme développeur, on a une bonne connexion internet, donc il y a une bonne connexion latentienne, et surtout, quand les choses se roulent dans la machine virtuelle sur votre laptop, il y a une bonne connexion entre le FireFox et la machine virtuelle. Ce n'est pas facile de voir des bugs dans l'UI qui s'appliquent avec une bonne connexion internet. Par exemple, ici, je vais voir la carte pour voir ce que j'ai, j'ai juste la page, mais ça ressemble bien, les items semblent s'appliquer très vite. Donc, pour pouvoir faire ça, j'ai développé une plug-in avec Scop pour pouvoir changer la position de la chaine pour ajouter des latencies. Si je vais, par exemple, sur le contenu catalogue, ici c'est. Ici, j'ai des contrôles qui viennent avec Scop. Par exemple, j'ai quelque chose pour obtenir les logs, pour obtenir une chelle dans le contenu. Je pourrais poser ou arrêter le contenu, mais ce qu'il y a pour ajouter les contrôles, c'est pour ajouter plus de boutons pour le faire plus vite. Ici, j'ai un bouton pour ajouter 2 secondes latencies. Si je clique sur ça, les choses vont être plus vite. Donc, je vais retourner avec Sox et je vais presser F12. Si vous ne savez pas que c'est F12, vous avez un console network. Et puis, quand vous rechargez la page, vous devez pouvoir voir les connecteurs différents, les connecteurs des connecteurs de la page web. Ici, la plupart de eux sont très vite, mais en fait, ce que vous voyez ici, la page semble très petite, mais il n'y avait pas d'itimes dans la carte. Et ici, il semble que c'est seulement 1. Et oui, cette image ne fonctionne pas très vite. Et c'est quelque chose que vous pouvez voir ici dans Firefox. Il y a des connexions. La plupart des connexions HTTP sont très vite, mais comme l'un de eux, celui-là, il y a 8 secondes, plus que 8 secondes. C'est parce que j'ai ajouté beaucoup de latencies pour les containers de catalogue. Et c'est parce que le Fronton a besoin de contacter le catalogue pour pouvoir accomplir ce request. Donc, je vais le faire encore, je vais le refresher pour que vous puissiez voir ce qui s'occupe ici. Donc, la page semble complètement éloignée, mais en fait, il n'y a pas de spinning wheel sur Firefox pour dire que c'est encore éloigné. Il y a une bonne somme ici, c'est 0$, il y a 1 items ici, et il n'y a rien là-bas. Et il texte une bonne somme. Donc, une bonne interface d'utilisateur devrait avoir des feedbacks d'utilisateur pour dire que c'est encore éloigné, pour ne pas confuser l'utilisateur par dire qu'il n'y a rien dans la carte, parce que l'utilisateur peut être tenté de dire, ok, j'ai perdu tout, je vais essayer de le vendre. Donc, c'est quelque chose qu'on peut tester avec le contrôle de trafic de l'utilisateur. Ici, je vais restaurer les settings. Donc, maintenant, si j'ai refreshé de nouveau, ça devrait travailler bien. Maintenant, ça marche bien de nouveau. Si je vais à la page catalogue, il y a un bug similaire. Si je le fais lentement de nouveau, et j'ai un démon d'effet, mais c'est supposed de refresher la page. Je clique sur refresh. Et ici, ça ne ressemble pas à un bon UI, en ce cas. Donc, il y a beaucoup d'issues de UI qui vont bénéficier du test avec le contrôle de trafic, pour voir ce qui se passe en ce cas. Ok, c'est tout pour le démon. Je vais retourner aux slides. Je vais juste dire quelques mots sur l'architecture de scope. Donc, dans mon cas, j'ai testé seulement un nôtre, sur une machine verticale sur mon laptop. Mais c'est quelque chose qui, si vous avez un site de scale sur Money Nodes, vous pouvez utiliser quelque chose comme Kubernetes pour la scale-up. C'est ce que j'ai en fait, j'ai Kubernetes sur mon laptop. Et puis, vous pouvez avoir scope déployé sur tous les nôts de la cluster. Et vous avez typiquement un adjoint sur chaque nôtre qui inspecte les différentes connections. Si vous avez la liste de conteneurs, la liste de connections de ccp, et puis, le adjoint va repartir cela à l'app. L'app va avoir tout le rapport et les remercier et pouvoir les déployer pour Firefox. Donc, c'est pourquoi ici, je vois, oh, sorry, ici, je peux voir tous les nôts sur tout le process, tous les connections. Dans ce cas, j'ai un nôtre de contrôle de trafic. C'est un nôtre de contrôle de trafic. On va pouvoir recevoir les ordres de la commande quand on clique sur le bouton et il va renforcer le contrôle de trafic, comme 2 secondes, on verra. Comment le contrôle de trafic fonctionne ? Il utilise des disciplines de cuisson, ou, comme ils sont appelées, les caduleurs de network. Il utilise l'un des cellules de network, qui est disponible depuis Linux 2.2, donc c'est disponible, je pense, partout. Il a des paramètres. Vous pouvez définir un limiter sur le bandwidth. Vous pouvez augmenter l'attentif, vous pouvez droiter un paquet. Vous pouvez dire que vous voulez droiter 2 % de la paquette. Vous pouvez corriger la paquette, vous pouvez faire beaucoup de choses. Ici, en ce cas, je vais juste focusser sur l'attentif. Je vais juste ajouter l'attentif pour voir ce qui se passe. Est-ce qu'il y a d'autres questions ? Oui ? Oui, c'est le module de kernel, dans Linux. Normalement, toutes les distributions déclenchent la paquette. Je pense, sur Fedora, vous devez installer je ne m'en souviens pas le nom de l'appym, mais c'est le module de kernel extra, ou quelque chose comme ça. Et puis, quand il est installé, il fonctionne, le module s'en charge. L'automatique. Ok. Donc, quand on veut tester, on ne veut pas changer le contrôle de la paquette, l'attentif et tout. On veut le faire avec seulement un contenu, celui que nous voulons tester. Comme dans cet exemple, j'ai testé dans le catalogue. Et c'est possible de le faire, parce que la discipline de tuer, ou l'immulateur network, n'est installée pas globalement, mais seulement sur un interface network. A chaque contenu, il y a leur interface network, donc ici, je peux appliquer les settings, seulement sur un contenu, ou sur deux contenus, ou je peux choisir, je n'ai pas besoin d'avoir cette setting globale. Vous avez d'autres questions ? Oui ? La question est, peut-être que j'en run automatiquement dans le CI ? Avec ça, exactement, non, mais internellement, j'utilise le tc command line pour contrôle de trafic. Et cette chose peut être utilisé dans le CI ou dans le script. Et je peux vous montrer le code, en fait, si j'ai trouvé ça. Donc ici, c'est le github repository sur les plugins de Weaver et c'est le plugin de contrôle de trafic, ici. Je pense que vous pouvez le voir, ici. Et ici, il s'appelle la fonction Appliance on C, mais, excuse-moi, ce qu'il fait, oui, c'est un autre file, mais ce qu'il fait, c'est que j'ai le système exact pour exécuter le tc command avec le paramètre correct sur la interface correcte et que quelque chose peut scripter. Oui ? C'est possible de faire, dans ce... Oh, sorry. La question est, qu'est-ce qu'il y a sur le trafic d'incomité, en opposed à la trafic d'outre. Dans ce plugin de contrôle d'outre, je n'ai qu'à care de trafic d'outre. Mais c'est possible de faire du trafic d'incomité, c'est un peu plus difficile parce que vous pouvez plus facilement réguler ce que vous envoiez plutôt que ce que les autres vous envoient. Mais il y a un module kernel appelé IFB, pour... Je ne suis pas sûr ce que ça veut dire. IFB, je ne suis pas sûr ce que ça veut dire. Mais si vous pouvez le faire, vous pouvez redirecter la trafic d'outre pour cette interface d'outre. Et ensuite, vous pouvez appliquer la trafic d'outre. Et ensuite, ça va cuire la trafic d'outre. Donc, si vous utilisez le tcp, ça va automatiquement adapter la trafic d'outre ou la trafic d'outre. Et puis, en pratique, l'application va voir la trafic d'outre. Une autre question. Vous supportez Amazon et Kubernetes et le Dr Datacenter. Est-ce difficile d'annoncer pour DCOS? Je ne l'ai pas essayé, mais il devrait travailler aussi parce que c'est juste un contenu sur la interface network dans l'endroit, je pense. Donc, avec le scope, il relève évidemment, je pense, sur Docker. Mais si c'est un contenu pas basé sur Docker, on ne peut pas utiliser le scope directement, mais les choses internales, le tcp command line tool peut être directement utilisé. Merci.