mercredi 25 avril 2018

Retours sur les Devoxx France 2018

Cette année 2018 a encore été très enrichissante. Le nombre de sujets et de conférences étaient très nombreux. Les participants étaient aussi au rendez-vous, c'est simple si on traine un peu trop on se retrouve a chercher une solution de replis car la salle est pleine (sauf pour l'amphi qui hors keynotes est jamais plein a 100%).

Voici donc une partie de mes notes :

Les nouveautés autour de Java

Présenté par José Paumard & Rémi Forax, cette présentation nous a montré que le cycle de version des releases Java à vraiment accéléré (pour ceux qui l'avaient pas constaté). 

Java adopte maintenant un système de fork pour la gestion des version. 
Une fois qu'une version est release un fork est crée et ce fork devient la nouvelle version de java.

Le cycle de version est maintenant de 6 mois avec des version LTS
La prochaine version LTS étant Java 11 qui devrait sortir en septembre 2018.

Pour les personnes qui souhaiteraient effectuer une montée de version il vaut mieux attendre la version LTS plutôt que de passer de Java 8/9 vers java 10 par exemple. 

Etant personnellement pas encore passé a Java 10, j'ai découvert avec bonheur une nouvelle fonctionnalité : 

var users = new ArrayList<User>();

Oui oui, ça ressemble bien a du javascript :) 
Ce nouveau mot-clef ne s'utilise qu'au sein d'une fonction (Donc pas en tant que déclaration d'attribut)  et permet aussi de mettre dans une variable une fonction exemple : 

public List<String> getUrls () {return List.of("");} 

protected List<String> sendsUrls(){
  
 List<String> result = new ArrayList<>();
 var maFonction = getUrls();

 result.addAll(maFonction);
 return result;
}

Et voici rapidement les nouveautés a venir dans les prochaines versions (sous réserve de du suivi de la roadmap)


Java 11: var as type in Lamba Parameters Constant Dynamic Raw string Condy Java 12: Nouveaux Switch Preconditions : ex: Preconditions.requireNonNull(variable); Java 14: Sealed interface : defini l'ensemble des classes qui implementent l'interface. Generalized pattern maching

Authentification et autorisation décentralisée avec jwt et macaroo

Présenté par Julien Tanguy, lors ce cette présentation il a été rappelé la différence entre l'autorisation et l'authentification. 
L'authentification: Qui suis je ? 
L'autorisation: Qu'est je le droit de faire ? 

Pour ces deux notion , deux outils, JWT pour l'authentification et Macaroons pour les autorisation. 
Ces deux outils fonctionnent avec des tokens, une signature basée par un secret et une Payload. 

De ce que j'ai pu voir lors de la démo ça à l'air simple à utiliser 

Pour regarder plus près macaroons.io et jwt.io

Chaos Engineering

Présenté par Julien Gakic.

Dashboard à l'appui lors de la présentation, le chaos engineering est une pratique qui prends de plus en plus d'ampleur. 

Cette pratique vise à accroire la résilience des applications afin que la production soit toujours stable malgré les aléas du backend.

Le concept est d'introduire des dysfonctionnements sur la production (oui oui) afin de voir comment se comporte le système dans sa globalité.
Cela permet notamment de détecter les effets de bords d'un dysfonctionnement d'une application (une application qui impacterait par exemple une autre application qui n'aurait pas de lien direct avec celle en défaut).

Pour induire ces défauts sur la production il existe un outil qui s'appelle Chaos monkey. 
Enfin voici un site qui en parle plus en détail Principle of chaos.


Swagger 2 est mort vive openapi 3 !

Présenté par Sébastien Lecacheur

Voici ce qu'apporte Openapi 3 par rapport à Swagger 2:

Ajout de la balise servers (permets de mettre plusieurs liens d'envs par ex)
Ajout de la balise components
Ajout sheme et bearer format
Modification de la balise Basic qui devient http
Wilcard pour les codes http
Ajout de Content et media type
Possibilité de mettre plusieurs exemples
Support d'openid connect