SlideShare une entreprise Scribd logo
1
Devoxx France 2016
Une conf appréciée, un slide
Antoine Rey
13 mai 2016
2
ECMAScript 2015 / ES6 : c’est maintenant !
o ES6 : plus grosse évolution du langage JavaScript depuis 20 ans
• Plus facile : moins de piège, mode strict
• POO : classes, héritage, accesseurs, constructeur …
• Fonctionnalités : déstructuration, rest & spread, fonctions fléchées, modules
…
o ES5 : supporté par IE9+, navigateurs Evergreens, NodeJS, IDE, outils de
builds …
o Utilisation de ES6 via le transpileur Babel
o Zoom sur la syntaxe : http://lebab.io/try-it
3
Architecture technique Stack Overflow
• 2 423 requêtes HTTP / seconde
• 504 millions de requêtes SQL / jour
• 3 To de données émises / jour
• Temps de réponse moyen : 22,21 ms
x4 x2 x3
x9
x4
Angular 2@Component({
providers: [
new Provider(QuestionsStore, {
useFactory: () => new QuestionsStore(SessionStore.read())
})
],
selector: 'summary',
template: `
<div class="mdl-card_sup-text">
<h4>Your score is {{ score }}/{{ total }}</h4>
</div>
<question-card [preview]="true" [question]="question" *ngFor="#question of questions"></question-card>
`,
directives: [QuestionCard]
})
export class Summary implements OnInit {
private questions: IQuestion[];
private score: number;
private total: number;
private questionsStore: IQuestionsStore;
constructor(questionsStore: QuestionsStore) {
this.questionsStore = questionsStore;
this.questionsStore.fetch().then( (questions) => this.questions = questions );
}
ngOnInit() {
this.total = this.questions.length;
this.score = this.questionsStore.computeResult(this.questions);
}
}
Orienté composants
Associé à un selector CSS3
Template HTML inline
Injection de dépendance
Callback sur cycle de vie
Composant enfant
Binding de propriétés
6
Apache Kafka
0 1 2 3
0 1
Topic A
Partition 1
Partition 2
Topic B
0 1 2 Partition 1
Consommateur Ω
Consommateur µ
Zookeeper
Client
A
Client
B
7
Spring Boot & Spring Cloud
“ make jar not war ”Service Discovery
(Eureka)
Config Server
(Spring Cloud)
Micro-service
de réservations
REST
H2
Client de
réservation
GET http://reservation-service/reservations
RabbitMQ
8
Jenkinsfile
“ le pendant du .travis.yml pour Jenkins”
jettyUrl = 'http://localhost:8081/’
def servers
stage ’Build'
node {
checkout scm
servers = load 'servers.groovy'
mvn '-o clean package'
dir('target') {stash name: 'war', includes: 'x.war'}
}
stage ’Acceptance Test'
parallel(longerTests: {
runTests(servers, 30)
}, quickerTests: {
runTests(servers, 20)
})
def mvn(args) {
sh "${tool 'Maven 3.x'}/bin/mvn ${args}"
}
React
10
var HelloMessage = React.createClass({
render: function() {
return <div>Hello {this.props.name}</div>;
}
});
ReactDOM.render(<HelloMessage name="John" />, mountNode);
• Le V de MVC
o Déclaratif
o Composants
• Virtual DOM
o Performance
o Server Side rendering
• React Native
o Learn once, write anywhere
o iOS et Androïd
Une JVM de 3 To
11
Rendre la doc aussi fun que le code
• Conversations over documentation
• Pair programming, mob-programming, revues de code
• Savoir métier et DDD
• Scénarios fonctionnels dans Cucumber, SpecFlow, JGiven
• Session d’Event Storming
• La documentation passe également par le code
• Conventions de nommage, package-info.java
• Annotations Java avec sémantique (ex: @BoundedContext)
• Gérer la documentation comme le code
• Versionnée dans le référentiel de code source
• Présente dans l’IDE pour prendre en compte les refactoring
• Outils de génération de diagrammes : Ditaa, DOT …
12
Bonnes pratiques des revues de code
13
• Prendre le temps, à tête reposée et à un rythme soutenable
• Echangez de vive voix pendant les revues
• L’auteur corrige, en binôme si nécessaire
• Ecrivez vos standards et les faire évoluer
• Critiquez le code, pas le développeur
• Pas de discussions à rallonge
• Trouvez des compromis et en faire un standard
“ 1h de revue = 4h de debug économisée ”
14
Vidéos librement disponibles sur le channel « Devoxx FR 2016 » de Youtube
https://www.youtube.com/channel/UCsVPQfo5RZErDL41LoWvk0A

Contenu connexe

