Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
Chacun connait les fondamentaux pour développer une API Web, mais quand il s’agit de performance, de capacité, de montée en charge, avez vous toutes les clefs pour mettre en oeuvre un cache efficace ?
Le protocole HTTP dispose d’un mécanisme de cache adapté aux architectures distribuées, découvrez ou redécouvrez-le dans cette session et tirez-en profit dans vos API.
Le speaker : David développeur, architecte Java EE et directeur du Pôle Conseil d’Ippon Technologies. Passionné de nouvelles technologies, il s’intéresse aux architectures Java alliant simplicité et efficacité, aptes à répondre aux problèmes concrets. Il est aussi un supporter des API Web et du style d’architecture REST.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
Les volumes de données permettent d’envisager de nouveaux usages, pour la plupart rendus accessibles grâce aux algorithmes de Machine Learning. Découvrez ce qu’est le Machine Learning par de multiples exemples. Comprenez les enjeux autour de la donnée et comment passer de la donnée brute aux prédictions en identifiant les différentes étapes intermédiaires. Enfin, découvrez comment mettre ces concepts en oeuvre avec une présentation des outils à disposition aujourd’hui, et un focus sur Spark, son architecture et les possibilités offertes autour du Machine Learning.
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
Chacun connait les fondamentaux pour développer une API Web, mais quand il s’agit de performance, de capacité, de montée en charge, avez vous toutes les clefs pour mettre en oeuvre un cache efficace ?
Le protocole HTTP dispose d’un mécanisme de cache adapté aux architectures distribuées, découvrez ou redécouvrez-le dans cette session et tirez-en profit dans vos API.
Le speaker : David développeur, architecte Java EE et directeur du Pôle Conseil d’Ippon Technologies. Passionné de nouvelles technologies, il s’intéresse aux architectures Java alliant simplicité et efficacité, aptes à répondre aux problèmes concrets. Il est aussi un supporter des API Web et du style d’architecture REST.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
Les volumes de données permettent d’envisager de nouveaux usages, pour la plupart rendus accessibles grâce aux algorithmes de Machine Learning. Découvrez ce qu’est le Machine Learning par de multiples exemples. Comprenez les enjeux autour de la donnée et comment passer de la donnée brute aux prédictions en identifiant les différentes étapes intermédiaires. Enfin, découvrez comment mettre ces concepts en oeuvre avec une présentation des outils à disposition aujourd’hui, et un focus sur Spark, son architecture et les possibilités offertes autour du Machine Learning.
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
Support de ma présentation lors de l'Ippevent HTML5, Spring, NoSQL et mobilité le 28 Juin. CF. http://blog.ippon.fr/2012/06/14/ippevent-html5-spring-nosql-et-mobilite-le-28-juin/
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Participez à notre prochaine formation : http://www.ippon.fr/formation/html5-css3
Le couple HTML5/CSS3 est le standard du web tant attendu : interopérabilité accentuée, formulaires enrichis, esthétisme et animations des pages, médias évolués ou encore stockage de données en local. Tout est enfin disponible pour réaliser des applications clientes riches pour tous les types de périphériques depuis les ordinateurs jusqu'aux smartphones. Un panel complet des possibilités sera présenté par le biais de modules, chaque module ayant une partie théorique pour assimiler les concepts et des TPs associés pour les mettre en pratique. A l'issue de cette formation le stagiaire aura une vue exhaustive des enjeux et des nouvelles capacités de HTML5/CSS3, et sera autonome pour initier des applications Web desktop et mobiles.
Participez à notre prochaine formation : http://www.ippon.fr/formation/html5-css3
Support de notre séminaire du 08/10/2009.
- Présentation technique de la notion de portail, portlet JSR168, JSR286
- Présentation du marché
- Zoom sur les principaux acteurs Open Source du monde du portail JEE
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
La nouvelle version du Framework .NET apporte des innovations majeures qui permettent encore plus de performance et accroissent le champ des possibles. Du poste client au serveur d’entreprise, ce jeu de nouvelles fonctionnalités logée au cœur du noyau vous offrent une gestion plus fine de votre code et donnent un nouveau souffle à vos applications. Ne manquez pas cette session et venez découvrir comment augmenter considérablement les performances de vos programmes et tirer parti de toute la puissance des ordinateurs modernes.
Support formation vidéo : OCA Java SE 8 Programmer (1Z0-808) (1)SmartnSkilled
Préparez-vous à l'examen 1Z0-808 et obtenez la certification OCA Java SE 8 Programmer.
Cette formation vidéo va vous permettre de :
- Réussir la certification Java SE 8 Oracle Certified Associate (OCA), en passant l'examen 1Z0-808.
- Comprendre et appliquer les concepts objets au langage Java (classes, méthodes, encapsulation, héritage, constructeur, polymorphisme, classe abstraite, etc.)
- Connaître et savoir utiliser les types de données du langage Java,
- Maîtriser la syntaxe Java (boucle, test, types, opérateurs, etc.),
- Gérer les exceptions en Java,
- Créer des packages Java et les déployer.
Suivez la formation vidéo par ici : https://www.smartnskilled.com/tutoriel/formation-en-ligne-oca-java-se-8-programmer-1z0-808
Retour aux sources de Java EE : Stratégies de stockage des états dans une application Java EE, scope session de l'Api Servlet, CDI, EJB 3.X, sérialisation, passivation et résilience, scalabilité et design patterns...
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
Formation Gratuite Total Tests par les experts Java Ippon Ippon
Garantissez la qualité des vos applications par des tests efficaces : unitaire, d'intégration, de performance... Apprenez à mettre en oeuvre un harnais de tests complet et efficace avec Junit, AssertJ, Mockito, Spring Test, Arquillian, ... et assimilez les concepts du TDD et du BDD, illustré avec Cucumber. La formation Total Test Training ira encore plus loin en vous présentant l'utilisation de Sonar et le rôle des tests dans un système d'intégration continue. Enfin, les aspects liés à la mesure de la performance (instrumentation avec Metric et stress test avec JMeter et Gatling) et à l'optimisation ciblée vous permettront d'être en mesure de produire un code "propre", protégé des risques de regressions.
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
Support de ma présentation lors de l'Ippevent HTML5, Spring, NoSQL et mobilité le 28 Juin. CF. http://blog.ippon.fr/2012/06/14/ippevent-html5-spring-nosql-et-mobilite-le-28-juin/
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Participez à notre prochaine formation : http://www.ippon.fr/formation/html5-css3
Le couple HTML5/CSS3 est le standard du web tant attendu : interopérabilité accentuée, formulaires enrichis, esthétisme et animations des pages, médias évolués ou encore stockage de données en local. Tout est enfin disponible pour réaliser des applications clientes riches pour tous les types de périphériques depuis les ordinateurs jusqu'aux smartphones. Un panel complet des possibilités sera présenté par le biais de modules, chaque module ayant une partie théorique pour assimiler les concepts et des TPs associés pour les mettre en pratique. A l'issue de cette formation le stagiaire aura une vue exhaustive des enjeux et des nouvelles capacités de HTML5/CSS3, et sera autonome pour initier des applications Web desktop et mobiles.
Participez à notre prochaine formation : http://www.ippon.fr/formation/html5-css3
Support de notre séminaire du 08/10/2009.
- Présentation technique de la notion de portail, portlet JSR168, JSR286
- Présentation du marché
- Zoom sur les principaux acteurs Open Source du monde du portail JEE
Les versions de Java se suivent et leurs engouements ne se ressemblent pas : la version 8 de Java est probablement celle qui a suscité le plus d’intérêts chez les développeurs. Java 9, au contraire, est la version de Java qui génère le plus de craintes et d’interrogations voir de peurs. Il faut se préparer pour utiliser Java 9 d’autant que Java 10 est déjà là et les versions suivantes vont s’enchaîner. Le but de ce talk est de parcourir les avantages et les intérêts à utiliser ces nouvelles versions mais aussi certaines difficultés possibles lors de la migration.
Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
La nouvelle version du Framework .NET apporte des innovations majeures qui permettent encore plus de performance et accroissent le champ des possibles. Du poste client au serveur d’entreprise, ce jeu de nouvelles fonctionnalités logée au cœur du noyau vous offrent une gestion plus fine de votre code et donnent un nouveau souffle à vos applications. Ne manquez pas cette session et venez découvrir comment augmenter considérablement les performances de vos programmes et tirer parti de toute la puissance des ordinateurs modernes.
Support formation vidéo : OCA Java SE 8 Programmer (1Z0-808) (1)SmartnSkilled
Préparez-vous à l'examen 1Z0-808 et obtenez la certification OCA Java SE 8 Programmer.
Cette formation vidéo va vous permettre de :
- Réussir la certification Java SE 8 Oracle Certified Associate (OCA), en passant l'examen 1Z0-808.
- Comprendre et appliquer les concepts objets au langage Java (classes, méthodes, encapsulation, héritage, constructeur, polymorphisme, classe abstraite, etc.)
- Connaître et savoir utiliser les types de données du langage Java,
- Maîtriser la syntaxe Java (boucle, test, types, opérateurs, etc.),
- Gérer les exceptions en Java,
- Créer des packages Java et les déployer.
Suivez la formation vidéo par ici : https://www.smartnskilled.com/tutoriel/formation-en-ligne-oca-java-se-8-programmer-1z0-808
Retour aux sources de Java EE : Stratégies de stockage des états dans une application Java EE, scope session de l'Api Servlet, CDI, EJB 3.X, sérialisation, passivation et résilience, scalabilité et design patterns...
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
Cette présentation, réalisée dans le cadre de Devoxx France 2012, propose une exploration pratique des fonctionnalités de CDI et de quelques extensions Seam 3 à travers le module Seam Social (solution d'interconnexion aux réseaux sociaux).
Formation Usine Logicielle gratuite par Ippon 2014Ippon
Les mises en production ne sont pas condamnées à être des moments de souffrance. En apportant de la rigueur au processus de qualification du code, en automatisant un maximum de tâches et en rendant la gestion des différents environnements la plus transparente possible, cette étape ultime peut alors devenir une simple banalité.
Pour atteindre cet objectif, plusieurs aspects doivent être pris en compte, et il faut procéder avec méthode et de façon itérative.
La formation Usine Logicielle présente les différentes briques devant être mises en place pour automatiser et contrôler la production de vos livrables ainsi que leur déploiement. Illustrée par des TP lorsque dispensée par nos consultants, cette formation permet de mieux cerner les différentes étapes et leur implication technique sur les projets. Du contrôle de la qualité du code, en passant par l'automatisation de la construction des livrables, la gestion de la configuration et le provisioning des ressources sur les différents environnements, vous découvrirez les étapes essentielles à la construction d'une usine logicielle robuste, permettant de réduire le si stratégique Time To Market tout en maîtrisant le risque.
Scrum et le forfait incompatibles ? Pas si sûr. Lors du Scrumday 2011, Bertrand Pinel, directeur technique d'Ippon a présenté les retours d'expérience de la société
Depuis quelques années Git s'est imposé comme le système de gestion de sources de référence. Simple, rapide , souple, il convient à la fois aux workflows traditionnels et aux workflows distribués. Après une introductions aux principes fondateurs de Git le stagiaire aura l'occasion d'apprendre à créer son premier repository git et à le manipuler localement avant de le partager avec les autres. La formation insistera sur la gestions des branches et la résolution des conflits et sur les commandes permettant d'aborder ces problématiques sereinement. A l'issue de cette formation le stagiaire sera autonome pour utiliser Git aussi bien individuellement qu'au sein d'une équipe.
Vous êtes en fonctionnement agile mais ça ne marche pas ? Vous ne vous servez pas de l’agilité et doutez que ça puisse s’appliquer à votre équipe ? Ce REX est fait pour vous !
Nous vous proposons de retrouver l’esprit de l’agilité en comparant deux expériences client contradictoires. D’un côté l’application quasi stricte des cérémoniels décrits dans la méthode Scrum, de l’autre une application très adaptée des principes de l’agilité.
Quels sont les effets observés dans chacun des cas et quels pièges peuvent être évités lors de l’application de la méthode ?
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014Ippon
Un simple site Web ne suffit plus : si je veux que les machines puissent comprendre et interagir avec mes données et pas seulement des pages HTML, je dois exposer une Web API.
Or les styles, architectures et buzzwords sont variés (Web services, REST, hypermedia et maintenant HATEOAS, etc.) et les religions sont légion. Il a fallu de longues années pour que l’industrie et la communauté Web voient émerger de bonnes pratiques. L’heure est maintenant à la consolidation.
Cette présentation se veut une rétrospective sur l’évolution des Web APIs et plus généralement des données sur le Web. Je ferai une revue de l’état de l’art, illustrée par des exemples concrets et des conseils pratiques.
Le speaker : Alexandre est expert Linked Data à Pellucid Analytics. Auparavant au W3C. Code principalement en Scala et est intéressé par le Web, les données et les questions d’anonymat/vie privée sur le Web.
Multi criteria queries on a cassandra applicationIppon
You shouldn't normally do multi-criteria queries with Cassandra.
We will detail the technical challenges and limitations involved, and how we successfully implemented such a solution for one of our biggest clients, using Java 8 and the CQL 3 driver.
This session will also focus on the tools we used (JHipster), our Java application framework (Spring Boot), and the cluster configuration we set up.
Jerome Mainaud - Ippon Technologies
Jerome Mainaud is Java Software Architect at Ippon Technologies. It help its clients to create, deploy and run applications based on NoSQL Database and Search Indexes. He mainly works with Cassandra, Apache or DataStax flavor. Jerome is a certified DataStax Enterprise Solution Architect.
http://blog.ippon.fr/
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Ippon
L'Apec a fait confiance à Ippon et Jahia pour mener à bien son projet de refonte de l’architecture applicative ainsi que de la partie Hardware, projet d’envergure qui dura 14 mois.
Bruno Lamard, Directeur des Systèmes d’informations de l’APEC, nous a fait l’honneur de partager son retour d’expérience, lors d’une rencontre le 12 Janvier 2016
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
Un parc informatique d’un millier de machines génère de nombreux Terra Octets de logs. Comment parvenir à y retrouver une information pertinente et comment valoriser les informations contenues dans ces logs ?
Au programme :
- La centralisation des logs : back to basics;
- Cas pratiques : détection d’attaques DoS et refacturation sur plateforme mutualisée;
- Une grille Hadoop : en quoi ça consiste ?
Cette présentation propose une lecture de l'open data d'après les principes du cloud computing avec un axe logiciel libre en conclusion (notamment openstack). La présentation se démarque de l'approche commerciale public , privé et hybride cloud computing par une axée sur les besoins utilisateurs.
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
Nous avons participé au Devoxx 2017 et voici ce que nous en avons retenu : Big Data, Intelligence artificielle, Java9, jetBrains Kotlin, Apache Spark, Apache Cassandra, ... Découvrez-vite notre résumé de l'événement !
Une base de données, pourquoi faire ? Le SQL, c’est quoi ce langage ? Un DBA, ça sert à quoi ? Cette session est là pour démystifier la base de données du point de vue des développeurs. Au programme : des bonnes pratiques, de la méthodologie, quelques tips techniques… De quoi rapprocher les développeurs et les DBA.
Delphi et C++Builder sont des outils de développement riches en composants et fonctionnalités pas toujours connues ni exploitées. S'il est un domaine dans lequel il est bon d'avoir un aperçu de ce qui est possible en standard, c'est bien la synchronisation de données entre logiciels ou bases de données.
Lors de ce webinaire on vous propose de découvrir quelques unes de ces solutions. Vous pourrez les utiliser dans vos logiciels bureautiques comme avec vos applications mobiles. Patrick Prémartin abordera également le cas pratique d'une application multiplateforme utilisant un cloud maison développé sous Delphi en fin de présentation.
La rediffusion de cette présentation est disponible avec ses codes sources et des liens complémentaires sur https://serialstreameur.fr/webinaire-20181218.php
Quelle est la place de l'Open Source dans le Cloud Computing ? Quels sont les avantages, les dangers et les perspectives d'avenir ? Présentation de Jérôme Petazonni pour l'Open Word Forum.
Mon cours de virtualisation des conteneurs explore les bases et les technologies avancées de la virtualisation, en mettant l'accent sur l'utilisation de conteneurs pour l'efficacité et la portabilité des applications. Les participants acquièrent des compétences essentielles pour déployer, gérer et optimiser des environnements conteneurisés.
2. Qui suis-je?
Julien Dubois
Co-auteur de « Spring par la
pratique »
Ancien de SpringSource
Directeur du consulting chez Ippon
Technologies
Suivez-moi sur Twitter : @juliendubois
http://creativecommons.org/licenses/by-nc-nd/3.0/
3. Nous allons parler
de ....
Bases de données
relationnelles
Hibernate
Cache
NoSQL
5. Idée #1: Hibernate est
magique
Il optimise tout seul
les requêtes SQL
Plus besoin d’être
compétent!
6. Idée #2: Le cloud est magique
Le cloud permet d'ajouter
automatiquement des machines
en fonction des besoins
Il permet de tenir ainsi les pics
de charge sans rien avoir à faire
7. La réalité est différente
Ne croyez pas 01 Informatique
Votre base de données ne monte pas
en charge
Et Hibernate n'y peut rien...
8. Les données sont votre
problème
Dans 90% des applications, la base de données est
le principal point de contention
Ces données sont stockées dans une base
relationnelle :
Transactions
Sécurité
Intégrité
Mais ces qualités ont un coût : vous ne pouvez pas
monter en charge facilement
9. Exemple: quels amis viennent au BreizhCamp?
Problème
Vous avez une table «utilisateurs» avec 1 million de lignes
Chaque utilisateur est ami avec un certain nombre d’autres
utilisateurs (many-to-many)
Chaque utilisateur peut aller à des événements (many-to-many)
Quand un utilisateur va sur la page d’un événement, on veut lui
présenter la liste de ses amis qui y vont
Solution «Oracle simple»
Deux jointures: une pour sélectionner l’événement, une autre
pour sélectionner l’utilisateur en cours
10. Que penser de cette solution?
Très sécurisée: transactions, intégrité...
Très simple à mettre en place avec Hibernate
Ne monte pas en charge si on a beaucoup
d’utilisateurs dans la base
Va poser problème s’il y a beaucoup d’écritures
Ne monte pas en charge si on a beaucoup de lectures
Tout est sur la même machine (Single Point of Failure)
11. Vos données dans les
nuages
Le problème, c'est
qu'une base de
données relationnelle
n'est pas scalable
On ne peut pas rajouter de
nœuds « à chaud »
Sa scalabilité n'est pas du tout linéaire : pour
maintenir ses transactions et son intégrité, elle est
forcée de locker des ressources
Sur une vraie base de données (Oracle), ce lock est
au niveau d'une ligne
12. Cela a même été prouvé
Le théorème de CAP (ou théorème de Brewer)
Votre système ne peut avoir que 2 des 3
caractéristiques suivantes
Cohérent (Consistent)
Disponible (Available)
Tolérant aux pannes réseau (Partition Tolerance)
Conséquence : votre base de données
relationnelle va mal monter en charge
13. Mais que fait Oracle?
1ère solution : faire monter en charge la machine
Partitionning
Une table peut être
découpée sur
plusieurs disques
durs
Réduit les
problèmes d'I/O
Ne résout pas les
problèmes de crash
machine
Cher
Option payante
Matériel coûteux
14. Application sur notre exemple
Problème
Quels sont mes amis qui viennent au JUG?
Solution Oracle «partitionning»
On utilise le champs date pour l’événement, et on partitionne
par mois
Réduction du nombre de lignes requêtées: on ne fait les
requêtes (lecture/écriture) que sur le mois en cours
15. Que penser de cette solution?
Mêmes qualités:
Très sécurisée: transactions, intégrité...
Très simple à mettre en place avec Hibernate
Peut résoudre les problèmes d’IO si les données le
permettent... Mais ce n’est pas vraiment le cas de
notre exemple!
Tout est sur la même machine: Single Point of Failure
(SPoF)
16. Mais que fait Oracle? (2)
2ème solution : Oracle RAC
Permet de monter en charge « linéairement » d'après la publicité: résout le
problème du crash machine
En fait la base locke toujours les ressources en écriture
Pose problème si vous avez beaucoup d'écritures
(de toute manière, c'est
rarement la lecture qui
pose problème)
Pose des problèmes de
latence réseau :
géo-cluster non
recommandé
Très cher
Option payante très
coûteuse
Matériel (dont réseau)
très coûteux
17. Application sur notre exemple
Problème
Quels sont mes amis qui viennent au JUG?
Solution Oracle «RAC»
Même requête qu’au début, avec deux jointures
Cette requête est exécutée sur l’un des noeuds de la grille
18. Que penser de cette solution?
Mêmes qualités que précédemment...
Va résoudre certains problèmes en
lecture: les requêtes sont réparties sur
chaque noeud
Plus de Single Point of Failure (SPoF)
Mais toujours un problème en écriture...
19. On m’aurait menti?
Oui, votre application Java monte en
cluster facilement, « dans le cloud »
Tant que vous utilisez des « sticky
sessions »
Ou que vous stockez votre état
ailleurs (cookie ou base de
données?)
Non, votre base de données ne
monte pas en cluster
Or, c'était déjà probablement elle
qui était le point de contention
En conclusion, le « Cloud » ne vous
sert pas à grand chose
20. Et Hibernate?
Hibernate s'appuie sur les SGBDR
Il souffre donc des mêmes problèmes de scalabilité
Il faut même le configurer pour qu'il utilise
correctement leurs
fonctionnalités
avancées
(partitionning)
Donc, votre application
Hibernate ne devrait pas
monter en charge
21. Une solution: le cache de
2ème niveau
Hibernate possède un système de cache
Cache de 1er niveau : la transaction en cours
Cache de 2ème niveau : les données en base
Ce cache de deuxième niveau permet d'éviter les
requêtes en lecture sur la base
Tant que les requêtes sont simples (lecture d'une
ligne en utilisant sa PK)
Ou qu'on utilise Hibernate de manière
intelligente : faire n+1 requêtes sur le cache peut
être plus performant qu'un outer join
Et que les données sont bien réparties...
22. La loi de Zipf
Initialement une loi sur les mots utilisés
Certains sont beaucoup plus courants
que d'autres
D'où une distribution très particulière
des données
Empiriquement, on retrouve le même
phénomène dans de nombreuses
applications
Georges Kingsley Zipf
Une petite partie des données est tout le (1902-1950)
temps utilisée
Le reste n'est presque jamais lu
Si votre application suit cette loi, votre
cache sera très performant
23. Application sur notre exemple
Problème
Quels sont mes amis qui viennent au JUG?
Solution «Cache»
Plusieurs solutions possibles, en voici une
Mettre les participants d’un événement en cache
Mettre les amis de l’utilisateur en cours en cache
Faire la jointure en Java
... et stocker le résultat en cache!
24. Que penser de cette solution?
Mêmes qualités que précédemment...
Résout beaucoup de problèmes de lecture (à condition
de suivre la loi de Zipf): on stocke les résultats en
cache!
Mais on ajoute des problèmes de désynchronisation du
cache...
On a toujours un problème en écriture
Et il y a à nouveau un SPoF
25. Le cache distribué
Ce cache peut être distribué sur un cluster
Ehcache (simple)
Terracotta, Coherence, Gemfire : produits
commerciaux, hauts de gamme
Réduit considérablement les problèmes de
désynchronisation du cache
Cela résout les problèmes de montée en charge
d'applications avec beaucoup de lectures
Solution concurrente d'Oracle RAC, en moins cher,
plus performant, plus intelligent
26. Le write-behind
La plupart des caches distribués
(Terracotta, Coherence) sont
transactionnels
On committe dans le cache, qui se charge
ensuite de gérer la base de données
Les données sont insérées en base par
batch, de manière asynchrone
Plus de performance
Moins de lock
27. Application sur notre exemple
Problème
Quels sont mes amis qui viennent au JUG?
Solution «Cache distribué»
Idem que pour un cache «simple»
Mais on peut avoir plusieurs serveurs en parallèle
En même faire un batch en parallèle, qui utilise le même cache
28. Que penser de cette solution?
Mêmes qualités que précédemment...
Résout quasiment tous les problèmes en lecture, et
certains problèmes en écriture
Mais à certaines conditions:
Acheter une solution de clustering (prix raisonnable
par rapport à Oracle RAC)
Ajouter du monitoring (pour éviter le syndrome du
« split brain »)
30. Le NoSQL
Derrière ce terme se cachent de nombreuses
solutions et
concepts différents
Nous allons nous
focaliser sur
Apache Cassandra
L'une des solutions les plus populaires
31. Cassandra
Cassandra est une base de données
distribuée, orientée colonne
Cassandra n’a pas de schéma
En fait, il n’a ni transaction, ni
intégrité référentielle
Pour reprendre le théorème
de CAP: Cassandra est hautement disponible,
tolérant aux pannes réseau, mais pas toujours
cohérent
Il peut donc être scalable, sans single point of failure
(spof)
Il est particulièrement efficace en écriture
32. BASE
Encore un nouvel acronyme
amusant
Basically Available, Soft-state,
Eventually consistent
Opposé de ACID
Quizz : que veut dire ACID ?
33. «Eventual Consistency»
Comment ça, pas «coherent»?
« Eventual » est un faux ami en français : cohérence
« au final »
A un moment donné la base n'est peut-être pas
cohérente, mais à terme elle le sera
En fait Cassandra vous donne le choix entre :
Une application très cohérente, mais lente en
écriture
Une application très rapide en écriture, mais avec des
risques au niveau de la cohérence
Les valeurs par défaut vous proposent une solution
très rapide, avec des risques très limités
34. Exemple typique
1. Vous écrivez sur un nœud
2. Cette écriture met du temps à se répliquer
sur un deuxième nœud (on parle en
millisecondes)
3. Quelqu'un lit sur ce deuxième nœud, en
préférant la rapidité à la consistance (c'est
son choix)
4. Cette personne obtient donc une donnée
ancienne
5. En background, Cassandra valide la donnée et
répare cette erreur
35. Mais que fait l’HADOPI?
Cassandra fait du P2P entre ses différents nœuds
On peut facilement en rajouter ou en enlever un
Les données sont réparties entre ces nœuds
automatiquement
Mais si on veut une « bonne » répartition, les choses
deviennent plus compliquées (ce n'est pas magique non
plus)
36. Les problèmes en
production
La qualité des données :
Monitoring & production
ne sont pas au même
niveau que sous Oracle
− Mais les outils sont
nettement plus simples à
utiliser
− Offre commerciale : DataStax
Il peut y avoir des données non consistantes à un moment
donné
Il n'y a ni transaction, ni intégrité référentielle
Tout dépend de ce que vous faites : cela n'est pas nécessairement
grave
37. Les problèmes en développement
Une manière très différente de gérer ses données
Pas d'API de haut niveau
(Hibernate), ni même
d'API générique (JDBC)
Il faut donc coder des
DAOs à la main de
manière assez fastidieuse,
comme avant JDBC
(bon courage)
Pas de lazy-loading, etc :
gros retour en arrière
38. Exemple de code
ColumnSlice<String, String> result =
createSliceQuery("MY_KEYSPACE ", stringSerializer,
stringSerializer, stringSerializer)
.setColumnFamily("UTILISATEURS")
.setKey(email)
.setColumnNames(
"first_name",
"last_name",
"last_login")
.execute()
.get();
39. Application sur notre exemple
Problème
Quels sont mes amis qui viennent au JUG?
Solution «Cassandra»
Faire une «Column Family» qui pour un utilisateur lui permet de
retrouver tous ses amis
Faire une autre « Column Family» qui stocke tous les utilisateurs
qui participent à un événement
Bien mélanger...
40. Que penser de cette solution?
Plus aucune des qualités précédentes:
transactions, intégrité, facilité de
développement...
Les données sont directement insérées dans
un format proche des besoins métier
Résout les problèmes en lecture (mais un
cache reste le bienvenu)
Résout les problèmes en écriture
Pas de Single Point of Failure
42. Hibernate OGM
Utilisation des APIs d'Hibernate sur des bases
NoSQL
Officiel depuis aujourd’hui (17/06/2011)
43. Kundera
http://code.google.com/p/
kundera/
Permet de faire du JPA
directement
Spécifique Cassandra à l’origine
HBase et MongoDB en alpha
44. Mais il y a des limitations
Il reste difficile avec ces outils d’utiliser
pleinement les possibilités de Cassandra
Gestion des «wide rows» par exemple
Ces outils sont encore très jeunes
Essentiellement du CRUD pour l’instant
45. Quizz
Parmi les solutions étudiées, laquelle vous parait
la plus pertinente pour notre exemple?
Oracle «simple»
Oracle «partitionning»
Oracle «RAC»
Cache
Cache distribué
Cassandra
Une autre solution?
46. Conclusion
Ne laissez pas tomber votre base de données
relationnelle
Transactions, intégrité, sécurité
Largement suffisante pour des besoins normaux
Avec des outils inégalés en productivité (Hibernate)
Travaillez sur le cache, et en particulier le cache de
2 nd niveau d'Hibernate
Le NoSQL sert à des besoins spécifiques
Certaines solutions (Cassandra) sont très bien
adaptées au Cloud
A terme vous pourrez y accéder avec Hibernate/
JPA
47. Questions? Réponses!
Des questions sur le contenu de cette
présentation ?
Des ajouts ?
Des commentaires ?
N'hésitez pas à échanger et partager sur
Twitter : @juliendubois
http://creativecommons.org/licenses/by-nc-nd/3.0/