Cloud Computing Platform as a Service Année académique 2014/15



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

Compte Rendu d intégration d application

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

Architecture Orientée Service, JSON et API REST

Web Tier : déploiement de servlets

Mise en œuvre des serveurs d application

Refonte front-office / back-office - Architecture & Conception -

LICENCE PROFESSIONNELLE

Formation en Logiciels Libres. Fiche d inscription

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.

4. SERVICES WEB REST 46

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

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Google Cloud Platform : Tour d horizon

Application web de gestion de comptes en banques

les techniques d'extraction, les formulaires et intégration dans un site WEB

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

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

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Architectures en couches pour applications web Rappel : Architecture en couches

OpenPaaS Le réseau social d'entreprise

JavaServer Pages (JSP)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Module BD et sites WEB

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

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)

JOnAS 5. Serveur d application d

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Hébergement MMI SEMESTRE 4

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

Fiche Technique Windows Azure

Devenez un véritable développeur web en 3 mois!

Anatomie d'un cloud IaaS Représentation simplifiée

Généralités sur le Langage Java et éléments syntaxiques.

Un serveur web léger et ouvert

Plateforme Applicative Zend PHP Cloud

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Remote Method Invocation (RMI)

Alfstore workflow framework Spécification technique

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

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

FOURNIR UN SERVICE DE BASE DE DONNÉES FLEXIBLE. Database as a Service (DBaaS)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

EXALOGIC ELASTIC CLOUD MANAGEMENT

Java Naming and Directory Interface

Bases de données cours 1

Documentation CAS à destination des éditeurs

Séminaire Partenaires Esri France 7-8 juin Paris Cloud Computing Stratégie Esri

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

Information utiles. webpage : Google+ : digiusto/

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

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

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

RMI le langage Java XII-1 JMF

Catalogue Formations Jalios

Cours en ligne Développement Java pour le web

Architectures Web Services RESTful

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Automatisation de l administration système

Best Practices : Utilisation des APIs de Lotus Web Content Management

Evolution des SI à l heure du Cloud

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

Le cloud computing au service des applications cartographiques à haute disponibilité

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)

2 Chapitre 1 Introduction

Android et le Cloud Computing

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Cloud Computing Maîtrisez la plate-forme AWS - Amazon Web Services

Documentation technique

Aspects techniques : guide d interfaçage SSO

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Technologies Web avancées. ING1 SIGL Technologies Web avancées

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

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

RENDRE VOS APPLICATIONS JAVA PLUS EFFICACES Ce qu'il faut savoir

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Environnements de Développement

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

CAHIER DES CHARGES D IMPLANTATION

A. Architecture du serveur Tomcat 6

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Annuaires LDAP et méta-annuaires

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

La base de données XML exist. A. Belaïd

Application Web et J2EE

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Hébergement de site web Damien Nouvel

CALENDRIERS DES FORMATIONS LILLE

Teste et mesure vos réseaux et vos applicatifs en toute indépendance

Construire un réseau social avec Symfony Xavier Lacot Clever Age. Symfony Live 11 et 12 juin 2009 Clever Age Xavier Lacot

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

Transcription:

Cloud Computing Platform as a Service Année académique 2014/15 Platform as a Service Exploitation professionnelle d'une infrastructure informatique Traditional deployment Server Storage Network OS Patch DB App Server Config App App Tiers START FINISH Infrastructure as a Service 20% time savings Infrastructure START OS Patch DB App Server Config App App Tiers FINISH Platform as a Service Platform App App Tiers 80% Time Savings START FINISH 2

Platform as a Service Rappel : Applications web en Java Servlets Un Servlet tourne à l'intérieur d'un serveur d'application Le serveur d'application invoque le Servlet pour traiter une requête HTTP Le Servlet est chargé de créer la réponse HTTP request Serveur d'applications Servlet Navigateur HTTP response Servlet Base de données Servlet 3 Platform as a Service Rappel : Applications web en Java Servlets Image complète du déroulement d'une requête HTTP Navigateur Serveur d'applications Servlet Base de données HTTP request URL HTTPServlet Request object requête données HTTPServlet Response object HTTP response HTML HTML 4

