Passer au contenu principal
(mettre un super titre ici)

@nmartignole
nicolas@zaptravel.com

ZapTravel
Mise en oeuvre de Play 2
sur ZapTravel
ZapTravel
Mise en oeuvre de Play 2
sur un vrai projet de la
vraie vie, comme quoi on ne fait pas QUE des
HelloWorld

ZapTravel
Embarquement dans un
nouveau monde

ZapTravel
Si vous voulez développer
avec plaisir
ZapTravel
Bref...

ZapTravel
Scala

ZapTravel

Web

Reactive
Programming

Akka

Architecture
ZapTravel
ZapTravel
ZapTravel
• Innover dans la découverte et l’achat
de voyages

• Avion + Hôtel + Voiture + Activités
• Temps réel
• Web + Mobile
ZapTravel

• Week-end romantique
ZapTravel
• Week-end romantique
• Golf ce weekend
• Shopping à Milan
• Ski + Spa pour se détendre
• Sites de l’Unesco et visites musées
ZapTravel
Confirmation prix en temps réel
Construire du contenu
dynamiquement
Pousser les prix vers le client
Gérer plusieurs flux de données
...
Web
Statique

Dynamique

Structuré

Temps réel

© babimu - Fotolia.com
Statique

Dynamique

Structuré

Temps réel

© M.studio - Fotolia.com
Statique

Dynamique

Structuré

Temps réel

© M.studio - Fotolia.com
Statique

Dynamique

Structuré

Temps réel

© Julien Eichinger Fotolia.com
Quelques tendances
• Données structurées/liées
• Temps réel (Twitter)
• Personnalisée (Facebook, Amazon)
• Web mobile (Foursquare)
ZapTravel
ZapTravel

• Fournisseurs de données
ZapTravel
Architecture
Architecture
Web
HTTP
HTTPS

Web
LB

Redis
Air/Hotel/Cars...

Redis
Webuser/Reservatiom

Redis
Web content

S3
Photos

ZapTravel
Architecture
Redis

Web

Air/Hotel/Cars/Ac

Web
HTTP
HTTPS

Web

LB

Redis
Resa/Users
Redis
Web Content

redis

Web

ZapTravel
Architecture
Redis
Air/Hotel/Cars/Ac

HTTP
HTTPS

Redis
Resa/Users
Redis
Web Content

MySQL

Publishers

Admin

Backoffice

Scrappers

Tooling

Crowd computing

ZapTravel
Architecture
Redis
Air/Hotel/Cars/Ac

HTTP
HTTPS

MySQL

Redis
Resa/Users

20 Gb

Redis
Web Content

PHP

Java

PHP

Java

PHP

PHP

Apache
ZapTravel
Demo
- Check time -
Un problème ?
Client

Serveur

Service Avion

Service Voiture

ZapTravel
Intégration de services

Navigateur
Web

Serveur

Avion

Hotel

Voiture

ZapTravel
Intégration de services

Navigateur
Web

Serveur

Avion

Hotel

Voiture

ZapTravel
Intégration de services

Navigateur
Web

Serveur

Avion

Hotel

Voiture

ZapTravel
ZapTravel
Passer de l’autre côté

© Galyna Andrushko - Fotolia.com
Play2
Solutions

• Système non bloquant (NIO)

ZapTravel
Solutions

• Modèle de programmation
événementiel et réactif

ZapTravel
Solutions

• Serveur sans état conversationnel

ZapTravel
Solutions

• Streaming vers le client

ZapTravel
Non bloquant
Web client

Avion

Serveur

Hotel

Voiture
ZapTravel
Réactif
Web client

Avion

Serveur

Hotel

Voiture
ZapTravel
Conversation
Sans état conversationnel du
côté serveur

© lkunl - Fotolia.com
Streaming
No polling *

WebBrowser -> ZapTravel
ZapTravel -> Service Providers
ZapTravel

© Scanrail - Fotolia.com
Différence entre Streaming et REST

https://dev.twitter.com/docs/streaming-apis

ZapTravel
Streaming API

ZapTravel
2012
Play 1

Play 2

Java

Scala

SQL

NoSQL
Play 2 en un slide
• Modèle de

programmation
événementiel

• Typage fort
• Moteur de templating
• Akka
• Moteur asynchrone

• Streaming
• NoSQL
• Puissance
• Framework fullstack
•

existe-t-il une autre alternative ?
Scala
def index() = Action {
val name ="Nicolas"
Ok(views.html.Application.index(name))
}
Scala - 2
@(name: String)
@myTemplate() {
<h1>Hello @name</h1>
...
}
Mais pourquoi Scala ?

Attention :
FUD pendant quelques slides.
ZapTravel
Le bon vieux
développeur Java

ZapTravel
«...à la mode...»

ZapTravel
«... efficacité...»

ZapTravel
... pause pub ...

ZapTravel
Sérieusement
Choix de Scala
• Orienté objet ET Fonctionnel
• Typage statique
• JVM
• Collections
ZapTravel
Akka dans Play2
• Simple à mettre en oeuvre
• Facilité pour tester
• Indispensable pour ZapTravel
ZapTravel
http://zaptravel.com/romance/weekend-deals/from-london/to-anywhere/next-90days/quality/folio

ZapTravel
http://zaptravel.com/romance/weekend-deals/from-london/to-paris/11-Jan-2013-to-13-Jan-2013/best-western-sevres-montparnasse

ZapTravel
Demo
Questions
@nmartignole