Tendances (20)

PPTX
Les dessous du framework spring
Antoine Rey
 
PDF
ParisJUG Spring Boot
Julien Sadaoui
 
PDF
Architecture java j2 ee a partager
aliagadir
 
PDF
Mockito Chti JUG
David Gageot
 
PPTX
Les Streams de Java 8
Antoine Rey
 
PDF
Tp java ee.pptx
Eric Bourdet
 
PPTX
Hibernate jpa
Lhouceine OUHAMZA
 
PDF
"Input/Ouput, 16 ans après" à Devoxx France 2012
Jean-Michel Doudoux
 
PPT
Spring mvc
Lhouceine OUHAMZA
 
PDF
Installation et Configuration ee JDK et de Tomcat
Mohamed Ben Bouzid
 
PDF
Cours jee 1
Nassmate Assabah
 
PPTX
Introduction à Angular JS
Antoine Rey
 
PDF
JBoss - chapitre JMX
Franck SIMON
 
KEY
Spring Batch 17-05-2011
Normandy JUG
 
PPT
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
PPTX
Présentation1
Boulkenafet samir
 
PPT
Les Servlets et JSP
Korteby Farouk
 
PDF
Bean Validation - Cours v 1.1
Laurent Guérin
 
Les dessous du framework spring
Antoine Rey
 
ParisJUG Spring Boot
Julien Sadaoui
 
Architecture java j2 ee a partager
aliagadir
 
Mockito Chti JUG
David Gageot
 
Les Streams de Java 8
Antoine Rey
 
Tp java ee.pptx
Eric Bourdet
 
Hibernate jpa
Lhouceine OUHAMZA
 
"Input/Ouput, 16 ans après" à Devoxx France 2012
Jean-Michel Doudoux
 
Spring mvc
Lhouceine OUHAMZA
 
Installation et Configuration ee JDK et de Tomcat
Mohamed Ben Bouzid
 
Cours jee 1
Nassmate Assabah
 
Introduction à Angular JS
Antoine Rey
 
JBoss - chapitre JMX
Franck SIMON
 
Spring Batch 17-05-2011
Normandy JUG
 
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA
 
Présentation1
Boulkenafet samir
 
Les Servlets et JSP
Korteby Farouk
 
Bean Validation - Cours v 1.1
Laurent Guérin
 

Similaire à Retours Devoxx France 2016 (20)

PPTX
Présentation Javascript à l'ESI (Alger)
Dr Samir A. ROUABHI
 
PPTX
Change mind about JS
Damien Simonin Feugas
 
PPTX
Javascript proprement
Guillaume Collic
 
PDF
web-avance-jssvghjjjjjjkkkkhjjjjjkrtyujj
CdricMboutou
 
PPTX
Javascript un langage supérieur
Fredy Fadel
 
PPTX
Présentation de ECMAScript 6
Julien CROUZET
 
PDF
Algo poo ts
mohamed El babili
 
PPTX
Rouabhi algiers meetup
Samir Rouabhi
 
PDF
Javascript pour les développeurs Java : quels sont les pièges à éviter ?
FlorianBoulay
 
PPTX
The Future of Javascript
Dr Samir A. ROUABHI
 
PPTX
The future of JavaScript
Algiers Tech Meetup
 
PDF
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Julien Jakubowski
 
PDF
JavaScript pour le développeur Java
jollivetc
 
PDF
Cours JavaScript
Olivier Le Goaër
 
PPTX
EcmaScript
Dagbouj Hatem
 
PDF
Function oop - bonnes pratiques ms tech days
Jean-Pierre Vincent
 
PPTX
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Société ELOSI
 
ODP
Patterns et bonnes pratiques autour de JavaScript
Microsoft Technet France
 
PPT
Introduction à JavaScript
Abdoulaye Dieng
 
PPTX
cours javascript.pptx
YaminaGh1
 
Présentation Javascript à l'ESI (Alger)
Dr Samir A. ROUABHI
 
Change mind about JS
Damien Simonin Feugas
 
Javascript proprement
Guillaume Collic
 
web-avance-jssvghjjjjjjkkkkhjjjjjkrtyujj
CdricMboutou
 
Javascript un langage supérieur
Fredy Fadel
 
Présentation de ECMAScript 6
Julien CROUZET
 
Algo poo ts
mohamed El babili
 
Rouabhi algiers meetup
Samir Rouabhi
 
Javascript pour les développeurs Java : quels sont les pièges à éviter ?
FlorianBoulay
 
The Future of Javascript
Dr Samir A. ROUABHI
 
The future of JavaScript
Algiers Tech Meetup
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Julien Jakubowski
 
