Débridez les performances de vos applications avec Chronicle Queue
Networxx (intro et fin)
1. #DevoxxFR #networxx
Consignes de sécurité
• Merci de vous assoir en priorité devant
• Et plutôt regroupés (des perturbations sont à prévoir)
• Vos accompagnateurs vont bientôt vous expliquer comment utiliser
les coupons de survie qui se trouvent sur chacun de vos sièges
NETWORXX Airlines
4. #DevoxxFR #networxx
@cyrdup
• Approche ‘Pit of success’
• Parle (trop) fort
• Code depuis (trop) longtemps
• Regarde (trop) sous le capot
• Poste (trop) peu sur son blog
• Aime (trop) le multithread
• Contributeur OSS (NFluent, Michonne,
Rafting)
6. #DevoxxFR #networxx
@tpierrain
• use case driven
(« range ce marteau en or ! »)
• Aime comprendre et donner du sens
à ce qu’il fait (métier, technique)
• Mélange les genres et les cultures
(DDD & low latency par exemple)
• Organise des trucs de geeks le midi
• A joué en prod avec beaucoup de
MoM ;-)
15. #DevoxxFR #networxx
Briefing
Situation d’urgence:
Notre client « Tapiocorp », spécialisé dans l’agriculture
biologique, à des gros problèmes de performance sur son
site Web
L’hypothèse la plus probable à cette heure est une cyber
attaque organisée par un groupe terroriste (probablement
financé par un géant de l’agro-alimentaire)
Des ramifications politiques sont à envisager…
16. #DevoxxFR #networxx
Les infos disponibles
• Un système utilisant les
dernières technologies
• Conçu et développé par les
meilleurs experts
• Un frontal web masquant une
plate forme back office de
pointe
19. #DevoxxFR #networxx
Briefing
Situation d’urgence:
Notre client « Tapiocorp », spécialisé dans l’agriculture biologique,
à des gros problèmes de performance sur son site Web
L’hypothèse la plus probable à cette heure est une cyber attaque
organisée par un groupe terroriste (probablement financé par un
géant de l’agro-alimentaire)
Des ramifications politiques sont à envisager…
En fait, c’est juste très lent, mais pourquoi…?
45. #DevoxxFR #networxx
TCP
TCP = Transmission Control Protocol
Orienté connexion et garantie de transmission (dans l’ordre)
Bidirectionnel et full duplex
‘Good citizenship’
TCP
56. #DevoxxFR #networxx
‘A travers les réponses à ces questions,
nous verrons ensemble pourquoi la
maîtrise de toutes les couches réseaux
doit faire partie de la boite à outils de
tout bon dev full-stack’
61. #DevoxxFR #networxx
‘Pourquoi Google ne respecte t-il pas le
protocole TCP ? Qui est Naggle, et pourquoi
garde t-il mes données en otage ? UDP est-il un
protocole voyou ? Pourquoi les fichiers ne se
transmettent-ils jamais à la vitesse attendue ?’
74. #DevoxxFR #networxx
Wrap up
Echanges fiables sur medium non-fiable
Grace à :
• Numérotation paquet
•Acquittements
•Flow control
•Congestion control
TCP
78. #DevoxxFR #networxx
Propositions
A. Je transforme mon monolithe en
micro-services
B. Je regarde les flux front
C. Je regarde les flux backend
D. La réponse D
80. #DevoxxFR #networxx
Propositions
A. Je transforme mon monolithe en
micro-services
B. Je regarde les flux front
C. Je regarde les flux backend
D. La réponse D
84. #DevoxxFR #networxx
Peu de données
échangées mais un
temps de réponse
important
1 requête client
=>
des centaines de
petites requêtes sur
les services back
95. #DevoxxFR #networxx
Chatty vs. Chunky
Batchons nos requêtes pour éviter de payer des frais de
latence réseau systématiques
SVC
1
SVC
3
SVC
2
…
Back end web
(PHP)
Chatty
SVC
1
SVC
3
SVC
2
…
Back end web
(PHP)
Chunky
103. #DevoxxFR #networxx
Propositions
A. Je m’en fout, tant qu’il y a des
monades…
B. Oui, le batching rajoute de la latence
C. Non, pas forcément
D. La réponse D
104. #DevoxxFR #networxx
Réponse
A. Je m’en fout, tant qu’il y a des
monades…
B. Oui, le batching rajoute de la latence
C. Non, pas forcément
D. La réponse D
116. #DevoxxFR #networxx
Budget latence
Le passage par le kernel est une grosse
partie du budget latence sur le LAN
40% 40%
6%
Serialization: 2%
Ethernet Switch: 4%
6%
User space
Kernel I/O $ $ $
User space
Kernel I/O$ $ $
LAN
117. #DevoxxFR #networxx
Smart batching
« … when batching is done correctly,
not only does it increase throughput,
it can also reduce average latency
and keep it consistent. »
Martin THOMPSON
121. #DevoxxFR #networxx
Kernel bypass
Comme le passage par le kernel coute cher…
Serialization: 2%
Ethernet Switch: 4%
User space
Kernel I/O
User space
Kernel I/O
LAN
122. #DevoxxFR #networxx
Kernel bypass
… on évite de passer par le kernel
(nécessite des NICs spécifiques)
User space
Kernel I/O
User space
Kernel I/O
LAN
126. #DevoxxFR #networxx
Problème #2 - La taille des messages
« SOAP XML ? je pense qu’on peut
trouver mieux les gars…
Allez, on s’active ! »
Ethan HUNT
140. #DevoxxFR #networxx
Meilleur découplage (topic based)
Absorbe la charge (de distribution)
Load Balancing (des consommateurs)
Scenarii de résilience (FT)
Gère les connexions
Un bon MoM, ça peut toujours servir !
141. #DevoxxFR #networxx
MoM classique (*MQ)
Broker based PubSub (fan-out)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
topic A topic A
TCP
142. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
143. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
144. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
145. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
146. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
147. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A
topic A topic A
TCP
148. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
149. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
150. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
151. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A topic A
TCP
topic A
152. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
153. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
154. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
155. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A
topic A topic A
TCP
topic A
156. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A topic A
TCP
157. #DevoxxFR #networxx
MoM classique (*MQ)
Subscriber
1
Broker
Broker
Broker
(cluster)
Publisher
Subscriber
2
Subscriber
3
Broker based PubSub (fan-out)
topic A topic A
TCP
183. #DevoxxFR
8 FALLACIES OF
DISTRIBUTED SYSTEMS
1. The network is reliable.
2. Latency is zero.
3. Bandwidth is infinite.
4. The network is secure.
5. Topology doesn't change.
6. There is one administrator.
7. Transport cost is zero.
8. The network is homogeneous.
184. #DevoxxFR
8 FALLACIES OF
DISTRIBUTED SYSTEMS
1. The network is reliable.
2. Latency is zero.
3. Bandwidth is infinite.
4. The network is secure.
5. Topology doesn't change.
6. There is one administrator.
7. Transport cost is zero.
8. The network is homogeneous.