1
© OCTO 2014© OCTO 2014
Code Réactif et persistance versionnée
Les nouvelles architectures
2
© OCTO 2014
Philippe PRADOS
Manager équipe « Architecture Réactive »
+PhilippePrados
@pprados
in/pprados/fr
BrownBagLunch.fr
Qui suis-je ?
Conférences:
Solution Linux
MISC
Devoxx
PAUG
…
3
© OCTO 2014
La persistance
permanente
Code réactif
ConstatSommaire :
4
© OCTO 2014
Comprendre les performances
Vitesse processeurs (nanoseconde)
Exécution d’une instruction typique 1 ns = 1/1 000 000 000 sec
Mutex lock/unlock 25
Envoi de 2Ko sur réseau 1Gps 20 000
Lire 1MB séquentiellement en RAM 250 000
Lire 1MB séquentiellement du disque 20 000 000
Envoi d’un paquet vers USA et retour 150 millisecondes = 150 000 000
4
Équivalent humain (seconde)
Exécution d’une instruction typique 1 seconde
Mutex lock/unlock ½ minute
Envoi de 2Ko sur réseau 1Gps 5 heures ½
Lire 1MB séquentiellement en RAM 3 jours
Lire 1MB séquentiellement du disque 6 mois ½
Envoi d’un paquet vers USA et retour 5 ans
5
© OCTO 2014
La performance et la scalabilité ne
sont plus des OPTIONS
Il y a 10 ans Maintenant
Nombre de serveurs 10 1000 (on demand)
Temps de réponse Secondes Millisecondes
Interruption de service Heures Jamais
Volume de donnée GBs TBs -> PBs
Traitements Gros, rare, batch Unitaires, nombreux
HTTP HTTP/1.1,
Mode texte
HTTP/2.x,
Mode binaire
Réseau Cablé, stable Mobile, Instable
Clients Workstation Multiples
Sessions d’utilisation Longue Courte
Ou permanente !
5
6
© OCTO 2014
Délais Réaction de l’utilisateur
0-100ms Instantané
100-300ms Léthargique
300-1000ms La machine travaille…
1s+ Switch mental
10s Je reviens plus tard
Perception des utilisateurs
* Latence moyenne en 3G : 150ms, 4G: 65ms
7
© OCTO 2014
Quatre périodes de l’informatique
7
1970 1990 2010 2020
Pers
.
Langages.Prg.App.Quoi
.
On ArchiveOn Modélise
SMALLTALK
C++
JAVA
C#
HASKELL
SCALA
F#
Clojure
R ?
COBOL
FORTRAN
BASIC
PASCAL
C
Procédure
Modèle impératif
On calcule
SQL
On Prédit On e
Modèle objet
Modèle
fonctionnel
Modèle
statistique ?
Mod
Méthode Équation Probabilité ? Quanti
NSA
ORM (JPA)
NoSQL,
DBMem
TSDB ? Giga clo
Interf.
Ligne de
commandes
Fenêtres Web Objets ? ???
8
© OCTO 2014
Code réactif non bloquant
Persistance orienté flux
Deux stratégies à appliquer maintenant
9
© OCTO 2014
Code réactif
10
© OCTO 2014
Reactive Manifesto (2013)
Réactif aux
évènements
• Dirigé par les
évènements
Réactif à la
charge
• Scalabilité
plutôt que
gérer les
contentions
Réactif aux
erreurs
• Système
résilient à tous
les niveaux
Réactif aux
utilisateurs
• Garantit un
délai de
réponse
10
http://www.reactivemanifesto.org/
11
© OCTO 2014
Concurrence des traitements
A2 A3
B1 B2
Thread 1
Thread 2
Concurrence
Attente I/O
Approche « probabiliste » (actuelle)
Calcul
C1 B2
Thread
Unique
No blocking IO
B1 A2
A1 B1 C1 A2 B2
C2
C2A3
A3
C2C1
A1
A1
Approche Réactive (Optimise la CPU)
Attente I/O
12
© OCTO 2014
Depuis 20 ans, on parie que la concurrence sera optimale
Ce n’est jamais le cas sur les serveurs
Utilisons une approche déterministe et réactive
Gain notable de performance
Multithreads : un pari permanant
13
© OCTO 2014
N’utiliser que des HARDWARE Threads
Couche Evolution
OS Non blocking IO
Drivers Asynchrone (NO-JDBC)
Protocoles HTTP 2.0, Web Sockets
Frameworks,
Composants
Play, Node.js, Netty
Akka, JMS, Java8
Langages
Générateur, Continuation
Co-routine, Async / Await,
Functional
14
© OCTO 2014
La persistance
permanente
15
© OCTO 2014
Évolution des besoins de Persistance
Avant
• Seul le présent est important
• Les données sont modifiées pour refléter leur état présent
• Chaque modification fait disparaître l’état précédent
Maintenant
• L’histoire des données est important
• Rien ne disparaît
• Le flux des modifications porte des pépites business non exploitées
• Les archives deviennent numériques
Demain
• Prédiction : Analyser le passé des données pour prédire leur futur
DELETE/INSERT/UPDATE
INSERT ONLY
DATA LEARNING
>>
15
16
© OCTO 2014
Persistance : 2 concepts
État
• La vision des données à
l’instant
• Accès instantané
• Géré en mémoire
Flux
• Suite des modifications
• Intégralement rejouable
• Persistant
• Reconstitution de l’état
16
17
© OCTO 2014
Fraîcheur des données
17
Chaude
Cache en RAM
++ Reactivité
Tiède
DB snapshot
++ Réactivité
+ Volume
Froide
Big Data, Flux
++ Data
+ Requêtes longues
BATCH
18
© OCTO 2014
La quatrième dimension est dans le flux
La persistance de l’état n’est pas importante
S’il est vivant quelque part
S’il est possible de le reconstituer
Persistance limitée aux messages de modification
Sauvegarde du flux
Ajout à la fin d’un fichier de transactions (AOF)
18
La base de donnée n’est qu’une vue des logs de modifications
19
© OCTO 2014
5mn
30mn 1j
1 mois
1 an
Un logiciel sans passé n’a pas
d’avenir
19
20
© OCTO 2014
21
© OCTO 2014
Questions ?
22
© OCTO 2014
Conseil en Architecture et Management des SI
Un cabinet à taille humaine
16 ans
20 M€ de CA en 2013
Un positionnement Grands Comptes
20% de croissance
3 filiales : au Maroc, en Suisse,
au Brésil
23
© OCTO 2014

