Cloud. Définition? 04/01/2015. James Urquhart The Wisdom of Clouds



Documents pareils
Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

Hébergement MMI SEMESTRE 4

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

Architecture Orientée Service, JSON et API REST

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Cloud et SOA La présence du Cloud révolutionne-t-elle l approche SOA?

Mise en œuvre des serveurs d application

Web Tier : déploiement de servlets

Application web de gestion de comptes en banques

Evolution des SI à l heure du Cloud

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Hands on Openstack : Introduction

Informatique en nuage Cloud Computing. G. Urvoy-Keller

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Compte Rendu d intégration d application

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Google Cloud Platform : Tour d horizon

Chapitre 4: Introduction au Cloud computing

4. SERVICES WEB REST 46

Cedric Dumoulin (C) The Java EE 7 Tutorial

Séminaire Partenaires Esri France 6 et 7 juin 2012 Paris. ArcGIS et le Cloud. Gaëtan LAVENU

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Premier Accelerate Packages: Azure Fast Start

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

OpenPaaS Le réseau social d'entreprise

Stéphane DERACO, DSI CNRS l Argos Devops : de l hyperviseur aux conteneurs l 11/12/2014 DOCKER

Cloud Computing, Fondamentaux, Usage et solutions

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

LICENCE PROFESSIONNELLE

Introduction aux «Services Web»

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Architectures Web Services RESTful

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Windows Azure. Principales fonctions

Notre Catalogue des Formations IT / 2015

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Point sur les solutions de développement d apps pour les périphériques mobiles

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Le Cloud: Mythe ou Réalité?

Bases Java - Eclipse / Netbeans

CAS, un SSO web open source. 14h35-15h25 - La Seine A

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Open-cloud, où en est-on?

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Systèmes Répartis. Pr. Slimane Bah, ing. PhD. Ecole Mohammadia d Ingénieurs. G. Informatique. Semaine Slimane.bah@emi.ac.ma

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Vanilla : Virtual Box

Le Cloud Open-Mind! Emilien Macchi

Authentification et contrôle d'accès dans les applications web

Java DataBaseConnectivity

Fiche Technique Windows Azure

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Création d une application JEE

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Accélérez vos tests et développements avec le Cloud, découvrez SoftLayer, la dernière acquisition Cloud d'ibm

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Business Process Execution Language

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Auto-évaluation Aperçu de l architecture Java EE

Cloud Computing : Utiliser Stratos comme PaaS privé sur un cloud Eucalyptus

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration

1. Installation d'un serveur d'application JBoss:

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

L accès aux Clouds (Académiques)

Optimisation des niveaux de service dans le cadre de déploiements de Clouds publics

Alfstore workflow framework Spécification technique

Applications et Services WEB: Architecture REST

Présentation du module Base de données spatio-temporelles

ARCHITECTURE ET SYSTÈMES D'EXPLOITATIONS

Cloud computing Votre informatique à la demande

Introduction à ElasticSearch

WINDOWS AZURE ET LES ÉDITEURS DE LOGICIELS

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

La tête dans les nuages

Java et les bases de données

Atelier numérique Développement économique de Courbevoie

LIVRE BLANC OCTOBRE CA Unified Infrastructure Management : architecture de la solution

Du Datacenter au Cloud Quels challenges? Quelles solutions? Christophe Dubos Architecte Microsoft

Android et le Cloud Computing

Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1

Module BD et sites WEB

BPEL Orchestration de Web Services

Introduction aux. services web 2 / 2

Cloud Computing. Introduction. ! Explosion du nombre et du volume de données

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

CloudBees AnyCloud : Valeur, Architecture et Technologie cloud pour l entreprise

Cloud Computing : Généralités & Concepts de base

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

Business & High Technology

Introduction aux applications réparties

Transcription:

Cloud Définition? the market seems to have come to the conclusion that cloud computing has a lot in common with obscenity--you may not be able to define it, but you ll know it when you see it James Urquhart The Wisdom of Clouds 1

Architecture Architecture IaaS: Infrastructure as a service Virtualisation d OS Le hardware est extensible et non géré Ex: amazon PaaS : platform as a service SaaS : software as a service 2

