lundi 29 décembre 2014

Spectacular Java


This post is a sample of what Java technology can do with or without Java Language.

Some use cases are spectacular and show the capacity of Java to operate under hard conditions : high availability, BigData, ...


JavaCard : an OS for card

Oracle claims two milliards deployments per year on various hardwares.

Sources:
http://www.oracle.com/us/technologies/java/embedded/card/overview/index.html
http://fr.wikipedia.org/wiki/Java_Card

BigData : storage

Apache Cassandra is a NoSQL DB written in Java, here are some deployments :

- Apple : 75 000 nodes, 10 peta bytes of data
- Netflix : 2 500 nodes, 420 tera bytes of data, 1 trillion requests per day
- eBay : 100 nodes 250 tera bytes of data

Originally built by Facebook then given to Apache fundation.

Shiny customers   : Cern, GitHub, ...

Sources :
http://cassandra.apache.org/,
http://fr.wikipedia.org/wiki/Cassandra_%28base_de_donn%C3%A9es%29


Apache HBase is also a NoSQL DB written Java :
- Facebook : replace Cassandra since 2012 to store messages.
- Twitter
- Yahoo

Sources :
http://hbase.apache.org/
http://fr.slideshare.net/brizzzdotcom/facebook-messages-hbase
http://wiki.apache.org/hadoop/Hbase/PoweredBy



System admin : Puppet

Yes, it's real.

Operationals are probably the most hateful people about Java and probably the most ignorant about it.

Although, one of the most known and use system technology use Java : Puppet.

Puppet Server run now on JVM :

"
The JVM is an ideal platform to use for long-running server side applications. It's been battle-tested over the last 20 years, and it’s an extremely fast, stable, and reliable platform on which to run applications like web servers, message queues, and other services.

Additionally, it has a wealth of existing tools, libraries, and frameworks that serve as tremendously valuable building blocks to enable rapid development and allow developers to focus their efforts on domain-specific problems.

Several great profiling tools and debuggers available in the JVM ecosystem give developers and users unparalleled insight into the behavior and performance of their applications.

Sophisticated instrumentation and metrics APIs allow us to track the most important characteristics of a running application, and expose them in a highly visible, user-friendly fashion. And because JVM-based applications are portable across most of our supported platforms, we don’t need to spend as much time building and packaging things for each individual platform.
"

Summary :

- ecosystem wealth
- portability : try to run a  Python, C, Ruby software on many Linux and unix flavors without turning mad
- instrumentation and metrics : a must have feature for cloud others needs, this a strong feature in Java platform (JMX, Java Agent, AOP, ...)

Sources:
http://puppetlabs.com/blog/new-era-application-services-puppet-labs


API under heavy load

Netflix API is heavily used and must respect SLA to deliver a good user experience.

In 2012 ( check above link ) is impressive : 1 billion request per day, 100 000 request per second.

Based on a Tomcat/Jetty architecture and SOA approach.

Many protocols are used to improve performance : Protobuf, Thrift, ...

Sources :
http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html


BigData : data analysis

LinkedIn open source Cubert.

Sources:
https://engineering.linkedin.com/big-data/open-sourcing-cubert-high-performance-computation-engine-complex-big-data-analytics




Internet of things

Java community is passionate about this subject : https://community.java.net/community/iot

Eclipse fundation offers an Iot platform : http://iot.eclipse.org/java/


 BigData : search

 ElasticSearch is a search engine and a data storage.

Some customers :
- Deezer
- Github
- SoundClound
- MacGraw and Hill
- France, Gendarmerie nationale

ElasticSearch company has many satellite products : Kibana, LogTash are a  must for logs processing.

Sources:
http://www.elasticsearch.org/case-studies/
http://www.elasticsearch.org/overview/kibana/



System admin : Zookeeper

Apache Zookeeper has been built by Yahoo for many needs : it's a distributed  coordination system useful for many  tasks like  election leader, deployment configuration, ...

Deployments:
- Yahoo
- Rackspace
- Zynga : http://code.zynga.com/2011/08/updating-thousands-of-configuration-files-in-under-a-second/
- ...

Used by:
- Apache HBase
- Akka
- Redis
- ...

Sources:
https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
http://fr.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper


Quality and code analysis

Sonar is for me one of the best tool of recent years, it allows a fine code analysis : http://www.sonarqube.org/, its open to other languages.


Here are samples of Sonar analysis:
http://nemo.sonarqube.org/

Java pour les grands ... du web et les autres

Cet article vise à recenser quelques cas d'usage spectaculaires ou inattendus de technologies Java avec sans l'usage du langage Java lui même.

Il vise aussi à dissiper certains doutes quant aux capacités de Java à opérer dans des contextes difficiles : haute disponibilité, BigData, forte charge, ...

Au vu des cas d'utilisation qui suivent, notamment dans le domaine de la haute disponibilité et du big data, peut-on croire un seul instant que des sociétés comme Apple, Yahoo, Netflix, Spotify, ... confieraient leurs données ou leurs services à une technologie qui ne "scale" pas et qui n'est pas performante ?

JavaCard : une système d'exploitation pour carte à puces

Oracle revendique 2 milliards de déploiement par an sur différents types de matériels.