Solution linux 2014 - Code réactif et persistance versionée

  • 1.
    1 © OCTO 2014©OCTO 2014 Code Réactif et persistance versionnée Les nouvelles architectures
  • 2.
    2 © OCTO 2014 PhilippePRADOS Manager équipe « Architecture Réactive » +PhilippePrados @pprados in/pprados/fr BrownBagLunch.fr Qui suis-je ? Conférences: Solution Linux MISC Devoxx PAUG …
  • 3.
    3 © OCTO 2014 Lapersistance permanente Code réactif ConstatSommaire :
  • 4.
    4 © OCTO 2014 Comprendreles performances Vitesse processeurs (nanoseconde) Exécution d’une instruction typique 1 ns = 1/1 000 000 000 sec Mutex lock/unlock 25 Envoi de 2Ko sur réseau 1Gps 20 000 Lire 1MB séquentiellement en RAM 250 000 Lire 1MB séquentiellement du disque 20 000 000 Envoi d’un paquet vers USA et retour 150 millisecondes = 150 000 000 4 Équivalent humain (seconde) Exécution d’une instruction typique 1 seconde Mutex lock/unlock ½ minute Envoi de 2Ko sur réseau 1Gps 5 heures ½ Lire 1MB séquentiellement en RAM 3 jours Lire 1MB séquentiellement du disque 6 mois ½ Envoi d’un paquet vers USA et retour 5 ans
  • 5.
    5 © OCTO 2014 Laperformance et la scalabilité ne sont plus des OPTIONS Il y a 10 ans Maintenant Nombre de serveurs 10 1000 (on demand) Temps de réponse Secondes Millisecondes Interruption de service Heures Jamais Volume de donnée GBs TBs -> PBs Traitements Gros, rare, batch Unitaires, nombreux HTTP HTTP/1.1, Mode texte HTTP/2.x, Mode binaire Réseau Cablé, stable Mobile, Instable Clients Workstation Multiples Sessions d’utilisation Longue Courte Ou permanente ! 5
  • 6.
    6 © OCTO 2014 DélaisRéaction de l’utilisateur 0-100ms Instantané 100-300ms Léthargique 300-1000ms La machine travaille… 1s+ Switch mental 10s Je reviens plus tard Perception des utilisateurs * Latence moyenne en 3G : 150ms, 4G: 65ms
  • 7.
    7 © OCTO 2014 Quatrepériodes de l’informatique 7 1970 1990 2010 2020 Pers . Langages.Prg.App.Quoi . On ArchiveOn Modélise SMALLTALK C++ JAVA C# HASKELL SCALA F# Clojure R ? COBOL FORTRAN BASIC PASCAL C Procédure Modèle impératif On calcule SQL On Prédit On e Modèle objet Modèle fonctionnel Modèle statistique ? Mod Méthode Équation Probabilité ? Quanti NSA ORM (JPA) NoSQL, DBMem TSDB ? Giga clo Interf. Ligne de commandes Fenêtres Web Objets ? ???
  • 8.
    8 © OCTO 2014 Coderéactif non bloquant Persistance orienté flux Deux stratégies à appliquer maintenant
  • 9.
  • 10.
    10 © OCTO 2014 ReactiveManifesto (2013) Réactif aux évènements • Dirigé par les évènements Réactif à la charge • Scalabilité plutôt que gérer les contentions Réactif aux erreurs • Système résilient à tous les niveaux Réactif aux utilisateurs • Garantit un délai de réponse 10 http://www.reactivemanifesto.org/
  • 11.
    11 © OCTO 2014 Concurrencedes traitements A2 A3 B1 B2 Thread 1 Thread 2 Concurrence Attente I/O Approche « probabiliste » (actuelle) Calcul C1 B2 Thread Unique No blocking IO B1 A2 A1 B1 C1 A2 B2 C2 C2A3 A3 C2C1 A1 A1 Approche Réactive (Optimise la CPU) Attente I/O
  • 12.
    12 © OCTO 2014 Depuis20 ans, on parie que la concurrence sera optimale Ce n’est jamais le cas sur les serveurs Utilisons une approche déterministe et réactive Gain notable de performance Multithreads : un pari permanant
  • 13.
    13 © OCTO 2014 N’utiliserque des HARDWARE Threads Couche Evolution OS Non blocking IO Drivers Asynchrone (NO-JDBC) Protocoles HTTP 2.0, Web Sockets Frameworks, Composants Play, Node.js, Netty Akka, JMS, Java8 Langages Générateur, Continuation Co-routine, Async / Await, Functional
  • 14.
    14 © OCTO 2014 Lapersistance permanente
  • 15.
    15 © OCTO 2014 Évolutiondes besoins de Persistance Avant • Seul le présent est important • Les données sont modifiées pour refléter leur état présent • Chaque modification fait disparaître l’état précédent Maintenant • L’histoire des données est important • Rien ne disparaît • Le flux des modifications porte des pépites business non exploitées • Les archives deviennent numériques Demain • Prédiction : Analyser le passé des données pour prédire leur futur DELETE/INSERT/UPDATE INSERT ONLY DATA LEARNING >> 15
  • 16.
    16 © OCTO 2014 Persistance: 2 concepts État • La vision des données à l’instant • Accès instantané • Géré en mémoire Flux • Suite des modifications • Intégralement rejouable • Persistant • Reconstitution de l’état 16
  • 17.
    17 © OCTO 2014 Fraîcheurdes données 17 Chaude Cache en RAM ++ Reactivité Tiède DB snapshot ++ Réactivité + Volume Froide Big Data, Flux ++ Data + Requêtes longues BATCH
  • 18.
    18 © OCTO 2014 Laquatrième dimension est dans le flux La persistance de l’état n’est pas importante S’il est vivant quelque part S’il est possible de le reconstituer Persistance limitée aux messages de modification Sauvegarde du flux Ajout à la fin d’un fichier de transactions (AOF) 18 La base de donnée n’est qu’une vue des logs de modifications
  • 19.
    19 © OCTO 2014 5mn 30mn1j 1 mois 1 an Un logiciel sans passé n’a pas d’avenir 19
  • 20.
  • 21.
  • 22.
    22 © OCTO 2014 Conseilen Architecture et Management des SI Un cabinet à taille humaine 16 ans 20 M€ de CA en 2013 Un positionnement Grands Comptes 20% de croissance 3 filiales : au Maroc, en Suisse, au Brésil
  • 23.

Notes de l'éditeur

  • #14 OS: Depuis 1999, Linux propose des API asychrones pour le réseau. Plusieurs implémentations au cours du temps. http://www.kegel.com/c10k.html#nb.edge Implémentation by RedHat en 2006 Drivers: Peu de drivers officiels des fournisseurs
  • #15 PPR - Digitalisation – Nouveaux usages / performances / nouvelles architectures Emergence du scala / le pourquoi Point de vue Octo JEE legacy ? Remise a plat du modèle Reprendre la main sur la gestion des ressources
  • #17 Le diable est dans l’état, ou plutôt l’état mutable. Possibilité de reconstituer l’état après un changement majeur du modèle.
  • #18 R
  • #19 Analogie avec la comptabilité : le solde est calculable à partir des écritures.
  • #24 PPR