SlideShare une entreprise Scribd logo
1  sur  104
Télécharger pour lire hors ligne
Le futur d’Apache Cassandra™
DuyHai DOAN
Consultant freelance Java/Cassandra-Datastax/AWS/<rayer-la-mention-inutile>
Ex-évangéliste Apache Cassandra™
Ordre du jour
• La roadmap pour Apache Cassandra™ 4.0
• La fragmentation de l’écosystème
• La menace du Cloud
• L’éternel débat OSS vs Propriétaire
2
3
La roadmap 4.0
Petit rappel historique des releases
• 03/09/2013: Cassandra 2.0 (Lightweight transactions)
• 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature)
• 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON)
• 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré-
implémentés,…)
4
Petit rappel historique des releases
• 03/09/2013: Cassandra 2.0 (Lightweight transactions)
• 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature)
• 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON)
• 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré-
implémentés,…)
• Tick Tock release
5
Tick-Tock release
• Release mensuel
• 1 mois pour introduire de nouvelles fonctionnalités
• 1 mois pour corriger les bugs
• Objectifs
• éviter l’effet tunnel des fonctionnalités qui s’accumulent pendant 6 mois/1 an sans feedback
des utilisateurs
• feedback plus rapide de la communauté
• Résultat
• catastrophe
• peu voir pas de feedback
• des nouvelles fonctionnalités trop rapide donc instables
6
Tick-Tock release
• Qu’est ce qui a péché ?
• les versions mises en production sont toujours la 2.1/2.2
• sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 …
• personne ne se mouille pour tester les nouvelles fonctionnalités
7
Tick-Tock release
• Qu’est ce qui a péché ?
• les versions mises en production sont toujours la 2.1/2.2
• sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 …
• personne ne se mouille pour tester les nouvelles fonctionnalités
• Prémices des soucis à venir …
• idéalisation excessive de la communauté
• OSS = 100% des utilisateurs viennent se servir pour x% qui contribuent
8
Tick-Tock release
• Qu’est ce qui a péché ?
• les versions mises en production sont toujours la 2.1/2.2
• sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 …
• personne ne se mouille pour tester les nouvelles fonctionnalités
• Prémices des soucis à venir …
• idéalisation excessive de la communauté
• OSS = 100% des utilisateurs viennent se servir pour x% qui contribuent
• Qu’est ce contribuer ?
• publier de nouveau code
• tester et donner du feedback
• documentation, blog post, StackOverflow, évangélisation
9
Petit rappel historique des releases
• 03/09/2013: Cassandra 2.0 (Lightweight transactions)
• 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature)
• 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON)
• 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré-
implémentés,…)
• Tick Tock release
• 02/11/2016: Jonathan Ellis annonce un désengagement relatif de Datastax vis à vis d’Apache
Cassandra™
10
Petit rappel historique des releases
• 23/06/2017: Cassandra 3.11 (stabilisations et nombreux bug fixs)
• ??/??/????: Cassandra 4.0
11
Petit rappel historique des releases
• 12/04/2010: Cassandra 0.6
• 02/11/2016: Désengagement relatif de Datastax (Cassandra 3.x)
• 23/06/2017: Cassandra 3.11
• 2018
12
L’ère Datastax
L’ère auto-gestion
Roadmap 4.0 (committed)
• CASSANDRA-9425: Make node-local schema fully immutable
• CASSANDRA-12229 : Move streaming to non-blocking IO and netty
• CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas
13
Incremental repair
14
Incremental repair
15
Roadmap 4.0 (committed)
• CASSANDRA-9425: Make node-local schema fully immutable
• CASSANDRA-12229 : Move streaming to non-blocking IO and netty
• CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas
• CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs
• CASSANDRA-7396: Support for selecting Map values and Set elements
16
CASSANDRA-7396: Support for selecting Map values and Set elements
• Map dans Cassandra == SortedMap<K,V>
• Syntaxe pour les sets
• Et les lists ???
17
SELECT map[key] FROM table …
SELECT map[key1…key2] FROM table …
SELECT set[key] FROM table …
Roadmap 4.0 (committed)
• CASSANDRA-9425: Make node-local schema fully immutable
• CASSANDRA-12229 : Move streaming to non-blocking IO and netty
• CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas
• CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs
• CASSANDRA-7396: Support for selecting Map values and Set elements
• CASSANDRA-7461: Add support for arithmetic operators
• CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add
duration type)
18
CASSANDRA-11936: Add support for + and – operations on dates
• Types d’opérations supportés:
• date + duration
• date - duration
• timestamp + duration
• timestamp - duration
• Utilisation
19
SELECT … FROM table WHERE date > now() - 2h
Roadmap 4.0 (committed)
• CASSANDRA-9425: Make node-local schema fully immutable
• CASSANDRA-12229 : Move streaming to non-blocking IO and netty
• CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas
• CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs
• CASSANDRA-7396: Support for selecting Map values and Set elements
• CASSANDRA-7461: Add support for arithmetic operators
• CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add
duration type)
• CASSANDRA-7622: Virtual tables
20
CASSANDRA-7622: Virtual tables
• Tables prédéfinies dans keyspace system_info:
• table_stats
• ring_state
• compaction_stats
• settings
• Utilisation
21
SELECT * FROM system_info.settings WHERE writable = True;
setting | value | writable
--------------------------------+-------+----------
batch_size_fail_threshold_in_kb | 50 | True
batch_size_warn_threshold_in_kb | 5 | True
cas_contention_timeout_in_ms | 1000 | True
…
CASSANDRA-7622: Virtual tables
• Utilisation (suite)
22
SELECT keyspace_name, table_name, metric, median, p99th FROM system_info.table_stats
WHERE keyspace_name = 'system' and p99th > 0;
keyspace_name | table_name | metric | median | p99th
--------------+--------------------+---------------------------------+------------+------------
system | batches | rangeLatency | 1.5232e+05 | 3.7902e+05
system | compaction_history | estimatedColumnCountHistogram | 6 | 7
system | compaction_history | estimatedPartitionSizeHistogram | 124 | 149
system | local | estimatedColumnCountHistogram | 17 | 310
system | local | estimatedPartitionSizeHistogram | 215 | 6866
Roadmap 4.0 (committed)
• CASSANDRA-9425: Make node-local schema fully immutable
• CASSANDRA-12229 : Move streaming to non-blocking IO and netty
• CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas
• CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs
• CASSANDRA-7396: Support for selecting Map values and Set elements
• CASSANDRA-7461: Add support for arithmetic operators
• CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add
duration type)
• CASSANDRA-7622: Virtual tables
• CASSANDRA-13289: Ideal consistency level
• CASSANDRA-14404: Transient replica & Cheap Quorum
23
Rappel sur les consistency level
24
B A A
B A A
Read ONE: A
data replication in progress …
Write ONE: B
ack
Rappel sur les consistency level
25
B A A
B A A
Read QUORUM: A
data replication in progress …
Write ONE: B
ack
Rappel sur les consistency level
26
B A A
B A A
Read ALL: B
data replication in progress …
Write ONE: B
ack
Rappel sur les consistency level
27
B B A
B B A
Read QUORUM: B
data replication in progress …
Write QUORUM: B
ack
RF = 3, Write QUORUM, Read QUORUM
Node 3Node 2Node 1
Transient replica: idées
28
un-repaired data
repaired data
Node 3Node 2Node 1
Transient replica: idées
29
un-repaired data
repaired data
Full replica Full replica Transient replica
Node 3Node 2Node 1
Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM
30
Full replica Full replica Transient replica
2/3 ✓
Node 3Node 2Node 1
Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM
31
Full replica Full replica Transient replica
2/3 ✓
Node 3Node 2Node 1
Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM
32
Full replica Full replica Transient replica
2/3 ✓
Node 3Node 2Node 1
Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM
33
Full replica Full replica Transient replica
2/3 ✓
✖
Node 3Node 2Node 1
Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM
34
Full replica Full replica Transient replica
2/3 ✓
✖
Node 3Node 2Node 1
Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM
35
Full replica Full replica Transient replica
2/3 ✓
✖
Node 3Node 2Node 1
Transient replica: scénario haute dispo ONE/LOCAL_ONE
36
Full replica Full replica Transient replica
1/3 ✓
✖✖
Node 3Node 2Node 1
Transient replica: scénario haute dispo ONE/LOCAL_ONE
37
Full replica Full replica Transient replica
1/3 ✓
✖✖
Node 3Node 2Node 1
Transient replica: scénario haute dispo ONE/LOCAL_ONE
38
Full replica Full replica Transient replica
0/3 ✗
✖✖ ???
☠
Transient replica: scénario haute dispo ONE/LOCAL_ONE
39
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
40
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
41
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
• incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate)
42
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
• incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate)
• très dûr à raisonner sans un doctorat en informatique distribué
43
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
• incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate)
• très dûr à raisonner sans un doctorat en informatique distribué
• trous dans la raquette pour le cas ONE/LOCAL_ONE
44
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
• incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate)
• très dûr à raisonner sans un doctorat en informatique distribué
• trous dans la raquette pour le cas ONE/LOCAL_ONE
• introduit une dissymétrie parmi les nœuds
45
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• trop spécifique au gros clusters/multi-DC (spécifique Apples)
• incompatible par nature avec vues matérialisées et 2nd index
• incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate)
• très dûr à raisonner sans un doctorat en informatique distribué
• trous dans la raquette pour le cas ONE/LOCAL_ONE
• introduit une dissymétrie parmi les nœuds
• impact énorme sur la base de code
46
Roadmap 4.0 (committed)
• CASSANDRA-14404: Transient replica & Cheap Quorum
• état d’avancement
47
Roadmap 4.0 (not-committed)
• CASSANDRA-9754: Making index friendlier for large partitions (awaiting feedback 17/02/2017)
• CASSANDRA-12345 : Gossip 2.0 (spécifique Apple, 31/08/2016)
• CASSANDRA-10540: Range-aware compaction (dernier échange 04/09/2018)
• CASSANDRA-13474: Pluggable storage engine (spécifique Instagram)
48
CASSANDRA-13474: Pluggable storage engine
• Quoi ?
• proposer différentes implémentations pour le moteur de stockage bas niveau
• actuellement, le moteur date du refactoring 3.0 et est adapté à l’abstraction
Map<K, SortedMap<K,V>>
• but == intégrer RocksDB comme moteur de stockage alternatif
• Comment faire ?
• commencer à refactorer tout le code pour isoler les niveaux d’abstraction
49
Moteur 1 Moteur 2
Abstraction/Interface/API
CASSANDRA-13474: Pluggable storage engine
• Etat d’avancement
50
CASSANDRA-13474: Pluggable storage engine
• Pour
• moteurs adaptés à des besoins différents
• force à refactorer le code proprement
• Contre
• problème à l’origine spécifique à Instagram
• chantier titanesque (GA = 2020 au mieux)
• risque élevé inhérent à tout refacto (cf refacto 3.0 et régression de performance)
• quid du support des fonctionnalités spécifiques au modèle Map<K,SortedMap<K,V>> ?
• UDT
• collections (map, set, lists)
• counters
• static columns
• …
51
CASSANDRA-13474: Pluggable storage engine
• Contre (suite)
• risque d’aboutir à une matrice de fonctionnalités gruyère
• devoir gérer RockDB (compaction, ttl …)
• devoir gérer différent languages (C++ pour RocksDB par ex)
52
Fonc.1 Fonc.2 Fonc.3 Fonc.4 Fonc.5 Fonc.6 Fonc.7
Moteur1
✓ ✓ ✓ ✓ ✓ ✗ ✗
Moteur2
✗ ✗ ✓ ✓ ✓ ✓ ✗
Moteur3
✓ ✓ ✓ ✗ ✗ ✓ ✓
Moteur4
✗ ✗ ✗ ✓ ✓ ✓ ✓
Roadmap 4.0 (not-committed)
• CASSANDRA-9754: Making index friendlier for large partitions (awaiting feedback 17/02/2017)
• CASSANDRA-12345 : Gossip 2.0 (spécifique Apple, 31/08/2016)
• CASSANDRA-10540: Range-aware compaction (dernier échange 04/09/2018)
• CASSANDRA-13474: Pluggable storage engine (spécifique Instagram)
• CASSANDRA-13001: Pluggable slow query log/handling (dernier échange 21/03/2018)
• CASSANDRA-12106: Ability to blacklist a bad partition (dernier échange 07/09/2018)
• CASSANDRA-14395: Cassandra management process (clash Netflix vs TLP)
53
Roadmap 4.0 conclusion
• Quelques fonctionnalités intéressantes
54
Roadmap 4.0 conclusion
• Quelques fonctionnalités intéressantes
• Beaucoup de tickets encore ouverts/en attente de revue
55
Roadmap 4.0 conclusion
• Quelques fonctionnalités intéressantes
• Beaucoup de tickets encore ouverts/en attente de revue
• Beaucoup de demande de feedback à la communauté, peu de retour/d’engagements
56
Roadmap 4.0 conclusion
• Quelques fonctionnalités intéressantes
• Beaucoup de tickets encore ouverts/en attente de revue
• Beaucoup de demande de feedback à la communauté, peu de retour/d’engagements
• Il est difficile de contribuer du code, encore plus pour faire du code-review sur les nouvelles
contributions et surtout la QA
57
58
La fragmentation de l’éco-système
Les acteurs en présence
• OSS Cassandra
• Datastax Entreprise (DSE)
• ScyllaDB (le clone malhonnête)
• Fork interne chez Apple (tends à disparaître si Apple prend le contrôle du projet OSS)
• Fork interne chez Instagram (disparaitra si Pluggable Storage Engine fini complètement)
• Elassandra (petit produit de chez nous Cocorico)
• YugaByte
• CosmoDB
59
OSS Cassandra
• On ne le présente plus
• Continuera à vivre quoiqu’il arrive
• Doutes sur:
• rythme des nouvelles innovations
• pertinence des nouvelles fonctionnalités (centrées sur Apple/poweruser seulement ?)
• équilibre dev vs ops
60
Datastax Entreprise (DSE)
• Core OSS Cassandra
• + features propriétaires (NodeSync (continuous repair), InMemory, BackPressure, Thread Per Core)
• + intégrations propriétaires:
• Apache Spark (haute dispo et bientôt masterless)
• Apache Solr (haute dispo et déjà masterless)
• Graphe avec Apache Tinkerpop
• Divergera de + en +
• Datastax reprendra certainement des nouvelles fonctionnalités contribuées par d’autres à OSS
Cassandra pour les remettre dans DSE
61
ScyllaDB
• Copier-coller de Cassandra en C++
• Le plus détestable car marketing agressif et mensonger (drop-in replacement de Cassandra, faux)
• Marché de niche, seule différence = performance mais le Thread Per Core de Datastax change la
donne
• Communauté quasi inexistante
• Risques de bugs/régression à cause de la ré-écriture en C++ (question de QA)
62
Forks interns chez Apple et Instagram
• Fonctionnalités répondant aux besoins spécifiques
• Vont converger avec OSS Cassandra, ou pas …
63
Elassandra (made in France)
• Mariage d’Elastic Search et OSS Cassandra
• Données brutes dans Cassandra, index dans ES
• Tabasse Elastic Search en terme de scalabilité
• on peut enfin stocker ses données dans une vrai base de données
• on peut resharder comme on veut!
• architecture masterless de Cassandra !!!
• Donne un gros boost à Cassandra en terme d’outillage de recherche
• toute l’API d’ES
• tout l’écosystème d’ES (ELK) disponible
• Mais …
• projet d’un seul homme (Vincent Royer) …
• … qui n’est ni committer Cassandra ni Elastic Search
• … exploite quelques détails d’implémentation de Cassandra
• donc à la merci de tout changement d’architecture de ces 2 produits
64
YugaByte
• RocksDB fortement modifié comme storage engine
• supporte l’API CQL de Cassandra
• couche distribuée utilisant Raft
• parasitisme d’API
65
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
66
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
67
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
68
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
69
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
70
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
71
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
• Cassandra CQL
72
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
• Cassandra CQL
• CouchBase N1QL
73
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
• Cassandra CQL
• CouchBase N1QL
• ArangoDB AQL
74
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
• Cassandra CQL
• CouchBase N1QL
• ArangoDB AQL
• ElasticSearch SQL
75
CosmoDB
• parasitisme d’API par Grosoft
• supporte l’API CQL de Cassandra …
• … ainsi que celui de Mongo
• resté encore à l’âge de pierre avec son API JSON …
• … en 2018 …
• … alors que tout le monde est passé en language de requêtage pseudo SQL
• Apache Hive/Impala/Apache Drill
• Spark SQL
• Cassandra CQL
• CouchBase N1QL
• ArangoDB AQL
• ElasticSearch SQL
76
77
noSQLWARS
E P I S O D E I
Historique de l’open-source
78
Rythme d’innovation
Temps
2005-2006
Open-source hipster/à la pépère/artisanal Open-source des startups californiennes/industriel
La période des startups
79
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
La période des startups
80
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
• ☞ Open Source !!!
• bénéficie d’une bonne image auprès des développeurs naïfs
La période des startups
81
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
• ☞ Open Source !!!
• bénéficie d’une bonne image auprès des développeurs naïfs
• ouvert donc transparent/auditable donc peu de risque de se lier
La période des startups
82
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
• ☞ Open Source !!!
• bénéficie d’une bonne image auprès des développeurs naïfs
• ouvert donc transparent/auditable donc peu de risque de se lier
• gratuit !!! ! ! !
La période des startups
83
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
• ☞ Open Source !!!
• bénéficie d’une bonne image auprès des développeurs naïfs
• ouvert donc transparent/auditable donc peu de risque de se lier
• gratuit !!! ! ! !
• contributions externes (de la communauté), enfin soi-disant …
La période des startups
84
• but des startups technologique == gagner de l’argent (pardon pour le truisme)
• comment imposer une nouvelle technologie ?
• comment accélérer l’adoption ?
• ☞ Open Source !!!
• bénéficie d’une bonne image auprès des développeurs naïfs
• ouvert donc transparent/auditable donc peu de risque de se lier
• gratuit !!! ! ! !
• contributions externes (de la communauté), enfin soi-disant …
• QA externalisée (si le projet est populaire)
Business models de l’open source
85
• but == comment transformer le gratuit en ! ! ! ?
• plusieurs possibilités:
• support
• consulting
• outillage pour la prod et le monitoring
• fonctionnalités supplémentaires
• SaaS
• fondations philanthropiques/financement participatif
Business models du support
86
• non pérenne sur le long terme
• pourquoi payer quand on a des experts maisons ?
• incitation à rajouter de la complexité au produit
• pour justifier l’intérêt du Support
• concurrence à terme par des anciens devenus experts
• 10 anciens de Datastax montent une boite de consulting avec prix/2
• exemple concret == The Last Pickle
• croissance du CA très linéaire et faible
• comment justifier un coût de support démentiel vs le coût d’une vraie licence logicielle ?
Business models du consulting
87
• trop de concurrence
• gros acteurs existants sur le marché (Accenture, Cap Gemini) qui imposent une grille de prix
• temps dédié à la R&D minuscule
• maximisation du taux horaire consulting == minimisation du temps restant pour la R&D
• business très difficile à mettre à l’échelle
• 100 clients = 20 consultants
• 1000 clients ~ 200 consultants
• perte d’un gros client == licencier xxx consultants ?
Business models de l’outillage
88
• marche plus ou moins bien
• le cas de la plupart des acteurs du monde NoSQL/Big Data
• marche jusqu’à un certain point
• empiète sur le marché des professionnels du monitoring (AppDynamics, DynaTrace …)
• risque de compétition par des développements open-source
• coût de devs de l’outillage devient plus abordable
• ex: plugin sécurité OSS pour ElasticSearch
• ex: Cassandra Reaper de TheLastPickle qui concurrence partiellement OpsCenter de Datastax
• croissance du CA très linéaire et faible
• comment justifier un coût premium vs le coût d’une vraie licence logicielle ?
Business models des fonctionnalités
89
• marche plutôt bien
• jusqu’à un certain point …
• crée de la frustration chez les ayatollahs de l’open-source
• arbitrage délicat entre OSS et propriétaire
• risque de conflit d’intérêt dans le développement du core OSS
• introduire une nouvelle API dans OSS
• implémentation réelle dans la version entreprise
• modèle de Datastax jusqu’à récemment
Business models autour du SaaS
90
• la vraie réponse !!!
• « voulez vous payer une licence ? » Jamais je ne paierai !
• « voulez vous payer un service ? » Avec plaisir, voici ma CB
• merci au travail cognitif d’Amazon sur la masse des développeurs
Business models autour du SaaS
91
• la vraie réponse !!!
• « voulez vous payer une licence ? » Jamais je ne paierai !
• « voulez vous payer un service ? » Avec plaisir, voici ma CB
• merci au travail cognitif d’Amazon sur la masse des développeurs
• … mais il est trop tard !!!
Business models autour du SaaS
92
L’étang du NoSQL/Big Data
Business models autour du SaaS
93
Le lac du Cloud
L’étang du NoSQL/Big Data
La menace du « Cloud »
94
• le problème du parasitage des acteurs du cloud
• « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service
payant !!!»
La menace du « Cloud »
95
• le problème du parasitage des acteurs du cloud
• « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service
payant !!!»
• ex ?
• ElasticSearch sur AWS (merci Elastic)
• Redis sur AWS (merci Redis Lab)
• Hadoop sur AWS, Azure & GCP (merci Hortonworks, Cloudera & MapR)
• Glue sur AWS, Spark sur GCP (merci DataBricks)
La menace du « Cloud »
96
• le problème du parasitage des acteurs du cloud
• « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service
payant !!!»
• ex ?
• ElasticSearch sur AWS (merci Elastic)
• Redis sur AWS (merci Redis Lab)
• Hadoop sur AWS, Azure & GCP (merci Hortonworks, Cloudera & MapR)
• Glue sur AWS, Spark sur GCP (merci DataBricks)
• le cas à part de Cassandra
• AWS a déjà DynamoDB
• Google a déjà Big Table/Spanner
• Microsoft … a récemment CosmoDB
• Oracle cloud humm …
Réaction à la menace du « Cloud »
97
• Datastax en 2016 se tourne vers le modèle propriétaire, changement radical
• probablement sous la pression des actionnaires pour + de rentabilité
• aussi également à cause du clash énorme avec la Fondation Apache (plus de détails sordides à
la pause en aparté)
• Paul Dix, CTO d’InfluxData a fait un talk « The Open Source Business Model is Under Siege »
• Idée: open-core == fonctionnalités payante
• Elastic
• licence spéciale X-Pack interdisant l’utilisation sur du Cloud
• Redis Lab
• polémique récente sur licence «common clause» portant sur les modules (pas le core) de Redis
Extrait de la licence Common Clause
98
The Software is provided to you by the Licensor under the License, as defined
below, subject to the following condition. Without limiting other conditions in
the License, the grant of rights under the License will not include, and the
License does not grant to you, the right to Sell the Software.
For purposes of the foregoing, “Sell” means practicing any or all of the rights
granted to you under the License to provide to third parties, for a fee or other
consideration (including without limitation fees for hosting or consulting/
support services related to the Software), a product or service whose value
derives, entirely or substantially, from the functionality of the Software. Any
license notice or attribution required by the License must also include this
Commons Cause License Condition notice.
Business models du financement participatif
99
• autant provisionner des pates toute de suite …
• personne ne veut payer !!!!!
• philosophie du tout gratuit
• téléchargement film/série
• musique gratuite sur Spotify/Youtube
• livres gratuits en pdf
• jeux crackés (de moins en moins cela dit)
• warez
• quelques exemples près de nous
• qui paie Ippon Technologies (consulting ou autre) pour JHipster ???
• financement des Cast Codeurs par Patreon
100
L’éternel débat OSS vs Propriétaire
Le pour et contre: OSS
101
• pour
• « gratuit »
• code ouvert/auditable
• QA par la communauté sur des scénarios à la marge
• ≈ « contribution de la communauté » ≈
• contre
• attitude je-m’en-fout-tiste de 90% des utilisateurs
• TCO = total cost of ownership souvent sous-estimé
• payer la licence ou payer des experts pour opérer la techno ?
• coût de la maintenance de la solution (maj, évolution technologique)
• dominé par les gros acteurs dont l’intérêt diverge avec celui de 90% des utilisateurs (cf clash
récent sur la gouvernance de Go …)
Le pour et contre: propriétaire
102
• pour
• support et SLA garanti
• fonctionnalités « premium »
• mises à jour fréquente
• time to market plus rapide (à condition de maîtriser la techno)
• contre
• coût modéré à élevé (combien coûte une équipe de bon devs en France ou à la Silicon Valley ?)
• code source fermé parfois
• risque de se lier, de ne plus pouvoir se désengager
OSS vs propriétaire
103
Temps/
Resources
Argent
OSS Propriétaire
104
@doanduyhai
doanduyhai@gmail.com
Merci !