Architecture PaaS : platform as a service Déploiement d application dans env. extensible OS+serveur d application (glassfish, jboss, etc.) + couche persistance + API Ex: GAE, Windows Azure, openshift,etc. SaaS : software as a service Service proposés aux clients Types d architectures Cloud public: solutions de stockage et applications offertes au public par accès via Internet (Amazon, Microsoft, Google) Cloud communautaire: infrastructure partagée entre organisation. Gestion du Cloud en interne ou par tierce partie. Travail collaboratif Cloud hybride: composé de >1 clouds privés, communautaires ou privés. Offre l avantage de promouvoir plusieurs modèles de déploiements. Infrastructure interne+ externe => utilisation immédiate et locale et non dépendance à Internet. Evolutif en terme de taille via l architecture externe, Cloud privé: infrastructure privée uniquement à une seule organisation. Nécessité de gérer la partie infrastructure: virtualiser environnement Business, réévaluer les ressources existantes, les problèmes de sécurité à chaque modification. Perte des avantages liés au Clouds; flexibilité, évolutivité 3

Offres PaaS Open source: Année sponsors platteforme 2011 VMware Spring,Rails, sinatra, node.js 2011 Red hat Express-ruby, PHP, python, flex, jboss, java EE6 2009 WS02 Tomcat, jboss, java EE6 2012 Java EE6, tomcat, grails, scala, jruby Autres: Google GAE, Windows Azure, Amazon EC2, IBM Cloud, salesforces (heroku) (en IAAS, la liste est longe, Atos, SFR, Colt, Joyent, GoGrid, etc.) Exemples temps d accès (juin 2012) 4

Aperçu de Windows Azure Mais vraiment un petit aperçu 5

Fonctionnalités PaaS Windows Azure Partie IaaS et SaaS non traitée (mais vous pouvez louer des VMs) PaaS avec types de services proposés très large: Langages: C# VB bien sur Python Java avec un serveur d application tel que tomcat ou autre PHP (voir en fin) Ruby,etc. Types d applications : Services Web SOAP, REST, plain/text, Sites web, applications en worker role Plusieurs types de services à louer (service bus et autres) Consoles d administration, analyse de performance, etc. 6

PaaS Windows Azure 1 er découpage architectural VMs serveurs blobs sont l'équivalent de fichiers blob permet de stocker un fichier et un ensemble de méta données Table représente un ensemble d'entités. Ces tables sont non relationnelles, Queue permettre aux développeurs de gérer des communications asynchrones entre différents composants un Role va écrire dans une queue, et un autre lire les données écrites précédemment. Drive permet de configurer l'équivalent d'un disque virtuel PaaS Windows Azure SQL Azure Basé sur SQL Server 7

PaaS Windows Azure Windows Azure Platform AppFabric Service Bus permet d'exposer des services simplement, le bus se chargeant du routage des requêtes vers le service concerné. Acces control: permet de gérer l'accès au Service Bus suivant des mécanismes standards tels que OAuth et les Simple Web Tokens (SWT) pour les services REST, ou encore des mécanismes à base de revendications de type SAML, WS-Federation et WS-Trust pour l'accès à des services SOAP Composite App Service et Composition Model fournissent un environnement de développement pour faciliter la création, la gestion et le déploiement d'applications composites. PaaS Windows Azure Les possibilités offertes par ServiceBus sont nombreuses: Ex: Utiliser une FIFO pour la réception de messages https://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-queues/ Permet un envoi de messages de façon asynchrone: lecture asynchrone, le sender n a pas à attendre une réponse. 8

PaaS Windows Azure ServiceBus, d autres possibilités: Relay messaging: Utilisation d un relay entre entités Possibilité de construire des applications hybrides déployées dans Windows Azure ou autre Sécurisation de l ensemble via le relay https://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-relay/ PaaS Windows Azure ServiceBus, d autres possibilités: Brokered messaging: stockage intermédiaire de haut capacité et durable des messages peuvent être stockés et traités les deux extrémités peuvent être complétement hétérogène en terme de puissance Elles peuvent être en ligne ou non 9

PaaS Windows Azure D autres paradigmes (Windows Azure) Rôles d applications avec commutation de rôles: web role : service ou appli Web worker role : démons persistant qui peut recevoir des données d une autre appli Chaque application est un composant (couche appfabric assure la connectivité) PaaS Windows Azure D autres paradigmes (Web et worker roles) Web Role: Application pour Requètes / réponses sur HTTP (pages, WCF Web service configurés par basichttpbinding, etc.) Worker role: Application de type service fonctionnant en tache de fond. N accepte pas de requète de l extérieur Web roles et worker roles peuvent dialoguer ensemble via des objets Queues: classiquement worker produit des données, le web role les lits à la demande de l utilisateur et produit un affichage 10

