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

23
1 © OCTO 2014 © OCTO 2014 Code Réactif et persistance versionnée Les nouvelles architectures

description

Les nouvelles approches de développement Web permettant d'intégrer les nouveaux usages.

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

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

1

© OCTO 2014 © OCTO 2014

Code Réactif et persistance versionnée

Les nouvelles architectures

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

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

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

3

© OCTO 2014

La persistance

permanente

Code réactif

ConstatSommaire :

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

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

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

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

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

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

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

7

© OCTO 2014

Quatre périodes de l’informatique

7

1970 1990 2010 2020

Pers .

Lan

gag

es.

Prg

.A

pp

.Q

uo

i

. 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 esp

Modèle objetModèle

fonctionnel

Modèle

statistique ?Modèle

Méthode Équation Probabilité ? Quantique s

NSA

ORM (JPA)NoSQL,

DBMemTSDB ? Giga clo

Inte

rf.

Ligne de

commandesFenêtres Web Objets ? ???

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

8

© OCTO 2014

Code réactif non bloquant

Persistance orienté flux

Deux stratégies à appliquer maintenant

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

9

© OCTO 2014

Code réactif

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

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/

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

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

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

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éactiveGain notable de performance

Multithreads : un pari permanant

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

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

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

14

© OCTO 2014

La persistance

permanente

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

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

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

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

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

17

© OCTO 2014

Fraîcheur des données

17

ChaudeCache en RAM++ Reactivité

TièdeDB snapshot++ Réactivité

+ Volume

FroideBig Data, Flux++ Data

+ Requêtes longues

BATCH

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

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

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

19

© OCTO 2014

5mn30mn 1j

1 mois1 an

Un logiciel sans passé n’a pas

d’avenir

19

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

20

© OCTO 2014

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

21

© OCTO 2014

Questions ?

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

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

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

23

© OCTO 2014