JavaScript pour le développeur Java
jollivetc
 
Cours JavaScript
Olivier Le Goaër
 
EcmaScript
Dagbouj Hatem
 
Function oop - bonnes pratiques ms tech days
Jean-Pierre Vincent
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Société ELOSI
 
Patterns et bonnes pratiques autour de JavaScript
Microsoft Technet France
 
Introduction à JavaScript
Abdoulaye Dieng
 
cours javascript.pptx
YaminaGh1
 
Publicité

Dernier (11)

PDF
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
PDF
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
PDF
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
PDF
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
PDF
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
PDF
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
PDF
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
PDF
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
PPTX
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
PDF
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
PDF
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
linkyfi presentation et ses fonctionnalité
ZakariaRAHOUI2
 
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
Publicité

Retours Devoxx France 2016

  • 1. 1 Devoxx France 2016 Une conf appréciée, un slide Antoine Rey 13 mai 2016
  • 2. 2
  • 3. ECMAScript 2015 / ES6 : c’est maintenant ! o ES6 : plus grosse évolution du langage JavaScript depuis 20 ans • Plus facile : moins de piège, mode strict • POO : classes, héritage, accesseurs, constructeur … • Fonctionnalités : déstructuration, rest & spread, fonctions fléchées, modules … o ES5 : supporté par IE9+, navigateurs Evergreens, NodeJS, IDE, outils de builds … o Utilisation de ES6 via le transpileur Babel o Zoom sur la syntaxe : http://lebab.io/try-it 3
  • 4. Architecture technique Stack Overflow • 2 423 requêtes HTTP / seconde • 504 millions de requêtes SQL / jour • 3 To de données émises / jour • Temps de réponse moyen : 22,21 ms x4 x2 x3 x9 x4
  • 5. Angular 2@Component({ providers: [ new Provider(QuestionsStore, { useFactory: () => new QuestionsStore(SessionStore.read()) }) ], selector: 'summary', template: ` <div class="mdl-card_sup-text"> <h4>Your score is {{ score }}/{{ total }}</h4> </div> <question-card [preview]="true" [question]="question" *ngFor="#question of questions"></question-card> `, directives: [QuestionCard] }) export class Summary implements OnInit { private questions: IQuestion[]; private score: number; private total: number; private questionsStore: IQuestionsStore; constructor(questionsStore: QuestionsStore) { this.questionsStore = questionsStore; this.questionsStore.fetch().then( (questions) => this.questions = questions ); } ngOnInit() { this.total = this.questions.length; this.score = this.questionsStore.computeResult(this.questions); } } Orienté composants Associé à un selector CSS3 Template HTML inline Injection de dépendance Callback sur cycle de vie Composant enfant Binding de propriétés
  • 6. 6 Apache Kafka 0 1 2 3 0 1 Topic A Partition 1 Partition 2 Topic B 0 1 2 Partition 1 Consommateur Ω Consommateur µ Zookeeper Client A Client B
  • 7. 7 Spring Boot & Spring Cloud “ make jar not war ”Service Discovery (Eureka) Config Server (Spring Cloud) Micro-service de réservations REST H2 Client de réservation GET http://reservation-service/reservations RabbitMQ
  • 8. 8
  • 9. Jenkinsfile “ le pendant du .travis.yml pour Jenkins” jettyUrl = 'http://localhost:8081/’ def servers stage ’Build' node { checkout scm servers = load 'servers.groovy' mvn '-o clean package' dir('target') {stash name: 'war', includes: 'x.war'} } stage ’Acceptance Test' parallel(longerTests: { runTests(servers, 30) }, quickerTests: { runTests(servers, 20) }) def mvn(args) { sh "${tool 'Maven 3.x'}/bin/mvn ${args}" }
  • 10. React 10 var HelloMessage = React.createClass({ render: function() { return <div>Hello {this.props.name}</div>; } }); ReactDOM.render(<HelloMessage name="John" />, mountNode); • Le V de MVC o Déclaratif o Composants • Virtual DOM o Performance o Server Side rendering • React Native o Learn once, write anywhere o iOS et Androïd
  • 11. Une JVM de 3 To 11
  • 12. Rendre la doc aussi fun que le code • Conversations over documentation • Pair programming, mob-programming, revues de code • Savoir métier et DDD • Scénarios fonctionnels dans Cucumber, SpecFlow, JGiven • Session d’Event Storming • La documentation passe également par le code • Conventions de nommage, package-info.java • Annotations Java avec sémantique (ex: @BoundedContext) • Gérer la documentation comme le code • Versionnée dans le référentiel de code source • Présente dans l’IDE pour prendre en compte les refactoring • Outils de génération de diagrammes : Ditaa, DOT … 12
  • 13. Bonnes pratiques des revues de code 13 • Prendre le temps, à tête reposée et à un rythme soutenable • Echangez de vive voix pendant les revues • L’auteur corrige, en binôme si nécessaire • Ecrivez vos standards et les faire évoluer • Critiquez le code, pas le développeur • Pas de discussions à rallonge • Trouvez des compromis et en faire un standard “ 1h de revue = 4h de debug économisée ”
  • 14. 14 Vidéos librement disponibles sur le channel « Devoxx FR 2016 » de Youtube https://www.youtube.com/channel/UCsVPQfo5RZErDL41LoWvk0A