Platform as a Service Rappel : Applications web en Java Servlets Principe d'implémentation d'un Servlet package com.example; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.*; @SuppressWarnings("serial") public class SampleServlet extends HttpServlet { } @Override protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setcontenttype("text/plain"); PrintWriter pw = resp.getwriter(); pw.println("hello, world"); } 5 Introduction est un service d'hébergement d'applications web Conçu particulièrement pour des applications dynamiques en temps-réel Facile de mettre en oeuvre une application web Le client fournit le code source de l'application La plateforme de Google s'occupe de son exploitation Restrictions concernant le type d'applications supportées L'application ne peut pas accéder à tout L'application doit avoir un temps de calcul limité Lancé en avril 2008 (preview) Production depuis septembre 2011 Langages et frameworks supportés : Python Java Go PHP (Beta) 6

Caractéristiques Évolutivité automatique Peut supporter un grand nombre d'utilisateurs Des ressources sont ajoutées automatiquement L'application n'a pas besoin de savoir quelle quantité de ressources elle utilise Étant un service cloud : Paiement à la pièce Libre service sur demande Peut être divisé en trois parties Instances d'applications Service de stockage de données Services complémentaires évolutifs 7 Architecture Request handlers Services HTTP HTTP Front ends Application servers Datastore Blobstore Browser HTTP Static file servers Memcache deploy app configure URL fetch Mail Images XMPP App master Channel Task queue 8

Modèle de programmation Java Le dévelopeur écrit des Servlets GAE implémente la Java Servlet Specification La plateforme offre des services de stockage Accessibles via API directe ou un ORM comme Java Data Objects (JDO) et Java Persistence API (JPA) Le dévelopeur peut utiliser des frameworks d'applications web Java Server Pages (JSP) Java Server Faces (JSF) Google Web Toolkit (GWT) Spring MVC Play... La plateforme offre d'autres APIs pour Tâches asynchrones Caching Traitement d'images... Le développeur peut aussi utiliser des langages qui utilisent la Java Virtual Machine Scala Python (Jython) Ruby (JRuby) PHP (Quercus)... 9 Abstraction s Un est une abstraction : c'est le bout de code responsable de créer une réponse à une requête HTTP Dans le cas de Java c'est un Servlet Un a un cycle de vie (1) Une requête arrive. (2) Le est créé. Il reçoit la requête. (3) Le crée la réponse. Pour ce faire il peut utiliser les services et le stockage. (4) Quand la réponse a été envoyée, App Engine est libre d'enlever le de la mémoire. Le est stateless 1 2 requête requête Services et stockage Services et stockage 3 4 requête réponse réponse Services et stockage Source: Dan Sanderson, Programming, O'Reilly 10 Services et stockage

Abstraction s Quand le nombre de requêtes augmente, App Engine alloue des supplémentaires qui traitent les requêtes en parallèle Services et stockage 11 Abstractions s et Instances Mais où vit un? Dans une instance! Serveur 1 Instance Serveur 2 Instance Serveur 3 Instance Mémoire locale Mémoire locale Mémoire locale requête réponse requête réponse Services et stockage 12

Abstractions s et Instances L'abstraction du est séduisante, mais créer et enlever un logiciel pour chaque requête ne serait pas judicieux. L'initialisation d'un logiciel est chère Notamment l'initialisation de la mémoire locale Les instances sont les conteneurs dans lesquels vivent les s Une instance conserve la mémoire locale qui sera réutilisée pour les requêtes suivantes A chaque instant, une application a un certain nombre d'instances allouées pour traiter les requêtes. Le front-end route les requêtes vers les instances disponibles Si nécessaire, App Engine crée des nouvelles instances Si une instance n'est pas utilisée pendant un certain temps (idle), AppEngine la libère requête Serveur 1 Instance Mémoire locale réponse 13 Abstractions s et Instances Les instances sont visibles dans la console. 14