Contenu connexe

Tendances

Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostAlexander DEJANOVSKI
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureFlorian Hussonnois
 
Cassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceCassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceJérémy Sevellec
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysVictor Coustenoble
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Meetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicMeetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicJean-Daniel Bonnetot
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Modern Data Stack France
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
 
Devoxx 2016 - Dropwizard : Création de services REST production-ready
Devoxx 2016 - Dropwizard : Création de services REST production-readyDevoxx 2016 - Dropwizard : Création de services REST production-ready
Devoxx 2016 - Dropwizard : Création de services REST production-readyAlexander DEJANOVSKI
 
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...OVHcloud
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 

Tendances (20)

Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Webinar Degetel DataStax
Webinar Degetel DataStaxWebinar Degetel DataStax
Webinar Degetel DataStax
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Cassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceCassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx France
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Meetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicMeetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbic
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
 
Devoxx 2016 - Dropwizard : Création de services REST production-ready
Devoxx 2016 - Dropwizard : Création de services REST production-readyDevoxx 2016 - Dropwizard : Création de services REST production-ready
Devoxx 2016 - Dropwizard : Création de services REST production-ready
 
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 

Similaire à Le futur d'apache cassandra

BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...Cédrick Lunven
 
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...Paris Open Source Summit
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
Optimisation des réseaux WAN avec CISCO WAAS
Optimisation des réseaux WAN avec CISCO WAASOptimisation des réseaux WAN avec CISCO WAAS
Optimisation des réseaux WAN avec CISCO WAASGroupe IDYAL
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IPmohamednacim
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreMathieu Goeminne
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
System Center 2012 Configuration Manager R2 : Quoi de neuf ?
System Center 2012 Configuration Manager R2 : Quoi de neuf ?System Center 2012 Configuration Manager R2 : Quoi de neuf ?
System Center 2012 Configuration Manager R2 : Quoi de neuf ?Microsoft Technet France
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàIppon
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservicesCédrick Lunven
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...Patrick Guimonet
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésNeo4j
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Loic Ortola
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...Publicis Sapient Engineering
 
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...Yassine Selmi
 

