Architecture client‐serveur
L’architecture client‐serveur désigne un mode de communication entre deux entités ‐ le(s) client(s) et le(s) serveur(s) ‐ souvent par l’intermédiaire d’un réseau. Le client est la machine dotée d’un programme (« programme client »), pouvant effectuer une requête pour avoir des ressources venant du serveur qu’est la machine programmée pour fournir la réponse.
Les applications web nécessitent l’utilisation du système client‐serveur (Fig 2.1). Le serveur Internet attend la demande des données (utilisation de TCP et IP) et renvoie le contenu des données requises. De son côté, le navigateur est client du serveur auquel il a envoyé une requête HTTP. Le navigateur présente à l’utilisateur une réponse une fois les données téléchargées. L’architecture client‐ serveur sépare le serveur qui gère les données du client qui cherche à accéder à ces données.
Figure 2.1 : Architecture client‐serveur
Les applications cloud adoptent cette architecture bien que les serveurs puissent varier dans un nuage. Elles se comportent comme des sites web animés par des serveurs qui rendent les services demandés aux applications clients, navigateurs ou interfaces personnalisés. La figure 2.2 illustre l’architecture client‐serveur pour une application cloud public.
TCP/IP et Cloud Computing
Le modèle TCP/IP est le modèle de protocole utilisé pour le transfert des données sur Internet. Il contient quatre couches : Hôte‐réseau, Internet, Transport, Application [8]. Comme le Cloud Computing fonctionne à partir d’Internet, il utilise ce modèle. Les offres cloud, SAAS ou PAAS, comme les applications web, parcourent les protocoles TCP/IP avant d’atteindre les clients. Sa particularité est que l’application réceptrice, en général un navigateur, simule une application lancée en local en affichant les opérations réellement effectuées chez le serveur du prestataire. Pour les services IAAS, les machines ou plus précisément la puissance des machines (puissance de calcul, espace de stockage) sont gérées comme des serveurs à distance, donc via les protocoles de TCP/IP également. La figure 2.3 illustre le fonctionnement du Cloud Computing avec la norme TCP/IP :
GOOGLE APP ENGINE
Présentation générale
Description
Google App Engine (GAE) est une plateforme de conception et d’hébergement d’applications web basée sur les serveurs de Google. Il permet d’exécuter des applications web sur l’infrastructure Google. Il est conçu pour héberger des applications utilisées par plusieurs utilisateurs simultanément. Les applications sur GAE supportent plusieurs requêtes (jusqu’à des milliers, voire plus) simultanément sans que celles‐ci affectent la performance de l’application [9], d’où la notion de capacité à monter à l’échelle (scalability). L’allocation de ressources s’effectue en fonction de la charge (élasticité) : plus la charge augmente plus les ressources allouées pour l’application sont plus importantes ; et inversement. A la différence de la facturation forfaitaire effectuée sur des services d’hébergement web classique, celle du GAE se base en fonction des ressources consommées.
Architecture générale
L’application sur GAE interagit avec le client (navigateur) par l’intermédiaire des requêtes. La plateforme App Engine est structurée principalement par trois éléments : les frontends, les serveurs de fichiers statiques et les serveurs d’application (Fig 2.4). Les frontends gèrent les requêtes provenant du client (navigateur). Les serveurs de fichiers statiques hébergent les fichiers statiques tels que HTML, JavaScript, CSS et fichiers images. Les serveurs d’applications hébergent les fichiers ressources qui seront exécutés à l’aide de l’environnement d’exécution [10]. Généralement, les applications interagissent avec un système de base de données (Datastore) et des mémoires caches (pour l’optimisation de la performance).
Environnement d’exécution
Les applications peuvent s’exécuter soit dans l’environnement Java soit dans l’environnement Python. Chaque environnement propose des protocoles standards et des technologies courantes en matière de développement d’applications web. Ces deux environnements utilisent le même modèle de serveur d’application.
Le SDK (Software Development Kit ou Kit de développement logiciel) Python est implémenté en langage Python pur et s’exécute sur toute plateforme dotée de Python 2.5, y compris Windows, Mac OS X et Linux [10]. Le SDK Java s’exécute sur toute plateforme dotée de Java 5 ou de Java 6. Le développement d’applications pour l’environnement d’exécution Java utilise les outils de développement web Java ainsi que les normes API (Application Programming Interface). Les applications ainsi développées interagissent avec l’environnement à l’aide de la technologie Java Servlet.