PaaS Windows Azure D autres paradigmes (Web et worker roles) Une application peut changer d état! Un Web service a généralement un Web role mais peut également être implanté en worker role Web roles et worker roles peuvent être placés dans des VM roles (distribution manuelle sur des VM différentes) PaaS Windows Azure D autres paradigmes (Windows Azure) Un worker role contient en plus un méthode run() 11

PaaS Windows Azure Sécurité : Par AppFabric Access control service => propose WS-Trust, HTTPS, token, Envoi multicast Buffer partagé de type fifo : pour effectuer des partages de données rapidement PaaS Windows Azure Implantation de services Utilisation de WCF services: Depuis.Net 3.0, Microsoft propose un nouveau framework de programmation orienté SOA: WCF WCF: Windows Communication Foundation: framework pour création d applications orientées service sur HTTP Utilisation très simple Envois asynchrones possible Exposition en plain/text, Rest, SOAP, etc. 12

PaaS Windows Azure Ex en c# (new projet / WCF / WCF library) Définition de l interface du service (Contrat et OperationContrat) => Fichier nom_de_la_classe PaaS Windows Azure Ex en c# (new projet / WCF / WCF library) Implantation du service => Fichier nom_de_la_classe 13

PaaS Windows Azure Ex en c# (new projet / WCF / WCF library) Configuration du contrat: PaaS Windows Azure Utilisation de PHP possible http://azurephp.interoperabilitybridges.com/tutorials Utilisation de IIS (installation manuelle ou automatique) API de développement pour manipuler SQL Azure (blobs, queues, etc.) Outils d analyse de performance 14

PaaS Windows Azure Exemple: http://msdn.microsoft.com/en-us/library/windowsazure /gg651130.aspx Création du service : Définition de l interface et définition du code PaaS Windows Azure Exemple: http://msdn.microsoft.com/en-us/library/windowsazure /gg651130.aspx Création Client : Ajout d une référence (comme sur Netbeans), génération de squelettes et complétion du code généré dans Program.cs 15

PaaS Windows Azure Appel Interface de configuration 16

Introduction à GAE (google App Engine) Service d exécution en Python, Java, Go Actuellement gratuit pour une appli avec accès < 5millions/mois Services CloudSQL Datastore Bigdata Blobstore cloudstor age Compute Auth security SMS, Mail Task queue Search 17

Types d applications Java : Gestion des VMs (à base de Java) via Docker servlet/jsp, services Web en Rest, app GWT Plusieurs librairies Java supportées mais pas toutes Implantation JAX-RS Jersey supportée (1 & 2) Par maven Par Eclipse + plugin Google Des limitations: Pas de connexion TCP Connexion URLConnect pour effectuer des appels entre pl. servlets Pas de processus Timeouts limités Quota Version gratuite lente (2014) 18

Installation avec Eclipse http://code.google.com/eclipse/docs/getting_started.html Ajouter plugin et sdk Créer une application, et la déployer http://code.google.com/eclipse/docs/getting_started.html http://code.google.com/appengine/docs/java/overview.html Pour déployer une application web, il est nécéssaire de créer une application dans la console google https://appengine.google.com/ => fournir un id Déploiement aussi en local et appel avec http://localhost:8888/ GAE, création d une application => Id unique nécessaire pour le déploiement 19

GAE, portail GAE, portail Appel d une application web sur votre env: http://version.id_app.appspot.com/nom_servlet ou ws ex: http://1.ssalva-test.appspot.com/gae_restws 20

GAE, plugin Eclipse https://developers.google.com/appengine/do cs/java/tools/uploadinganapp GAE, test de l application en local http://localhost:8888/_ah/admin => console d administration locale (affichage du blob de données, des services, etc.) http://localhost:8888/mon_servlet ou service 21

Déploiement d une application: 1. Dans GAE, à la page "My Applications" créer une nouvelle application 2. Modifier le fichier appengine-web.xml pour donner l id de votre application dans votre projet: <application>your-app-id</application> ou l indiquer dans propriété de projet (Eclipse,etc.) Stockage Données Pas forcemment structurées Données fichiers JPA JDOQL Entity Datastore (nosql) CloudSQL Blobstore 22