Abstractions s et Instances Les instances actives sont facturés au client par heure instance. Le client peut changer les paramètres de l'algorithme d'allocation d'instances dans la console et ainsi influencer la performance et les coûts. 15 Isolation des différentes applications : la sandbox GAE ne peut pas fonctionner avec n'importe quelle application Java GAE doit distribuer les requêtes HTTP sur plusieurs serveurs. Les applications ne doivent pas interférer les unes avec les autres. Les applications tournent dans un environnement plus restreint comparé à un serveur d'application Java générique : Le sandbox (bac à sable). Une application ne peut pas... Écrire sur le système de fichiers. Utiliser le Datastore Ouvrir un socket ou accéder directement à un autre host. Utiliser le URL fetch service Répondre lentement. L'application doit répondre en quelques secondes. Utiliser le Task Queue service Faire d'autres appels système. Une application peut 16 Utiliser un sous-ensemble de la bibliothèque Java standard : JRE Class White List Utiliser des threads. Cependant les threads ne doivent pas vivre plus longtemps que la requête. Lire le système de fichiers. Utiliser la réflexion. Utiliser des classloaders customisés.

Les services de stockage de données offre principalement trois services relatifs au stockage de données App Engine Datastore : Stockage persistent de données dans une base de données NoSQL Google Cloud SQL : Une base de données relationnelle basée sur MySQL. Google Cloud Storage : Stockage persistent d'objets (= fichiers) En plus une application peut faire du caching des requêtes de base de données en utilisant le service Memcache : Un service de caching de données en mémoire 17 Datastore Le Datastore est un service de stockage de données Ce n'est pas une base de données dédiée au client. C'est une base de données gigantesque et évolutive qui contient les données de tous les clients. Modèle multi-locataire (multi-tenancy) Dans les coulisses le service prend en charge la distribution, réplication et équilibrage de charge automatiquement. L'application appelle simplement une API sans se soucier de savoir ou les données sont stockés. sans se soucier de la capacité : capacité virtuellement infinie. Le modèle de données est un peu différent du modèle SQL Pas de schéma à déclarer avant d'écrire des données Modèle orienté clé-valeur Les garanties pour les transactions sont différentes des BD SQL Garanties de cohérence relâchées 18

Datastore Modèle de données Le modèle de données du Datastore comporte trois concepts majeurs : Entité (entity) : Un objet dans le Datastore. Chaque objet a une clé (key) unique. Sorte (kind) : La sorte d'entité, p. ex. un client, un article, un ordre. Utilisé dans les requêtes pour retrouver les entités stockées. N'implique pas la présence de propriétés. Propriété (property) : Contient les données d'une entité, p. ex. nom du client, prix de l'article. Une entité peut avoir plusieurs propriétés. Chaque propriété a un nom et au moins une valeur. 19 Datastore Exemple de données Entity Key bookstore "Book" 837094 Property "title" "author" "copyrightyear" "The Grapes of Wrath" "John Steinbeck" 1939 Application ID Kind Entity ID Ancestor path "authorbirthdate" 1902-02-27 Name Value 20

Datastore Clé d'une entité La clé (key) d'une entité a la caractéristique qu'elle est unique dans le datastore. Elle est composée de plusieurs parties L'identificateur de l'application (application ID) Assure qu'il n'y a jamais collision avec les clés des autres applications. Est géré automatiquement par App Engine. Ne peut être modifié par l'application. La sorte (kind) de l'entité Contribue à l'unicité de la clé. Sera utilisé par le datastore lors des requêtes. L'identificateur de l'entité (entity ID). Cette partie peut être Spécifiée par l'application : Dans ce cas cette partie s'appelle key name. Automatiquement générée par le datastore : Dans ce cas cette partie s'appelle ID. (Facultatif) Le chemin des ancêtres de l'entité (ancestor path) Permet de localiser l'entité dans une structure hiérarchique. Quand une entité a été créée, sa clé ne peut plus être changée. 21 Datastore Correspondance des termes Correspondance (approximative) des termes utilisés dans la programmation orienté-objet, les bases de données relationnelles et le Datastore. Attention, les concepts ne sont pas équivalents! Orienté-objet Relationnel Datastore Classe Table Kind Objet Ligne Entity Attribut Colonne Property 22