Similaire à Le futur d'apache cassandra (20)

BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
 
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Optimisation des réseaux WAN avec CISCO WAAS
Optimisation des réseaux WAN avec CISCO WAASOptimisation des réseaux WAN avec CISCO WAAS
Optimisation des réseaux WAN avec CISCO WAAS
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IP
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de Cassandre
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
System Center 2012 Configuration Manager R2 : Quoi de neuf ?
System Center 2012 Configuration Manager R2 : Quoi de neuf ?System Center 2012 Configuration Manager R2 : Quoi de neuf ?
System Center 2012 Configuration Manager R2 : Quoi de neuf ?
 
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delàCassandra Java Driver : vers Cassandra 1.2 et au-delà
Cassandra Java Driver : vers Cassandra 1.2 et au-delà
 
my_resume(fre)
my_resume(fre)my_resume(fre)
my_resume(fre)
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservices
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Mise en place nagios
Mise en place nagiosMise en place nagios
Mise en place nagios
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
 
Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 

Plus de Duyhai Doan

Big data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplBig data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplDuyhai Doan
 
Big data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysBig data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysDuyhai Doan
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentationDuyhai Doan
 
Datastax day 2016 introduction to apache cassandra
Datastax day 2016   introduction to apache cassandraDatastax day 2016   introduction to apache cassandra
Datastax day 2016 introduction to apache cassandraDuyhai Doan
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDuyhai Doan
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016Duyhai Doan
 