Stockage dans CloudSQL = base Mysql Besoin d activer l api dans Demande infos de paiement -> non vu en TP Stockage dans CloudSQL 1. Création de tables 2. utilisation de jdbc:odbc classique 23

Servlet: Public class GuestbookServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse resp) { try { Connection c = null; DriverManager.registerDriver(new AppEngineDriver()); c = DriverManager.getConnection("jdbc:google:rdbms://simple-it.fr:testcloudsql:test-cloudsql/guestbook"); ResultSet resultats = c.createstatement().executequery("select name, message FROM messages ORDER BY id DESC LIMIT 20"); req.setattribute("messages", resultats); this.getservletcontext().getrequestdispatcher("/web-inf/guestbook.jsp").forward(req, resp); } catch (Exception e) { e.printstacktrace(); } } Datastore MAP (clé valeur) Plusieurs accès possibles (entity,jdo,jpa) Persistance via des objets Entity Génial pour stockage Limité pour effectuer des requètes (requètes par clé ou id) Possiblité d imbriquer des entités ensemble https://cloud.google.com/appengine/docs/java/datastore/entities 24

Datastore DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Entity employee = new Entity("Employee, salva ); Identifiant employee.setproperty("firstname", "sebastien"); employee.setproperty("lastname", "Salva"); Date hiredate = new Date(); employee.setproperty("hiredate", hiredate); datastore.put(employee); //imbrication en Entity Entity contact = new Entity( contact1", toto", employee.getkey()); Datastore Maj d une Entity => par put Suppression => par delete Lecture par clé Key cle = KeyFactory.createKey( "Employee", "salva"); Entity Employeetrouve = datastore.get(cle); Puis utilisation de getproperty(propriété) 25

Datastore Possibilité de faire des requètes: Query q = new Query("Person").setFilter(heightRangeFilter); // Use PreparedQuery interface to retrieve results PreparedQuery pq = datastore.prepare(q); for (Entity result : pq.asiterable()) { String firstname = (String) result.getproperty("firstname"); String lastname = (String) result.getproperty("lastname"); Long height = (Long) result.getproperty("height"); System.out.println(firstName + " " + lastname + ", " + height + " inches tall"); } Datastore Persistance sous forme d objet (pas d SQL, MAP multidimensionnelle) 3 api : JDO, JPA Def d une classe avec des annotations @persistantcapable, @primarykey, @persistent Rendre persistant : méthode makepersistent (object) 26

Gestion de la persistance => «nosql» Pas de base de données mais des objets stockés dans une map DataStore Utilisation de Java Data Objects (JDO) is a standard interface for storing objects containing data into a database Langage sql JDOQL Transactions (plusieurs opération à la fois) qui fonctionnent toutes ou qui sont toutes refusées Définifition des interfaces par mot clés et classes Stockage avec makepersistent Appel par clés pour par JDOQL (sql pour jdo) Exemple Accès aux données import com.google.appengine.api.datastore.key; import java.util.date; import javax.jdo.annotations.idgeneratorstrategy; import javax.jdo.annotations.persistencecapable; import javax.jdo.annotations.persistent; import javax.jdo.annotations.primarykey; @PersistenceCapable public class Employee { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key key; @Persistent private String firstname; 27

@Persistent private String lastname; @Persistent private Date hiredate; public Employee(String firstname, String lastname, Date hiredate) { this.firstname = firstname; this.lastname = lastname; this.hiredate = hiredate; } // Accessors for the fields. JDO doesn't use these, but your application does. public Key getkey() { return key; } public String getfirstname() { return firstname; } //... other accessors... } Interaction avec le Datastore via une factory PersistenceManagerFactory import javax.jdo.jdohelper; import javax.jdo.persistencemanagerfactory; public final class PMF { private static final PersistenceManagerFactory pmfinstance = JDOHelper.getPersistenceManagerFactory("transactions-optional"); private PMF() {} } public static PersistenceManagerFactory get() { return pmfinstance; } 28

Stockage: PersistenceManager pm = PMF.get().getPersistenceManager(); Employee e = new Employee("Mr", truc, new Date()); pm.makepersistent(e); Lecture: //reading data Query q = pm.newquery(employee.class); q.setfilter("lastname == lastnameparam"); q.setordering("height desc"); q.declareparameters("string lastnameparam"); try { List<Person> results = (List<Person>) q.execute("smith"); if (!results.isempty()) { for (Person p : results) { // Process result p } } else { // Handle "no results" case } } finally { q.closeall(); } 29

Lecture: //reading data Query q = pm.newquery("select from Person " + "where lastname == lastnameparam " + "parameters String lastnameparam " + "order by height desc"); List<Person> results = (List<Person>) q.execute("smith"); Stockage Blobstore https://cloud.google.com/appengine/docs/java/blobstor e/ Espace de stockage de fichiers Moins complexe que CloudStorage Accessible directement dans les applications 30

Stockage Blobstore sauvegarde blobstoreservice. createuploadurl("/upload ) Appel Upload handler GAE Blobstorage Fichiers sauvegardés Récupération de clées Stockage Blobstore appel requète réponse GAE lecture clée Appel blobstorage Blobstorage BlobKey blobkey = new BlobKey(clee); blobstoreservice.serve(blobke y, res); 31

Stockage Blobstore Principe: Accès via objets HttpServletRequest, HttpServletResponse Upload via un formulaire <form action="<%= blobstoreservice.createuploadurl( URL upload handler") %>" method="post" enctype="multipart/form-data"> </form> Stockage Blobstore Principe: Implantation du upload handler Stockage des clées des elements À l appel de l handler, le fichier est déjà stocké Ex: Map<String, List<BlobKey>> blobs = blobstoreservice.getuploads(req); List<BlobKey> blobkeys = blobs.get("myfile"); if (blobkeys == null blobkeys.isempty()) { res.sendredirect("/"); } else { res.sendredirect("/serve?blob-key=" + blobkeys.get(0).getkeystring()); } Objets req=htt pservlet Request Res=htt pservlet Respons e 32

Stockage Blobstore Principe: Récupération BlobKey blobkey = new BlobKey(req.getParameter("blob-key")); blobstoreservice.serve(blobkey, res); Déploiement d un service Rest Jersey 2 (eclipse): 1. Créer un projet Google App Engine project, 2. Ajouter les lib de Jersey dans le projet eclipse et dans le projet (WEB-INF/lib) 3. Implanter un WS: package wsrest; import javax.ws.rs.get; import javax.ws.rs.path; import javax.ws.rs.produces; @Path("/helloworld") public class HelloWorldResources { @GET @Produces("text/plain") public String getclichedmessage() { }} return "Hello World"; 33

4. Modifier Web.xml <servlet> <servlet-name>myrest</servlet-name> <servlet-class>org.glassfish.jersey.servlet.servletcontainer</servletclass> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>wsrest</param-value> </init-param> <init-param> <param-name>unit:widgetpu</param-name> <param-value>persistence/widget</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myrest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> Nom du service Nom du package englobant le SW GAE authentification Authentification : classe Userservice pour phase de login Émulé en local Utilise Google account en déployé 34

GAE authentification Authentification : Donnez les permissions à vos applications GAE authentification Authentification UserService userservice = UserServiceFactory.getUserService(); instancie le moteur d'authentification userservice.getcurrentuser() retourne null si le client n'est pas connecté un objet User sinon userservice.createloginurl("***url***") et userservice.createlogouturl("***url***") génère la connexion ou deconnexion et renvoie vers une URL userservice.getcurrentuser().getnickname() et l'e-mail avec userservice.getcurrentuser().getemail() retournent des infos 35

Introduction a Heroku Présentation héroku Offre PaaS (repose sur AWS) depuis 2007 Langages: Java, PHP, Ruby, Go, Scala, python, node.js Des addons (redis, mongodb, etc.) https://addons.heroku.com/ Compte gratuit avec 1 dyno et accès BD (postgresql) <=10000 lignes 36

Présentation héroku A base de Git Push à partir de dépots locaux ou Github Utilisation de Maven pour gestion des dépendances A base de Debian, Se contrôle via ligne de commande Prix se calcule sur le nb de dyno (container debian) + addons (mais aussi dropbox, travis, etc.) Présentation héroku dyno = container à base de cedar (ubuntu) Exécute une seule commande à la fois (1 instance de serveur) types de dyno: web, worker (background) one-off dyno: dyno temporaire pour tâches d'admin (migration etc.) (ex: heroku run bash) 37

Présentation héroku Dyno manager Client IP routers dyno dyno dyno dyno User env Héroku Prérequis (pour ce cours au moins): Maven Gest. De projet et de dépendances Pom.xml-> décrit les deps (mvn clean install les télécharge et les installe) Git Add, commit et push Heroku toolset 38

Héroku Gestion des dynos https://devcenter.heroku.com/articles/dynos heroku ps:scale web=x, X nb d'instances pour 1, 2 -> processus mis en veille après 1 heure heroku ps Héroku, applications Java https://devcenter.heroku.com/articles/getting-startedwith-java#introduction Principe: 1. Maven -> crée une application Web (et les tests), télécharge les deps 2. Heroku create -> crée une appli sur Heroku 3. Git add, git commit -> crée un dépot local 4. Git push -> lance les tests, upload l application, la compile, la déploie 39

Héroku, applications Java Gestion des dépendances dans pom.xml <dependencies> <dependency> <groupid>org.glassfish.jersey.containers</groupid> <artifactid>jersey-container-servlet</artifactid> </dependency> <dependency> <groupid>org.eclipse.jetty</groupid> <artifactid>jetty-servlet</artifactid> <version>${jetty.version}</version> <scope>provided</scope> </dependency> <dependency> <groupid>org.eclipse.jetty</groupid> <artifactid>jetty-webapp</artifactid> <version>${jetty.version}</version> <scope>provided</scope> </dependency> Héroku, applications Java Gestion des dépendances dans pom.xml <dependency> <groupid>postgresql</groupid> <artifactid>postgresql</artifactid> <version>9.0-801.jdbc4</version> </dependency> </dependencies> 40

Héroku, Web service Rest Jersey https://jersey.java.net/documentation/latest/getting-started.html#herokuwebapp 1. Création d une application mvn archetype:generate -DarchetypeArtifactId=jersey-heroku-webapp \ -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ -DgroupId=com.example -DartifactId=simple-heroku-webapp -Dpackage=com.example \ -DarchetypeVersion=2.14 Héroku, Web service Rest Jersey 2. Création d une appli Web packagée mvn clean package 3. Déploiement Git init, heroku create, git add, git commit, git push, 4. Accès: URL fourni par ligne de commande Ex: https://glacial-tiaga/-9425.herokuapp.com/wsrest/appel 41

Héroku, interface d administration Héroku, interface d administration 42

Héroku, interface d administration Choregraphie, orchestration? 43

Composition de services Web Composition Faire interagir des services Web ensemble Déployés sur le même serveur, ou sur des Clouds/serveurs différents La composition appelé service composite, services invoqués appelé des composants de service D un point de vue Client, service composite = service 2 types de composition Orchestration chorégraphie Composition de services Web Difficultés: Gestion des erreurs Si 1 composant remonte une erreur, elle doit être gérée par le service appelant pour un retour vers le client 2 types de composition Orchestration chorégraphie 44

Orchestration des services Lorsqu un service web coordonne d autres services 1 processus global avec appel vers d autres services, gestion des erreurs Compositions simples en Java etc. Compositions complexe, besoin de meta langages -> BPEL, Orchestration des services Langage BPEL processus BPEL (processus écrit en XML qui décrit comment interagissent les WS suivant des stimuli extérieurs) Besoin d un serveur qui exécute les processus BPEL la gestion des erreurs doit être gérée par le processus (mécanisme de replis, re-exécution du processus) Langage de programmation de processus mais aussi interface graphique (boites) 45

Definition des partenaires Utilisation de variables, assignation de valeurs (assign) Activités basiques (invoque, receive, reply, wait, throw) Activités structurés (while, switch, sequence,pick(temporisation) Correlation = session Scope découpage d un processus en plusieurs parties Pl. handler possibles par scope (conpensation, fault, event ) Avec ActiveBPEL 46

Avec ActiveBPEL Avec ActiveBPEL Le pick 47

pl. moteurs Websphere,bpel process manager,biztalk, bpelmaestro Activebpel,pxe, twister Limitations Service composite centralisé (si moteur tombe en panne, ) Schéma de composition statique Chorégraphie de services Comportement global basé sur les interactions des services entre eux. Chaque service web mêlée dans la chorégraphie connaît exactement quand ses opérations doivent être exécutées et avec qui l interaction doit avoir lieu. Services font office de services et de clients vers d autres services 48

Chorégraphie de services Description des interactions de service uniquement de pair à pair Pas de processus, chaque service connait les actions à effectuer par rapport aux messages reçus Langages standards de description de choregraphies en XML WS-CL ou WSCI Descrption des messages Ordre des messages ne définit pas un processus global Travaux de recherche sur composition dynamique 49