Sources:
http://www.oracle.com/us/technologies/java/embedded/card/overview/index.html
http://fr.wikipedia.org/wiki/Java_Card

BigData : le stockage

Apache Cassandra est une BDD NoSQL Java, voici quelques déploiements :

- Apple : 75 000 noeuds stockant plus de 10 Péta octets de données
- Netflix : 2 500 noeuds 420 Téra octets, 1 trillion de requête par jour
- eBay : 100 noeuds 250 T octets

Au départ développée par Facebook puis donné à la fondation Apache.

De très nombreux clients prestigieux : Cern, GitHub, ...

Sources :
http://cassandra.apache.org/,
http://fr.wikipedia.org/wiki/Cassandra_%28base_de_donn%C3%A9es%29


Apache HBase est aussi une BDD NoSQL Java, voici quelques déploiements :
- Facebook : remplace Cassandra depuis 2012 pour stocker les messages.
- Twitter
- Yahoo

Sources :
http://hbase.apache.org/
http://fr.slideshare.net/brizzzdotcom/facebook-messages-hbase
http://wiki.apache.org/hadoop/Hbase/PoweredBy



Administration système : Puppet

Oui, vous ne rêvez pas. Les profils système sont probablement ceux qui dénigrent le plus Java et souvent ceux qui connaissent le moins cet écosystème.

Et pourtant, une des technologies les plus emblématiques du monde système vient de mettre un pied dans le monde Java : Puppet.

Puppet Server tournera maintenant sur une JVM, les raisons évoquées sont claires :

"
The JVM is an ideal platform to use for long-running server side applications. It's been battle-tested over the last 20 years, and it’s an extremely fast, stable, and reliable platform on which to run applications like web servers, message queues, and other services.

Additionally, it has a wealth of existing tools, libraries, and frameworks that serve as tremendously valuable building blocks to enable rapid development and allow developers to focus their efforts on domain-specific problems.

Several great profiling tools and debuggers available in the JVM ecosystem give developers and users unparalleled insight into the behavior and performance of their applications.

Sophisticated instrumentation and metrics APIs allow us to track the most important characteristics of a running application, and expose them in a highly visible, user-friendly fashion. And because JVM-based applications are portable across most of our supported platforms, we don’t need to spend as much time building and packaging things for each individual platform.
"

Pour résumé :

- richesse de l'écosystème : la question quand on fait du Java n'est pas de trouver une librairie pour tel besoin mais plutôt de choisir dans celles disponibles.

- portabilité : j'invite les amateurs de Python, C, Ruby et autres à mettre à l'épreuve cette propriété fort intéressante pour les éditeurs de logiciel qui peuvent alors se concentrer sur leur métier

- instrumentation et métriques : fondamental pour le cloud et autres besoins, ce point est particulièrement industrialisé pour la plateforme Java

Sources:
http://puppetlabs.com/blog/new-era-application-services-puppet-labs


API à fort traffic
 
L'API de Netflix est fortement sollicité et doit respecter des niveaux de service strict pour délivrer une bonne expérience utilisateur.

Le trafic en 2012, voir l'article dans les sources , est impressionnant : 1 milliard de requête par jour, 100 000 requêtes à la seconde.

Le tout sur une architecture Java à base de Tomcat/Jetty et une approche SOA.

Plusieurs protocoles sont disponibles pour optimiser les appels à l'API : Protobuf, Thrift, ...

Sources :
http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html


BigData : l'analyse des données

LinkedIn libère son moteur d'analyse des données: Cubert.

Sources:
https://engineering.linkedin.com/big-data/open-sourcing-cubert-high-performance-computation-engine-complex-big-data-analytics




Internet des objets

La communauté Java s'intéresse fortement à ce sujet : https://community.java.net/community/iot

La fondation Eclipse propose une plateforme Iot : http://iot.eclipse.org/java/


 BigData : la recherche

 ElasticSearch est un moteur de recherche et un conteneur de données NoSQL.

Quelques déploiements :
- Deezer
- Github
- SoundClound
- MacGraw and Hill
- Gendarmerie nationale

La société qui développe ElasticSearch propose d'autres produits Kibana,LogTash qui sont prisés dans le domaine de la gestion des logs.

Sources:
http://www.elasticsearch.org/case-studies/
http://www.elasticsearch.org/overview/kibana/



Administration système : Zookeeper

Apache Zookeeper a été développé par Yahoo pour différents besoins : c'est un système distribué de coordination utile pour des tâches comme l'élection de leader, le déploiement de configuration, ...


Déploiements:
- Yahoo
- Rackspace
- Zynga : http://code.zynga.com/2011/08/updating-thousands-of-configuration-files-in-under-a-second/
- ...

Utilisé par:
- Apache HBase
- Akka
- Redis
- ...

Sources:
https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
http://fr.slideshare.net/sauravhaloi/introduction-to-apache-zookeeper



Qualité et analyse de code

Sonar reste pour moi un des plus beaux outils de ces dernières années, il permet un niveau d'analyse et de contrôle sur le code Java qui est très important : http://www.sonarqube.org/, tout en étant ouvert à d'autres langages.


Voici ce que Sonar peut produire comme analyse:
http://nemo.sonarqube.org/