Apache cassandra in 2016
Apache cassandra in 2016Apache cassandra in 2016
Apache cassandra in 2016Duyhai Doan
 
Spark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronSpark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronDuyhai Doan
 
Sasi, cassandra on full text search ride
Sasi, cassandra on full text search rideSasi, cassandra on full text search ride
Sasi, cassandra on full text search rideDuyhai Doan
 
Cassandra 3 new features @ Geecon Krakow 2016
Cassandra 3 new features  @ Geecon Krakow 2016Cassandra 3 new features  @ Geecon Krakow 2016
Cassandra 3 new features @ Geecon Krakow 2016Duyhai Doan
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Duyhai Doan
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016Duyhai Doan
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016Duyhai Doan
 
Spark cassandra integration 2016
Spark cassandra integration 2016Spark cassandra integration 2016
Spark cassandra integration 2016Duyhai Doan
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016Duyhai Doan
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016Duyhai Doan
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemDuyhai Doan
 
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaCassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaDuyhai Doan
 
Cassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsCassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsDuyhai Doan
 

Plus de Duyhai Doan (20)

Big data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplBig data 101 for beginners devoxxpl
Big data 101 for beginners devoxxpl
 
Big data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysBig data 101 for beginners riga dev days
Big data 101 for beginners riga dev days
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentation
 
