{"id":64422,"date":"2009-06-08T10:30:01","date_gmt":"2009-06-08T08:30:01","guid":{"rendered":"https:\/\/cms.galaxiemedia.fr\/tomshardware\/2009\/06\/08\/la-programmation-pour-le-cloud-computing\/"},"modified":"2023-06-24T16:20:41","modified_gmt":"2023-06-24T14:20:41","slug":"la-programmation-pour-le-cloud-computing","status":"publish","type":"post","link":"https:\/\/www.tomshardware.fr\/la-programmation-pour-le-cloud-computing\/","title":{"rendered":"La programmation pour le cloud computing"},"content":{"rendered":"
Dans notre pr\u00e9c\u00e9dent dossier<\/a>, nous avons vu que la programmation parall\u00e8le permettait aux logiciels de monter en charge en exploitant l\u2019augmentation du nombre de c\u0153urs des architectures multic\u0153urs. Le parall\u00e9lisme adresse plus particuli\u00e8rement les applications qui n\u00e9cessitent de la puissance de calcul, du traitement lourd en local. <\/p>\n\n\n\n\n\n <\/p>\n\n En revanche pour les applications de nature collaborative, transactionnelle et d\u2019une mani\u00e8re g\u00e9n\u00e9rale pour les applications en ligne, la probl\u00e9matique de mont\u00e9e en charge se traduit par\u00a0: comment g\u00e9rer une augmentation du nombre d\u2019acc\u00e8s simultan\u00e9s, comment stocker une masse d\u2019information de plus en plus importante\u00a0? Pour r\u00e9pondre \u00e0 la demande, on peut bien s\u00fbr augmenter le nombre de serveurs et de disques durs du data center, \u00e9largir la bande passante du r\u00e9seau avec pour corollaire tous les probl\u00e8mes d\u2019administration, de consommation \u00e9nerg\u00e9tique, de place physique\u2026 <\/p>\n\n\n\n\n\n <\/p>\n\n On peut \u00e9galement d\u00e9porter toute cette infrastructure mat\u00e9rielle et logicielle chez un h\u00e9bergeur et ne plus se pr\u00e9occuper que des aspects applicatifs. C\u2019est l\u00e0 tout l\u2019int\u00e9r\u00eat du Cloud Computing.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n En d\u00e9finitive qu\u2019est-ce que le Cloud Computing\u00a0? C\u2019est une infrastructure h\u00e9berg\u00e9e, scalable, sur laquelle on peut construire ses propres applications. Elle permet de louer des ressources informatiques d\u00e9localis\u00e9es (machines, logiciels, bande passante\u2026), de facturer en fonction du taux d\u2019utilisation de ces ressources et de consid\u00e9rer qu\u2019elles sont disponibles \u00e0 la demande en quantit\u00e9 infinie (du moins suffisamment importante pour qu\u2019on n\u2019en voit pas les limites). Lors d\u2019une mont\u00e9e en charge de l\u2019application, c\u2019est le Cloud qui se chargera de g\u00e9rer les acc\u00e8s simultan\u00e9s suppl\u00e9mentaires. Ainsi, si une transaction s\u2019effectue en\u00a01 seconde pour un utilisateur, elle mettra 1 seconde pour 100 000 utilisateurs\u00a0!\u00a0 <\/p>\n\n\n\n\n\n <\/p>\n\n Ces d\u00e9finitions \u00e9tant pos\u00e9es, on entend parler de SaaS, de PaaS, de IaaS\u2026 Il s\u2019agit de diff\u00e9rents types de Cloud, correspondant \u00e0 des couches d\u2019architecture. De la m\u00eame mani\u00e8re qu\u2019une architecture en local, sur site (on parle de \u00ab\u00a0on premises<\/em>\u00a0\u00bb en anglais) comprend une infrastructure (machine, OS), une plateforme et des applications, une architecture dans le Cloud comprend les m\u00eames couches\u00a0:<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n Concernant la programmation, les approches sont \u00e9galement diff\u00e9rentes. Au niveau le plus bas, IaaS, il n\u2019y a pas de pile logicielle pr\u00e9d\u00e9finie. Avec EC2 (Elastic Compute Cloud<\/a>) par exemple, Amazon propose l\u2019h\u00e9bergement d\u2019images virtuelles d\u2019OS complets. On peut y installer un Windows Server ou un Linux avec une base Oracle ou MySQL, et d\u00e9velopper ses applications dans le langage de son choix. Il y a tout \u00e0 faire et la programmation ne diff\u00e8re gu\u00e8re d\u2019une programmation pour applications locales.\u00a0<\/p>\n\n\n\n\n\n <\/p>\n\n Au niveau le plus \u00e9lev\u00e9, SaaS, il s\u2019agit ici de solutions m\u00e9tier cl\u00e9s en main, h\u00e9berg\u00e9es sur le site de l\u2019\u00e9diteur telles que les applications CRM de salesforce.com. Ici, pas de briques de base pour construire ses applications.<\/p>\n\n\n\n\n\n <\/p>\n\n Le niveau interm\u00e9diaire, PaaS, est le plus int\u00e9ressant pour les d\u00e9veloppeurs puisqu\u2019il permet de cr\u00e9er ses propres applications en s\u2019appuyant sur une plateforme logicielle. Le d\u00e9veloppeur n\u2019a plus \u00e0 se pr\u00e9occuper de l\u2019infrastructure mat\u00e9rielle et logicielle, il peut se concentrer sur les langages, les API et les fonctionnalit\u00e9s.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Citons \u00e9galement un niveau interm\u00e9diaire entre PaaS et SaaS que l\u2019on pourrait appeler Office Cloud\u00a0: il s\u2019agit de suites bureautiques en mode SaaS telles que Google Docs ou Zoho Sheet dont certaines briques logicielles sont accessibles via des API. Elles permettent de cr\u00e9er des solutions bureautiques personnalis\u00e9es, certes pas aussi abouties que les suites bureautiques classiques de type Microsoft Office, mais bien plus avanc\u00e9es que celles-ci en termes de solutions logicielles Web. <\/p>\n\n\n\n\n\n <\/p>\n\n Les PaaS sont des solutions middlewares h\u00e9berg\u00e9es con\u00e7ues pour faire tourner des applications de type transactionnel (pas de batch donc) et utilisant des bases de donn\u00e9es de type BigTable (non relationnelles). Le PaaS arrive avec un environnement d\u2019ex\u00e9cution, des services d\u2019infrastructure et en g\u00e9n\u00e9ral avec son propre langage de programmation. Le choix d\u2019un PaaS est donc fortement d\u00e9pendant du langage que l\u2019on veut utiliser. Trois plateformes PaaS se partagent aujourd\u2019hui le march\u00e9\u00a0: Salesforce.com Force.com, Google App Engine et Microsoft Azure.<\/p>\n Salesforce.com propose sa plateforme Force.com<\/a> avec son langage propri\u00e9taire Apex. Celui-ci pourrait \u00eatre consid\u00e9r\u00e9 comme un Domain Specific Language (DSL), un langage d\u00e9di\u00e9 au domaine. C\u2019est un langage de haut niveau (logique m\u00e9tier), statiquement typ\u00e9, avec un code et des donn\u00e9es multi-tenants (h\u00e9berg\u00e9s par une infrastructure commune). La syntaxe et les structures de contr\u00f4le sont tr\u00e8s proches de Java. Les types d\u2019objet sont persistants et deux langages de requ\u00eate sont embarqu\u00e9s. Apex permet le contr\u00f4le et le verrouillage de transaction et les triggers en tant que construction (insertion\/mise a jour\/suppression\/undelete avant et apr\u00e8s). Les outils de test et de couverture fonctionnelle sont fournis par la plateforme.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Au niveau s\u00e9curit\u00e9, les classes peuvent \u00eatre d\u00e9clar\u00e9es avec ou sans partage. Les r\u00e8gles de partage peuvent \u00eatre sp\u00e9cifi\u00e9es par l\u2019administrateur du Cloud, et les ressources peuvent \u00eatre limit\u00e9es par gouvernance (au moment de l\u2019ex\u00e9cution, par appel de m\u00e9thode pour trouver les valeurs, selon les contextes). <\/p>\n\n\n\n\n\n <\/p>\n\n Au niveau parall\u00e9lisme, Apex n\u2019autorise pas le lancement de threads.<\/p>\n\n\n\n\n\n <\/p>\n\n Les outils fournis sont un plugin pour Eclipse, une TextBox pour l\u2019interface utlisateur Salesforce.com.<\/p>\n La plateforme de Google, Google App Engine (GAE<\/a>) utilise nativement le langage Python. Comme beaucoup de produits Google, GAE est encore en version beta. Il s\u2019agit plus pour l\u2019instant de tester le concept que de d\u00e9ployer des applications critiques. Google offre aux d\u00e9veloppeurs des comptes d\u2019essai gratuits autorisant 500 Mo de stockage, 200 m\u00e9gacycles de CPU par jour et 10 Go de bande passante par jour. Ce qui permet aux applications de servir jusqu’\u00e0 5 millions de pages vues par mois, autant dire qu\u2019on a largement de quoi voir venir. En cas de d\u00e9passement de la consommation, le suppl\u00e9ment est factur\u00e9.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Google App Engine SDK est un package complet qui fournit des API et des outils permettant de d\u00e9velopper et d\u2019ex\u00e9cuter l\u2019application dans un environnement local offrant les m\u00eames API que le service en ligne. Une fois l\u2019application au point, elle peut \u00eatre transf\u00e9r\u00e9e sur le Cloud. Les API sont\u00a0: le Python Runtime, les API Datastore, Images, Mail, Memcache, URL Fetch et Users. Google App Engine vient \u00e9galement avec une base de donn\u00e9es BigTable, non relationnelle, pr\u00e9vue pour s\u2019\u00e9tendre ind\u00e9finiment. Google App Engine poss\u00e8de une syntaxe proche de SQL appel\u00e9e GQL. Les instructions Select en GQL ne peuvent \u00eatre lanc\u00e9es que sur une table \u00e0 la fois. GQL ne supporte pas de mani\u00e8re intentionnelle l\u2019instruction Join.<\/p>\n\n\n\n\n\n <\/p>\n\n R\u00e9cemment, Google a annonc\u00e9 le support de Java pour Google App Engine, en version pr\u00e9liminaire (Early Look). Cette annonce est particuli\u00e8rement importante pour la communaut\u00e9 des d\u00e9veloppeurs Java, car elle leur ouvre enfin le d\u00e9veloppement pour le Cloud. Jusqu\u2019alors, les applications Java d\u2019entreprise \u00e9taient peu adapt\u00e9es \u00e0 l\u2019h\u00e9bergement web (rare et cher), les h\u00e9bergeurs pr\u00e9f\u00e9rant proposer du PHP sur des plateformes *AMP. L\u2019arriv\u00e9e de Java sur Google App Engine change la donne. Non seulement le d\u00e9ploiement Java s\u2019en trouve facilit\u00e9 mais l\u2019h\u00e9bergement devient quasiment gratuit et donc concurrentiel par rapport aux solutions PHP\u00a0!<\/p>\n Cependant, la programmation pour le Cloud de Google impose certaines contraintes. Il est par exemple interdit d\u2019\u00e9crire directement dans un fichier. En effet, cela ne permettrait pas de rendre l\u2019application distribu\u00e9e\u00a0: un fichier g\u00e9n\u00e9r\u00e9 par une instance de l\u2019application ne pourra pas \u00eatre utilis\u00e9 tel quel par une autre instance de l\u2019application sur un autre serveur. Comme pour Apex, il n\u2019est pas possible de cr\u00e9er des threads. Sur un serveur d\u00e9di\u00e9 le lancement de threads simultan\u00e9s permet de r\u00e9partir la charge de mani\u00e8re parall\u00e8le et donc de gagner en performance. Dans le Cloud, cela n\u2019a pas de sens. C\u2019est le Cloud qui se charge de r\u00e9partir automatiquement la charge. Parmi les autres contraintes, on peut citer l\u2019impossibilit\u00e9 d\u2019\u00e9tablir des connexions de type socket directe \u00e0 des serveurs externes, la programmation sans \u00e9tat, le temps d\u2019ex\u00e9cution limit\u00e9 \u00e0 30 secondes ou encore l\u2019absence d\u2019acc\u00e8s \u00e0 des bases de donn\u00e9es relationnelles. Des contraintes qui peuvent sembler drastiques mais qui dans un contexte Cloud s\u2019expliquent parfaitement. <\/p>\n\n\n\n\n\n <\/p>\n\n Du fait de ces restrictions, bon nombre de biblioth\u00e8ques et de frameworks Java ne sont plus compatibles avec Google App Engine. Mais la communaut\u00e9 Java s\u2019est empress\u00e9e d\u2019effectuer les portages possibles et aujourd\u2019hui un grand nombre de frameworks et de biblioth\u00e8ques sont support\u00e9s, ainsi que des langages compatibles avec la JVM\u00a0: Groovy, JRuby, JavaScript, Scala, Jython, Spring, Restlet, Jersey\u2026 M\u00eame PHP a \u00e9t\u00e9 port\u00e9 via Quercus, une impl\u00e9mentation 100% Java de PHP. Ce qui fait de PHP sur Google App Engine une solution d\u2019h\u00e9bergement PHP encore plus attractive que les offres PHP natives\u00a0!<\/p>\n\n\n\n\n\n <\/p>\n\n Certes, on s\u2019\u00e9loigne du standard Java de Sun, qui voit d\u2019un mauvais \u0153il cette impl\u00e9mentation incompatible. Apr\u00e8s tout, cela aurait d\u00fb \u00eatre \u00e0 Sun de proposer ce standard de Java pour le Cloud\u00a0!<\/p>\n\n\n\n\n\n <\/p>\n\n D\u2019une mani\u00e8re g\u00e9n\u00e9rale, il n\u2019y a pas convergence entre la n\u00e9cessit\u00e9 de standards et les contraintes techniques du Cloud, ce qui \u00e0 terme risque de poser des probl\u00e8mes d\u2019interop\u00e9rabilit\u00e9 entre les infrastructures locales et Cloud.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/p>\n\n Dernier arriv\u00e9 sur ce march\u00e9, Microsoft a d\u00e9voil\u00e9 en octobre dernier sa strat\u00e9gie dans le Cloud avec sa plateforme Azure qui s\u2019annonce comme \u00e9tant la plus riche et la plus compl\u00e8te du march\u00e9. Beaucoup de briques ne sont pas encore disponibles et le d\u00e9ploiement va s\u2019\u00e9taler entre 2009 et 2011. Mais \u00e0 terme, Microsoft disposera d\u2019une offre couvrant tous les aspects du PaaS\u00a0: stockage avec Azure Storage et SharePoint Online Libraries, workflow et int\u00e9gration avec .NET Services Workflow\/Service Bus, gestion des identit\u00e9s avec Windows Live ID et .NET Services Access Control, services applicatifs avec Live Search, Virtual Earth, CRM Online\u2026. Azure b\u00e9n\u00e9ficie d\u2019un mod\u00e8le de programmation d\u00e9j\u00e0 bien implant\u00e9 puisqu\u2019il s\u2019agit de .NET, d\u2019outils familiers (Visual Studio) et d\u2019une communaut\u00e9 active et enthousiaste. Pour les d\u00e9veloppeurs .NET, passer au Cloud se fera sans trop de douleur\u00a0: m\u00eames langages de programmation (Visual Basic, C#, C++\u2026), m\u00eames outils. <\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n <\/a><\/span><\/span>Autour de ces trois acteurs principaux du PaaS, on peut citer un certain nombre de projets en cours autour des langages pour le Cloud\u00a0:<\/p>\n\n\n\n\n\n <\/p>\n\n <\/p>\n\n Le Cloud Computing est encore un domaine tout r\u00e9cent. Hormis Amazon EC2 et Force.com, les offres sont encore \u00e0 l\u2019\u00e9tat de beta ou de projets. Mais nul doute le Cloud offre le pendant Web de la programmation parall\u00e8le pour les applications locales, une \u00e9volution naturelle pour une demande toujours croissante de mont\u00e9e en puissance des applications de demain. <\/p>\n","protected":false},"excerpt":{"rendered":" Pour r\u00e9pondre \u00e0 la demande de mont\u00e9e en puissance, les applications distribu\u00e9es et les applications Web doivent s\u2019affranchir des infrastructures mat\u00e9rielles et logicielles pour pouvoir passer \u00e0 l\u2019\u00e9chelle<\/p>","protected":false},"author":82,"featured_media":64423,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ep_exclude_from_search":false,"footnotes":""},"categories":[4093,4109,597,4107,4091],"tags":[556],"hubs":[],"acf":{"post_show_excerpt":false,"post_source":{"title":"Tom's Hardware FR","url":"http:\/\/www.presence-pc.com\/","target":""}},"yoast_head":"\nLe cloud computing<\/h2>\n
Cloud Programming<\/h2>\n
Force.com<\/h2>\n
Google App Engine<\/h2>\n
Google App Engine (suite), Microsoft Azure<\/h2>\n
Microsoft Azure
<\/h4>\n\n\n\n\n\nD’autres projets, conclusion<\/h2>\n
Conclusion
<\/h4>\n\n\n\n\n\n