retours devoxx france 2016
TRANSCRIPT
1
Devoxx France 2016Une conf appréciée, un slide
Antoine Rey13 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é composantsAssocié à un selector CSS3
Template HTML inline
Injection de dépendance
Callback sur cycle de vie
Composant enfant
Binding de propriétés
6
Apache Kafka0 1 2 3
0 1Topic 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 MVCo Déclaratifo Composants
• Virtual DOMo Performanceo Server Side
rendering
• React Nativeo 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 Youtubehttps://www.youtube.com/channel/UCsVPQfo5RZErDL41LoWvk0A