Notes de l'éditeur

  • #3: JavaScript 2015, Angular 2, React, Big Server, Reactive, Cloud, Test, Git, Spring Boot, HTTP 2.0, Kubernetes, Lean, Blockchain, Microservice, Kafka, Jenkins, Maven, Test, Docker, TypesScript, Jgiven, Java 9, Jigsaw, D3.JS, Toast Tk, Akka, SonarLint, Security, Docker, Continous Delivery, Vue.js, SQL, Polymer, Ansible, Vert.x, Spark, HBase, Scala, React, Mesos, Event Storming, Bluemix, Androïd, Feignant, Postgresql, Dropwizard, JavaScript, Java 8, Ionic, Traefik, Redux, RxJs,, Elasticsearch, Lucene, Ansible, Hadoop, OpenShift, TDD, JVM, DevOps, TDD, JHipster, Hibernate, EhCache, Chronicle Queue, JSPM, Systemjs, Gruntjs, Zeppelin, RAML, REST, H2O, Haskell, Gradle, Asciidoctor, SQL, Eclipse, Spring Cloud, Swift, Jigsaw, Big Data, AWS, CDI, jOOQ, Timelion, DDD, Les Cast Codeurs
  • #4: D’après le talk ES6+ maintenant ! de Christophe Porteneuve Slides : http://tdd.github.io/devoxx-es6-maintenant/
  • #5: D’après le talk Stack Overflow behind the scenes. How it’s made de Oded Coster Slides : http://OdedCoster.com/Devoxx.fr-2016
  • #6: Extrait simplifié du fichier Summary.ts https://github.com/manekinekko/angular2-codelab Syntaxe TypeScript
  • #7: D’après le Hand’s on Lab sur Kafka animé par Matthieu Blanc & Sylvain Lequeur Kafka est un journal de log distribué, hautement disponible et performant. Cette solution peut être considérée comme une base de donneés. Son stockage de données est sûr et la persistance est au cœur même du système. GitHub : https://github.com/mblanc/hands_on_kafka
  • #8: Basé sur la conférence The Bootiful Microservice de Josh Long (Pivotal) Présentation : http://github.com/joshlong/bootiful-microservices
  • #9: D’après la conférence String Concaténation de 1 à 9 animée par Rémi Forax Slides : https://speakerdeck.com/forax/string-concatenation-de-1-a-9 N’utiliser les StringBuilder que pour les boucles, sinon l’opérateur + : le compilateur et la JVM s’occupent de tout. Dans Java 9, à cause de la JEP 254, les chaines de caractères ne sont plus codées avec des char mais avec des tableaux de bytes. Il y’a un paramètre supplémentaire qui indique l’encodage (LATIN, UTF16)
  • #10: Inspiré du Tools in action De Jenkins Maven / Freestyle à Pipeline animé par Adrien Lecharpentier Slides : https://speakerdeck.com/alecharp/freestyle-a-pipeline Exemple de script Groovy extrait de https://github.com/jenkinsci/workflow-aggregator-plugin/blob/master/demo/repo/Jenkinsfile
  • #11: D’après la conférence Let’s React animée par Mathieu Ancelin Youtube : https://www.youtube.com/watch?v=IFM8krjbKmQ Exemple JSX du Hello World extrait de https://facebook.github.io/react/
  • #12: Photo prise lors de la conférence Comment faire tourner une JVM de 16 To animée par Antoine Chambille et Romain Colle (Quartet FS) Big Memory Servers avec architecture NUMA : - Bullion 24 TB – 288 Cores – Linux : serveur modulaire qu’on peut étendre, assemblé en France - Oracle Sparc M7-16 : 16 TB – 512 Cores – Solaris
  • #13: D’après la conférence Live Documentation : vous allez aimer la documentation animée par Cyrille Martraire
  • #14: D’après le quickie Ratez ses revues de code en 5 leçons animée parMichel Domenjoud (Octo) Partager les connaissances et les standards 3 types de revue de code : par un pair, collective ou pair programming