Java in Ze 
Cloud 
décembre 2014 Alexis Hassler
2 
@AlexisHassler 
Développeur, formateur Java 
Indépendant 
Co-leader du
3 
Contenu 
Définitions 
Typologie 
Acteurs 
Exemples 
(Démos)
Cloud Computing 
?
Cloud Grand Public 
Stockage 
Orange, Dropbox,... 
Mail 
Gmail,... 
...
Cloud Professionnel 
Google Apps 
Salesforce
SaaS 
Vision utilisateur 
– Fonctionnalités d'un logiciel (Mail, CRM, ERP,...) 
– Pas d'installation, pas d'investissement 
– Montée en charge simple 
– Software as a Service
There's an App For That * 
. . .
Cloud Computing 
? 
dev & ops
Candy TODO
Business Plan
Hébergement 
1 machine 
- garage 
- hébergeur 
Plein de machines 
- garage 
- hébergeur
Risques
Horizontale 
Verticale 
Scalabilité
Cloud Computing 
En libre-service à la demande 
Accessible sur l'ensemble d'un réseau 
Mutualisation des ressources 
Rapidement élastique 
Mesurable
IaaS 
Vision sysadmin 
– Ressources système 
(processeur, mémoire, bande passante) 
– Pas d'achat de machine 
– Montée en charge simple 
– Infrastructure as a Service
IaaS 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
IaaS
IaaS 
Standard
Amazon EC2 
– Elastic Compute Cloud 
– Serveurs virtuels 
– Stockage sur Elastic Block Store (EBS) 
● disque dur 
– Monitoring 
● Amazon CloudWatch
cf. http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf
AWS Provisionning 
Système 
Images (AMI) 
Standards : Linux, Windows 
Place de marché : OS + … 
Communauté : OS + … 
Personnalisé
AWS Provisionning 
Système 
Console AWS 
Scripts shell 
SDK Java, JavaScript, Ruby, .NET, Python,...
AWS Provisionning 
Machine 
Images de machine 
Stockage 
(local) 
Services annexes
AWS Provisionning 
Infrastructure 
As Code
IaaS Architecture 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau 
Java / Glassfish 
MySQL 
Linux
IaaS Architecture 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau 
.NET / IIS 
SQL Server 
Windows
IaaS Architecture 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau 
Java / Netty 
MongoDB 
Linux
IaaS Provisionning 
Serveur d'applications 
deb, rpm,... 
wget + tar 
scp + tar 
...
IaaS Déploiement 
Applications 
A la main 
Outil du serveur d'applications
Niveaux de service 
SaaS 
Software as a Service 
PaaS 
Platform as a Service 
IaaS 
Infrastructure as a Service
SaaS 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
IaaS 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
PaaS 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
Google App Engine 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau 
Python 
Java + Jetty 
Go 
Datastore / Cloud SQL
Google App Engine 
Java Standard / Web 
⚠ Restrictions 
Services Google 
Adaptation automatique 
Autoscale 
Versions conjointes
Google App Engine 
JavaSE limité 
cf. GAE Sandbox 
Web App 
JSP, Servlet,... 
Services REST 
Cloud Storage 
BigQuery 
Stockages 
Datastore 
Cloud SQL
GAE Sandbox 
Ecrire sur le file system => Datastore 
Ouvrir une socket => URL fetch 
Démarrer un thread 
Faire des appels système
Services GAE
PaaS
PaaS 
Standard
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau 
Java +
Logs & monitoring
Stockage
+
Développement 
Architecture modulaire 
Prévoir l'échec 
Stockage externe 
Traitements asynchones 
Applications stateless
Freins 
Peurs 
Coût 
Sécurité 
Social 
Lois 
Localisation des 
données 
Patriot Act
Cloud public / cloud privé 
Public 
Externalisation, partage des ressources 
Privé 
Ressources internes 
Intermédiaire 
Externalisation, ressources dédiées
Cloud privé 
Private IaaS Private PaaS
Cloud souverain
Synthèse
Cloud 
SaaS 
Software as a Service User 
PaaS 
Platform as a Service 
IaaS 
Infrastructure as a Service 
Developer Integration 
Operations
IaaS : contraintes et liberté 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
PaaS : modèles imposés 
Application 
Runtime / middleware 
Base de données 
Système d'exploitation 
Virtualisation 
Matériel Stockage 
Réseau
Cloud 
SaaS 
Software as a Service 
PaaS 
Platform as a Service 
IaaS 
Infrastructure as a Service
Cloud 
SaaS 
Software as a Service 
PaaS 
Platform as a Service 
IaaS 
Infrastructure as a Service
SaaS 
Software as a Service 
PaaS 
Platform as a Service 
IaaS 
Infrastructure as a Service 
DBaaS 
Database as a Service 
MaaS 
Monitoring as a Service 
NaaS 
Network as a Service CaaS 
Container as a Service 
XaaS
Quel cloud ?
Quel cloud pour quelles entreprises ? 
CAC40 
Cloud public 
Cloud privé 
IaaS / PaaS / SaaS 
Startup 
SaaS public 
PaaS public 
PaaS public 
PaaS public 
PaaS public 
IaaS public
Cloud 
SaaS 
Software as a Service 
PaaS 
IaaS
@AlexisHassler 
http://alexis-hassler.com 
alexis.hassler@sewatech.fr 
http://sewatech.fr 
http://www.slideshare.net/sewatech
INSA - Java in Ze Cloud - 2014

INSA - Java in Ze Cloud - 2014