Datastore API de bas niveau //... import com.google.appengine.api.datastore.datastoreservice; import com.google.appengine.api.datastore.datastoreservicefactory; import com.google.appengine.api.datastore.entity; //... DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); Entity book = new Entity("Book"); book.setproperty("title", "The Grapes of Wrath"); book.setproperty("author", "John Steinbeck"); book.setproperty("copyrightyear", 1939); Date authorbirthdate = new GregorianCalendar(1902, Calendar.FEBRUARY, 27).getTime(); book.setproperty("authorbirthdate", authorbirthdate); ds.put(book); //... 23 Datastore API de haut niveau Java Persistence API (JPA) Une classe que l'on veut stocker dans le datastore : Le code qui va stocker cette classe : import java.util.date; import javax.persistence.entity; import javax.persistence.id; @Entity(name = "Book") public class Book { @Id private String isbn; } private String title; private String author; private int copyrightyear; private Date authorbirthdate; //... constructors, accessors import myapp.book; // our data class //... EntityManager em = null; try { em = emf.createentitymanager(); Book book = new Book(); book.settitle("the Grapes of Wrath"); //... em.persist(book); } finally { if (em!= null) em.close(); } 24

Datastore High Replication Datastore (HRD) Récemment Google a changé l'implémentation du Datastore : Le High Replication Datastore (HRD). Service ininterrompu même si des machines sont down à cause de failles ou maintenance. Utilise l'algorithme Paxos pour répliquer des données sur plusieurs data centers. Garanties de cohérence liés au modèle de données Chaque entity possède une clé qui l'identifie de manière unique. Optionellement une entity peut désigner une autre entity comme parent Cela crée une arborescence similaire à un système de fichiers. Notions traditionnelles de parent (parent), enfant (child), ancêtre (ancestor), descendant (descendant), racine (root). Garanties de cohérence Des entities qui ont le même ancestor appartiennent à un même entity group. Une requête sur un entity group doit seulement spécifier la clé de l'ancestor. Une requête qui se limite à un seul entity group est garantie de retourner des résultats à jour et cohérents Une requête sur plusieurs entity groups peut retourner des résultats incohérents. 25 Autres services URL Fetch service Accéder au contenu de pages web, ou Invoquer des services d'autres sites à travers HTTP Email service Envoyer et recevoir des messages email XMPP service Envoyer et recevoir des messages instantanés via le protocole XMPP Memcache service Accélerer la lecture d'objets stockés dans le service de stockage en les copiant dans un cache en mémoire Blobstore service Stocker des objets trop larges pour le Datastore Task Queue service Exécuter des tâches de fond dans un modèle de file d'attente Permet de contourner la limitation de durée des s Scheduled Task service Exécuter des tâches de fond à un moment déterminé Users service Authentifier les utilisateurs à travers de divers mécanismes Images service Manipuler des images (p.ex. créer des images vignettes) Channel service... Pousser en temps réel de l'information vers l'interpréteur JavaScript du navigateur 26

Logging Pour le debugging et monitoring d'une application les développeurs sont encouragés d'utiliser la bibliothèque java.util.logger Les messages de log sont sauvegardés Peuvent être consultés dans la console d'administration Ou téléchargés sur la machine locale Les flux de sortie standard (System.out) et erreur (System.err) sont aussi capturés Apparaissent dans les logs comme messages INFO / WARNING 27 Quotas Comme pour chaque service Cloud, Google charge le client pour les ressources utilisées à la pièce Mais l'allocation des ressources est automatique en fonction de la demande. Le client n'a pas de contrôle direct. Avec une allocation des ressources en principe imprévisible, les coûts le seraient aussi. Adoption d'un modèle similaire aux cartes prépayées mobiles On fixe un budget au début. Quand le budget est épuisé, le service est suspendu. Modèle de quotas : Au début de chaque jour (minuit Pacific time) sont fixés des maximums d'utilisation de ressources pendant les prochaines 24 heures : les quotas. Si l'utilisation reste au-dessous du quota, tout va bien. Quand l'utilisation dépasse le quota, le service est suspendu. Le service reprend le jour suivant. Un appel au service fait lever une exception. Dans le cas d'heures instances épuisées l'application ne répond plus aux requêtes des utilisateurs web. Il y a aussi des quotas par minute pour limiter des utilisations explosives de ressources. 28

Utilisation gratuite Google offre une utilisation de GAE gratuite. Dans ce cas les quotas journaliers sont ceux listés ci-aprés Une utilisation payante permet d'augmenter les quotas Quota Heures instance Données en entrée Données en sortie Datastore stockage Datastore opérations Google Cloud Storage Email API URLFetch API XMPP API Channel API... Limite (par jour) 28 heures 1 GB 1 GB 1 GB (total, pas par jour) 50k 5 GB 100 emails 657k appels 10k stanzas 100 channels ouverts 29