Datastax day 2016 introduction to apache cassandra
Datastax day 2016   introduction to apache cassandraDatastax day 2016   introduction to apache cassandra
Datastax day 2016 introduction to apache cassandra
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basics
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
 
Apache cassandra in 2016
Apache cassandra in 2016Apache cassandra in 2016
Apache cassandra in 2016
 
Spark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronSpark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotron
 
Sasi, cassandra on full text search ride
Sasi, cassandra on full text search rideSasi, cassandra on full text search ride
Sasi, cassandra on full text search ride
 
Cassandra 3 new features @ Geecon Krakow 2016
Cassandra 3 new features  @ Geecon Krakow 2016Cassandra 3 new features  @ Geecon Krakow 2016
Cassandra 3 new features @ Geecon Krakow 2016
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
 
Spark cassandra integration 2016
Spark cassandra integration 2016Spark cassandra integration 2016
Spark cassandra integration 2016
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystem
 
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaCassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
 
Cassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsCassandra UDF and Materialized Views
Cassandra UDF and Materialized Views
 

Le futur d'apache cassandra

  • 1. Le futur d’Apache Cassandra™ DuyHai DOAN Consultant freelance Java/Cassandra-Datastax/AWS/<rayer-la-mention-inutile> Ex-évangéliste Apache Cassandra™
  • 2. Ordre du jour • La roadmap pour Apache Cassandra™ 4.0 • La fragmentation de l’écosystème • La menace du Cloud • L’éternel débat OSS vs Propriétaire 2
  • 4. Petit rappel historique des releases • 03/09/2013: Cassandra 2.0 (Lightweight transactions) • 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature) • 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON) • 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré- implémentés,…) 4
  • 5. Petit rappel historique des releases • 03/09/2013: Cassandra 2.0 (Lightweight transactions) • 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature) • 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON) • 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré- implémentés,…) • Tick Tock release 5
  • 6. Tick-Tock release • Release mensuel • 1 mois pour introduire de nouvelles fonctionnalités • 1 mois pour corriger les bugs • Objectifs • éviter l’effet tunnel des fonctionnalités qui s’accumulent pendant 6 mois/1 an sans feedback des utilisateurs • feedback plus rapide de la communauté • Résultat • catastrophe • peu voir pas de feedback • des nouvelles fonctionnalités trop rapide donc instables 6
  • 7. Tick-Tock release • Qu’est ce qui a péché ? • les versions mises en production sont toujours la 2.1/2.2 • sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 … • personne ne se mouille pour tester les nouvelles fonctionnalités 7
  • 8. Tick-Tock release • Qu’est ce qui a péché ? • les versions mises en production sont toujours la 2.1/2.2 • sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 … • personne ne se mouille pour tester les nouvelles fonctionnalités • Prémices des soucis à venir … • idéalisation excessive de la communauté • OSS = 100% des utilisateurs viennent se servir pour x% qui contribuent 8
  • 9. Tick-Tock release • Qu’est ce qui a péché ? • les versions mises en production sont toujours la 2.1/2.2 • sur la mailing-list officielle, il est conseillé d’utiliser la 2.1 … • personne ne se mouille pour tester les nouvelles fonctionnalités • Prémices des soucis à venir … • idéalisation excessive de la communauté • OSS = 100% des utilisateurs viennent se servir pour x% qui contribuent • Qu’est ce contribuer ? • publier de nouveau code • tester et donner du feedback • documentation, blog post, StackOverflow, évangélisation 9
  • 10. Petit rappel historique des releases • 03/09/2013: Cassandra 2.0 (Lightweight transactions) • 16/09/2014: Cassandra 2.1 (UDT, meilleurs counters, incremental repair, CQL devient mature) • 20/07/2015: Cassandra 2.2 (essentiellement les UDF/UDA, support du JSON) • 09/11/2015: Cassandra 3.0 (vues matérialisées, moteur de stockage ré-écrit, hints ré- implémentés,…) • Tick Tock release • 02/11/2016: Jonathan Ellis annonce un désengagement relatif de Datastax vis à vis d’Apache Cassandra™ 10
  • 11. Petit rappel historique des releases • 23/06/2017: Cassandra 3.11 (stabilisations et nombreux bug fixs) • ??/??/????: Cassandra 4.0 11
  • 12. Petit rappel historique des releases • 12/04/2010: Cassandra 0.6 • 02/11/2016: Désengagement relatif de Datastax (Cassandra 3.x) • 23/06/2017: Cassandra 3.11 • 2018 12 L’ère Datastax L’ère auto-gestion
  • 13. Roadmap 4.0 (committed) • CASSANDRA-9425: Make node-local schema fully immutable • CASSANDRA-12229 : Move streaming to non-blocking IO and netty • CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas 13
  • 16. Roadmap 4.0 (committed) • CASSANDRA-9425: Make node-local schema fully immutable • CASSANDRA-12229 : Move streaming to non-blocking IO and netty • CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas • CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs • CASSANDRA-7396: Support for selecting Map values and Set elements 16
  • 17. CASSANDRA-7396: Support for selecting Map values and Set elements • Map dans Cassandra == SortedMap<K,V> • Syntaxe pour les sets • Et les lists ??? 17 SELECT map[key] FROM table … SELECT map[key1…key2] FROM table … SELECT set[key] FROM table …
  • 18. Roadmap 4.0 (committed) • CASSANDRA-9425: Make node-local schema fully immutable • CASSANDRA-12229 : Move streaming to non-blocking IO and netty • CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas • CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs • CASSANDRA-7396: Support for selecting Map values and Set elements • CASSANDRA-7461: Add support for arithmetic operators • CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add duration type) 18
  • 19. CASSANDRA-11936: Add support for + and – operations on dates • Types d’opérations supportés: • date + duration • date - duration • timestamp + duration • timestamp - duration • Utilisation 19 SELECT … FROM table WHERE date > now() - 2h
  • 20. Roadmap 4.0 (committed) • CASSANDRA-9425: Make node-local schema fully immutable • CASSANDRA-12229 : Move streaming to non-blocking IO and netty • CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas • CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs • CASSANDRA-7396: Support for selecting Map values and Set elements • CASSANDRA-7461: Add support for arithmetic operators • CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add duration type) • CASSANDRA-7622: Virtual tables 20
  • 21. CASSANDRA-7622: Virtual tables • Tables prédéfinies dans keyspace system_info: • table_stats • ring_state • compaction_stats • settings • Utilisation 21 SELECT * FROM system_info.settings WHERE writable = True; setting | value | writable --------------------------------+-------+---------- batch_size_fail_threshold_in_kb | 50 | True batch_size_warn_threshold_in_kb | 5 | True cas_contention_timeout_in_ms | 1000 | True …
  • 22. CASSANDRA-7622: Virtual tables • Utilisation (suite) 22 SELECT keyspace_name, table_name, metric, median, p99th FROM system_info.table_stats WHERE keyspace_name = 'system' and p99th > 0; keyspace_name | table_name | metric | median | p99th --------------+--------------------+---------------------------------+------------+------------ system | batches | rangeLatency | 1.5232e+05 | 3.7902e+05 system | compaction_history | estimatedColumnCountHistogram | 6 | 7 system | compaction_history | estimatedPartitionSizeHistogram | 124 | 149 system | local | estimatedColumnCountHistogram | 17 | 310 system | local | estimatedPartitionSizeHistogram | 215 | 6866
  • 23. Roadmap 4.0 (committed) • CASSANDRA-9425: Make node-local schema fully immutable • CASSANDRA-12229 : Move streaming to non-blocking IO and netty • CASSANDRA-9143: Fix consistency of incrementally repaired data across replicas • CASSANDRA-14556: Faster streaming of SSTables using ZeroCopy APIs • CASSANDRA-7396: Support for selecting Map values and Set elements • CASSANDRA-7461: Add support for arithmetic operators • CASSANDRA-11936: Add support for + and – operations on dates (CASSANDRA-11873 add duration type) • CASSANDRA-7622: Virtual tables • CASSANDRA-13289: Ideal consistency level • CASSANDRA-14404: Transient replica & Cheap Quorum 23
  • 24. Rappel sur les consistency level 24 B A A B A A Read ONE: A data replication in progress … Write ONE: B ack
  • 25. Rappel sur les consistency level 25 B A A B A A Read QUORUM: A data replication in progress … Write ONE: B ack
  • 26. Rappel sur les consistency level 26 B A A B A A Read ALL: B data replication in progress … Write ONE: B ack
  • 27. Rappel sur les consistency level 27 B B A B B A Read QUORUM: B data replication in progress … Write QUORUM: B ack RF = 3, Write QUORUM, Read QUORUM
  • 28. Node 3Node 2Node 1 Transient replica: idées 28 un-repaired data repaired data
  • 29. Node 3Node 2Node 1 Transient replica: idées 29 un-repaired data repaired data Full replica Full replica Transient replica
  • 30. Node 3Node 2Node 1 Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM 30 Full replica Full replica Transient replica 2/3 ✓
  • 31. Node 3Node 2Node 1 Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM 31 Full replica Full replica Transient replica 2/3 ✓
  • 32. Node 3Node 2Node 1 Transient replica: scénario lecture/écriture QUORUM/LOCAL_QUORUM 32 Full replica Full replica Transient replica 2/3 ✓
  • 33. Node 3Node 2Node 1 Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM 33 Full replica Full replica Transient replica 2/3 ✓ ✖
  • 34. Node 3Node 2Node 1 Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM 34 Full replica Full replica Transient replica 2/3 ✓ ✖
  • 35. Node 3Node 2Node 1 Transient replica: scénario haute dispo QUORUM/LOCAL_QUORUM 35 Full replica Full replica Transient replica 2/3 ✓ ✖
  • 36. Node 3Node 2Node 1 Transient replica: scénario haute dispo ONE/LOCAL_ONE 36 Full replica Full replica Transient replica 1/3 ✓ ✖✖
  • 37. Node 3Node 2Node 1 Transient replica: scénario haute dispo ONE/LOCAL_ONE 37 Full replica Full replica Transient replica 1/3 ✓ ✖✖
  • 38. Node 3Node 2Node 1 Transient replica: scénario haute dispo ONE/LOCAL_ONE 38 Full replica Full replica Transient replica 0/3 ✗ ✖✖ ??? ☠
  • 39. Transient replica: scénario haute dispo ONE/LOCAL_ONE 39
  • 40. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) 40
  • 41. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index 41
  • 42. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index • incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate) 42
  • 43. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index • incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate) • très dûr à raisonner sans un doctorat en informatique distribué 43
  • 44. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index • incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate) • très dûr à raisonner sans un doctorat en informatique distribué • trous dans la raquette pour le cas ONE/LOCAL_ONE 44
  • 45. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index • incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate) • très dûr à raisonner sans un doctorat en informatique distribué • trous dans la raquette pour le cas ONE/LOCAL_ONE • introduit une dissymétrie parmi les nœuds 45
  • 46. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • trop spécifique au gros clusters/multi-DC (spécifique Apples) • incompatible par nature avec vues matérialisées et 2nd index • incremental repair obligatoire … (pour augmenter le taux repair rate vs failure rate) • très dûr à raisonner sans un doctorat en informatique distribué • trous dans la raquette pour le cas ONE/LOCAL_ONE • introduit une dissymétrie parmi les nœuds • impact énorme sur la base de code 46
  • 47. Roadmap 4.0 (committed) • CASSANDRA-14404: Transient replica & Cheap Quorum • état d’avancement 47
  • 48. Roadmap 4.0 (not-committed) • CASSANDRA-9754: Making index friendlier for large partitions (awaiting feedback 17/02/2017) • CASSANDRA-12345 : Gossip 2.0 (spécifique Apple, 31/08/2016) • CASSANDRA-10540: Range-aware compaction (dernier échange 04/09/2018) • CASSANDRA-13474: Pluggable storage engine (spécifique Instagram) 48
  • 49. CASSANDRA-13474: Pluggable storage engine • Quoi ? • proposer différentes implémentations pour le moteur de stockage bas niveau • actuellement, le moteur date du refactoring 3.0 et est adapté à l’abstraction Map<K, SortedMap<K,V>> • but == intégrer RocksDB comme moteur de stockage alternatif • Comment faire ? • commencer à refactorer tout le code pour isoler les niveaux d’abstraction 49 Moteur 1 Moteur 2 Abstraction/Interface/API
  • 50. CASSANDRA-13474: Pluggable storage engine • Etat d’avancement 50
  • 51. CASSANDRA-13474: Pluggable storage engine • Pour • moteurs adaptés à des besoins différents • force à refactorer le code proprement • Contre • problème à l’origine spécifique à Instagram • chantier titanesque (GA = 2020 au mieux) • risque élevé inhérent à tout refacto (cf refacto 3.0 et régression de performance) • quid du support des fonctionnalités spécifiques au modèle Map<K,SortedMap<K,V>> ? • UDT • collections (map, set, lists) • counters • static columns • … 51
  • 52. CASSANDRA-13474: Pluggable storage engine • Contre (suite) • risque d’aboutir à une matrice de fonctionnalités gruyère • devoir gérer RockDB (compaction, ttl …) • devoir gérer différent languages (C++ pour RocksDB par ex) 52 Fonc.1 Fonc.2 Fonc.3 Fonc.4 Fonc.5 Fonc.6 Fonc.7 Moteur1 ✓ ✓ ✓ ✓ ✓ ✗ ✗ Moteur2 ✗ ✗ ✓ ✓ ✓ ✓ ✗ Moteur3 ✓ ✓ ✓ ✗ ✗ ✓ ✓ Moteur4 ✗ ✗ ✗ ✓ ✓ ✓ ✓
  • 53. Roadmap 4.0 (not-committed) • CASSANDRA-9754: Making index friendlier for large partitions (awaiting feedback 17/02/2017) • CASSANDRA-12345 : Gossip 2.0 (spécifique Apple, 31/08/2016) • CASSANDRA-10540: Range-aware compaction (dernier échange 04/09/2018) • CASSANDRA-13474: Pluggable storage engine (spécifique Instagram) • CASSANDRA-13001: Pluggable slow query log/handling (dernier échange 21/03/2018) • CASSANDRA-12106: Ability to blacklist a bad partition (dernier échange 07/09/2018) • CASSANDRA-14395: Cassandra management process (clash Netflix vs TLP) 53
  • 54. Roadmap 4.0 conclusion • Quelques fonctionnalités intéressantes 54
  • 55. Roadmap 4.0 conclusion • Quelques fonctionnalités intéressantes • Beaucoup de tickets encore ouverts/en attente de revue 55
  • 56. Roadmap 4.0 conclusion • Quelques fonctionnalités intéressantes • Beaucoup de tickets encore ouverts/en attente de revue • Beaucoup de demande de feedback à la communauté, peu de retour/d’engagements 56
  • 57. Roadmap 4.0 conclusion • Quelques fonctionnalités intéressantes • Beaucoup de tickets encore ouverts/en attente de revue • Beaucoup de demande de feedback à la communauté, peu de retour/d’engagements • Il est difficile de contribuer du code, encore plus pour faire du code-review sur les nouvelles contributions et surtout la QA 57
  • 58. 58 La fragmentation de l’éco-système
  • 59. Les acteurs en présence • OSS Cassandra • Datastax Entreprise (DSE) • ScyllaDB (le clone malhonnête) • Fork interne chez Apple (tends à disparaître si Apple prend le contrôle du projet OSS) • Fork interne chez Instagram (disparaitra si Pluggable Storage Engine fini complètement) • Elassandra (petit produit de chez nous Cocorico) • YugaByte • CosmoDB 59
  • 60. OSS Cassandra • On ne le présente plus • Continuera à vivre quoiqu’il arrive • Doutes sur: • rythme des nouvelles innovations • pertinence des nouvelles fonctionnalités (centrées sur Apple/poweruser seulement ?) • équilibre dev vs ops 60
  • 61. Datastax Entreprise (DSE) • Core OSS Cassandra • + features propriétaires (NodeSync (continuous repair), InMemory, BackPressure, Thread Per Core) • + intégrations propriétaires: • Apache Spark (haute dispo et bientôt masterless) • Apache Solr (haute dispo et déjà masterless) • Graphe avec Apache Tinkerpop • Divergera de + en + • Datastax reprendra certainement des nouvelles fonctionnalités contribuées par d’autres à OSS Cassandra pour les remettre dans DSE 61
  • 62. ScyllaDB • Copier-coller de Cassandra en C++ • Le plus détestable car marketing agressif et mensonger (drop-in replacement de Cassandra, faux) • Marché de niche, seule différence = performance mais le Thread Per Core de Datastax change la donne • Communauté quasi inexistante • Risques de bugs/régression à cause de la ré-écriture en C++ (question de QA) 62
  • 63. Forks interns chez Apple et Instagram • Fonctionnalités répondant aux besoins spécifiques • Vont converger avec OSS Cassandra, ou pas … 63
  • 64. Elassandra (made in France) • Mariage d’Elastic Search et OSS Cassandra • Données brutes dans Cassandra, index dans ES • Tabasse Elastic Search en terme de scalabilité • on peut enfin stocker ses données dans une vrai base de données • on peut resharder comme on veut! • architecture masterless de Cassandra !!! • Donne un gros boost à Cassandra en terme d’outillage de recherche • toute l’API d’ES • tout l’écosystème d’ES (ELK) disponible • Mais … • projet d’un seul homme (Vincent Royer) … • … qui n’est ni committer Cassandra ni Elastic Search • … exploite quelques détails d’implémentation de Cassandra • donc à la merci de tout changement d’architecture de ces 2 produits 64
  • 65. YugaByte • RocksDB fortement modifié comme storage engine • supporte l’API CQL de Cassandra • couche distribuée utilisant Raft • parasitisme d’API 65
  • 66. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo 66
  • 67. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … 67
  • 68. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … 68
  • 69. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL 69
  • 70. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill 70
  • 71. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL 71
  • 72. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL • Cassandra CQL 72
  • 73. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL • Cassandra CQL • CouchBase N1QL 73
  • 74. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL • Cassandra CQL • CouchBase N1QL • ArangoDB AQL 74
  • 75. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL • Cassandra CQL • CouchBase N1QL • ArangoDB AQL • ElasticSearch SQL 75
  • 76. CosmoDB • parasitisme d’API par Grosoft • supporte l’API CQL de Cassandra … • … ainsi que celui de Mongo • resté encore à l’âge de pierre avec son API JSON … • … en 2018 … • … alors que tout le monde est passé en language de requêtage pseudo SQL • Apache Hive/Impala/Apache Drill • Spark SQL • Cassandra CQL • CouchBase N1QL • ArangoDB AQL • ElasticSearch SQL 76
  • 77. 77 noSQLWARS E P I S O D E I
  • 78. Historique de l’open-source 78 Rythme d’innovation Temps 2005-2006 Open-source hipster/à la pépère/artisanal Open-source des startups californiennes/industriel
  • 79. La période des startups 79 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ?
  • 80. La période des startups 80 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ? • ☞ Open Source !!! • bénéficie d’une bonne image auprès des développeurs naïfs
  • 81. La période des startups 81 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ? • ☞ Open Source !!! • bénéficie d’une bonne image auprès des développeurs naïfs • ouvert donc transparent/auditable donc peu de risque de se lier
  • 82. La période des startups 82 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ? • ☞ Open Source !!! • bénéficie d’une bonne image auprès des développeurs naïfs • ouvert donc transparent/auditable donc peu de risque de se lier • gratuit !!! ! ! !
  • 83. La période des startups 83 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ? • ☞ Open Source !!! • bénéficie d’une bonne image auprès des développeurs naïfs • ouvert donc transparent/auditable donc peu de risque de se lier • gratuit !!! ! ! ! • contributions externes (de la communauté), enfin soi-disant …
  • 84. La période des startups 84 • but des startups technologique == gagner de l’argent (pardon pour le truisme) • comment imposer une nouvelle technologie ? • comment accélérer l’adoption ? • ☞ Open Source !!! • bénéficie d’une bonne image auprès des développeurs naïfs • ouvert donc transparent/auditable donc peu de risque de se lier • gratuit !!! ! ! ! • contributions externes (de la communauté), enfin soi-disant … • QA externalisée (si le projet est populaire)
  • 85. Business models de l’open source 85 • but == comment transformer le gratuit en ! ! ! ? • plusieurs possibilités: • support • consulting • outillage pour la prod et le monitoring • fonctionnalités supplémentaires • SaaS • fondations philanthropiques/financement participatif
  • 86. Business models du support 86 • non pérenne sur le long terme • pourquoi payer quand on a des experts maisons ? • incitation à rajouter de la complexité au produit • pour justifier l’intérêt du Support • concurrence à terme par des anciens devenus experts • 10 anciens de Datastax montent une boite de consulting avec prix/2 • exemple concret == The Last Pickle • croissance du CA très linéaire et faible • comment justifier un coût de support démentiel vs le coût d’une vraie licence logicielle ?
  • 87. Business models du consulting 87 • trop de concurrence • gros acteurs existants sur le marché (Accenture, Cap Gemini) qui imposent une grille de prix • temps dédié à la R&D minuscule • maximisation du taux horaire consulting == minimisation du temps restant pour la R&D • business très difficile à mettre à l’échelle • 100 clients = 20 consultants • 1000 clients ~ 200 consultants • perte d’un gros client == licencier xxx consultants ?
  • 88. Business models de l’outillage 88 • marche plus ou moins bien • le cas de la plupart des acteurs du monde NoSQL/Big Data • marche jusqu’à un certain point • empiète sur le marché des professionnels du monitoring (AppDynamics, DynaTrace …) • risque de compétition par des développements open-source • coût de devs de l’outillage devient plus abordable • ex: plugin sécurité OSS pour ElasticSearch • ex: Cassandra Reaper de TheLastPickle qui concurrence partiellement OpsCenter de Datastax • croissance du CA très linéaire et faible • comment justifier un coût premium vs le coût d’une vraie licence logicielle ?
  • 89. Business models des fonctionnalités 89 • marche plutôt bien • jusqu’à un certain point … • crée de la frustration chez les ayatollahs de l’open-source • arbitrage délicat entre OSS et propriétaire • risque de conflit d’intérêt dans le développement du core OSS • introduire une nouvelle API dans OSS • implémentation réelle dans la version entreprise • modèle de Datastax jusqu’à récemment
  • 90. Business models autour du SaaS 90 • la vraie réponse !!! • « voulez vous payer une licence ? » Jamais je ne paierai ! • « voulez vous payer un service ? » Avec plaisir, voici ma CB • merci au travail cognitif d’Amazon sur la masse des développeurs
  • 91. Business models autour du SaaS 91 • la vraie réponse !!! • « voulez vous payer une licence ? » Jamais je ne paierai ! • « voulez vous payer un service ? » Avec plaisir, voici ma CB • merci au travail cognitif d’Amazon sur la masse des développeurs • … mais il est trop tard !!!
  • 92. Business models autour du SaaS 92 L’étang du NoSQL/Big Data
  • 93. Business models autour du SaaS 93 Le lac du Cloud L’étang du NoSQL/Big Data
  • 94. La menace du « Cloud » 94 • le problème du parasitage des acteurs du cloud • « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service payant !!!»
  • 95. La menace du « Cloud » 95 • le problème du parasitage des acteurs du cloud • « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service payant !!!» • ex ? • ElasticSearch sur AWS (merci Elastic) • Redis sur AWS (merci Redis Lab) • Hadoop sur AWS, Azure & GCP (merci Hortonworks, Cloudera & MapR) • Glue sur AWS, Spark sur GCP (merci DataBricks)
  • 96. La menace du « Cloud » 96 • le problème du parasitage des acteurs du cloud • « Merci les gars d’avoir fait la R&D pour nous, on va packager tout ça pour en faire un service payant !!!» • ex ? • ElasticSearch sur AWS (merci Elastic) • Redis sur AWS (merci Redis Lab) • Hadoop sur AWS, Azure & GCP (merci Hortonworks, Cloudera & MapR) • Glue sur AWS, Spark sur GCP (merci DataBricks) • le cas à part de Cassandra • AWS a déjà DynamoDB • Google a déjà Big Table/Spanner • Microsoft … a récemment CosmoDB • Oracle cloud humm …
  • 97. Réaction à la menace du « Cloud » 97 • Datastax en 2016 se tourne vers le modèle propriétaire, changement radical • probablement sous la pression des actionnaires pour + de rentabilité • aussi également à cause du clash énorme avec la Fondation Apache (plus de détails sordides à la pause en aparté) • Paul Dix, CTO d’InfluxData a fait un talk « The Open Source Business Model is Under Siege » • Idée: open-core == fonctionnalités payante • Elastic • licence spéciale X-Pack interdisant l’utilisation sur du Cloud • Redis Lab • polémique récente sur licence «common clause» portant sur les modules (pas le core) de Redis
  • 98. Extrait de la licence Common Clause 98 The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition. Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software. For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Cause License Condition notice.
  • 99. Business models du financement participatif 99 • autant provisionner des pates toute de suite … • personne ne veut payer !!!!! • philosophie du tout gratuit • téléchargement film/série • musique gratuite sur Spotify/Youtube • livres gratuits en pdf • jeux crackés (de moins en moins cela dit) • warez • quelques exemples près de nous • qui paie Ippon Technologies (consulting ou autre) pour JHipster ??? • financement des Cast Codeurs par Patreon
  • 100. 100 L’éternel débat OSS vs Propriétaire
  • 101. Le pour et contre: OSS 101 • pour • « gratuit » • code ouvert/auditable • QA par la communauté sur des scénarios à la marge • ≈ « contribution de la communauté » ≈ • contre • attitude je-m’en-fout-tiste de 90% des utilisateurs • TCO = total cost of ownership souvent sous-estimé • payer la licence ou payer des experts pour opérer la techno ? • coût de la maintenance de la solution (maj, évolution technologique) • dominé par les gros acteurs dont l’intérêt diverge avec celui de 90% des utilisateurs (cf clash récent sur la gouvernance de Go …)
  • 102. Le pour et contre: propriétaire 102 • pour • support et SLA garanti • fonctionnalités « premium » • mises à jour fréquente • time to market plus rapide (à condition de maîtriser la techno) • contre • coût modéré à élevé (combien coûte une équipe de bon devs en France ou à la Silicon Valley ?) • code source fermé parfois • risque de se lier, de ne plus pouvoir se désengager