insa - java in ze cloud (2013)
DESCRIPTION
Introduction au cloud, pour développeurs Java Présenté à l'INSA Lyon en novembre 2013TRANSCRIPT
Java in Ze
Cloud
Alexis Hasslernovembre 2013
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,...
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
Quenelle Crush
Business Plan
Hébergement
1 machine- garage- hébergeur
Plein de machines- garage- hébergeur
Risques
Scalabilité
HorizontaleVerticale
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
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
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
Infrastructure As Code
AWS Provisionning
IaaS Architecture
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
MySQL
Linux
Java / Glassfish
IaaS Architecture
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
SQL Server
Windows
.NET / IIS
IaaS Architecture
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
MongoDB
Linux
Java / Netty
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
IaaSInfrastructure as a Service
PaaSPlatform as a Service
SaaSSoftware as a Service
SaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
IaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
PaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
Google App Engine
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
Datastore / Cloud SQL
PythonJava + Jetty
Go
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
Références GAE
PaaS
PaaS
Standard
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
Java +
RUN@Cloud
Déploiement CloudBees
Déploiement CloudBees
$ bees app:deploy --appid=sewatech/swmsg-web --type=jboss message-web/target/swmsg-web.war
Déploiement CloudBees
String appId = "sewatech/swmsg";String description = "Application Démo";String archivePath = "wsmvn/message-web/target/swmsg-web.war";String archiveType = "war";boolean deltaUpload = true;
Map<String, String> parameters = new HashMap<>();parameters.put("containerType", "jboss");
client.applicationDeployArchive(appId, null, description, archivePath, null, archiveType, deltaUpload, parameters, null);
Logs & monitoring
Stockage
ClickStack
Managed
ClickStack
Community
DEV@Cloud
DEV@Cloud
DEV@Cloud
DEV@Cloud
DEV@Cloud
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
Cloud
PaaSPlatform as a Service
SaaSSoftware as a Service
User
IaaSInfrastructure as a Service
Operations
Developer Integration
IaaS : contraintes et liberté
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
PaaS : modèles imposés
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
Cloud
PaaSPlatform as a Service
SaaSSoftware as a Service
IaaSInfrastructure as a Service
Cloud
PaaSPlatform as a Service
SaaSSoftware as a Service
IaaSInfrastructure as a Service
PaaSPlatform as a Service
SaaSSoftware as a Service
IaaSInfrastructure as a Service
DBaaSDatabase as a Service
MaaSMonitoring as a Service
NaaSNetwork as a Service
CaaSCommunication as a Service
XaaS
KaaS
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
Démarrer
Amazon EC2 ............................ 0 €
Google App Engine ...................0 €CloudBees ................................ 0 €Heroku ...................................... 0 €OpenShift ..................................0 €Jelastic ......................................0 €CloudFoundry ........................... 0 €...
Cloud
PaaS
SaaSSoftware as a Service
IaaS
@AlexisHassler
http://alexis-hassler.com
http://sewatech.fr
http://www.slideshare.net/sewatech