{"id":173,"date":"2012-04-15T21:10:00","date_gmt":"2012-04-15T20:10:00","guid":{"rendered":"http:\/\/dev.qualilogy.com\/fr\/?p=173"},"modified":"2013-09-24T14:59:53","modified_gmt":"2013-09-24T13:59:53","slug":"elasticite-des-applications-12","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/fr\/elasticite-des-applications-12\/","title":{"rendered":"Elasticit\u00e9 des applications (1\/2)"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1509\" title=\"QualElastic2\" alt=\"\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/04\/QualElastic2.jpg\" width=\"238\" height=\"357\" \/><\/a>Comme nous l\u2019avons vu dans un post pr\u00e9c\u00e9dent \u2013 <a href=\"http:\/\/qualilogy.com\/fr\/la-qualite-dans-le-cloud\" target=\"_blank\">La qualit\u00e9 dans le cloud<\/a> \u2013 la r\u00e9duction des co\u00fbts reste la motivation principale pour la virtualisation et le cloud, suivi ensuite de l\u2019aptitude \u00e1 d\u00e9livrer la capacit\u00e9.<\/p>\n<p>Lorsqu\u2019il s\u2019agit de dimensionner une infrastructure physique et un budget d\u2019exploitation pour celle-ci, le mod\u00e8le est le suivant :<\/p>\n<ul>\n<li>Pr\u00e9voir la charge maximale n\u00e9cessaire, y compris pour r\u00e9pondre aux pointes d\u2019activit\u00e9.<\/li>\n<li>Estimer l\u2019augmentation pr\u00e9visionnelle, sur la p\u00e9riode, \u00e0 moyen \/ long terme.<\/li>\n<li>Ajouter une marge de s\u00e9curit\u00e9.<\/li>\n<\/ul>\n<p><!--more-->Une architecture \u00e0 base de serveurs physiques est forc\u00e9ment sur-dimensionn\u00e9e par rapport aux besoins. Demandez \u00e0 n\u2019importe quel responsable de production ou ing\u00e9nieur syst\u00e8me : 20% \u00e0 40% des serveurs physiques h\u00e9bergent des applications qui utilisent moins de 10% de leur CPU. Vous pouvez mutualiser ces applications dans plusieurs machines virtuelles au sein d\u2019un unique serveur et lib\u00e9rer les autres pour les r\u00e9affecter dans votre infrastructure.<\/p>\n<p>R\u00e9duction de co\u00fbts : faire plus avec moins.<\/p>\n<h3><strong>Capacity Management<\/strong><\/h3>\n<p>L\u2019aptitude \u00e0 d\u00e9livrer la capacit\u00e9 constitue la seconde raison la plus importante : r\u00e9pondre avec la meilleure r\u00e9activit\u00e9 possible aux demandes des utilisateurs. Avant, lorsque vous aviez besoin d\u2019un nouveau serveur, il fallait attendre, souvent plusieurs semaines, le temps de passer la commande et la livraison et l\u2019installation de la machine. Aujourd\u2019hui, il suffit de 3 clicks de souris pour installer une machine virtuelle, et les utilisateurs se sont habitu\u00e9s \u00e0 voir leurs demandes satisfaites en 24 heures.<\/p>\n<p>Ce qui am\u00e8ne d\u2019ailleurs \u00e0 ce ph\u00e9nom\u00e8ne bien connu de prolif\u00e9ration des machines virtuelles, avec la cons\u00e9quence d\u2019annuler les gains r\u00e9alis\u00e9s ant\u00e9rieurement par la r\u00e9duction des co\u00fbts d\u2019infrastructure. Car s\u2019il est ais\u00e9 d\u2019installer de nouvelles VMs, cela repr\u00e9sente un co\u00fbt en termes de ressources, de licences et de charges de personnel pour g\u00e9rer l\u2019infrastructure virtuelle.<\/p>\n<p>La gestion de la capacit\u00e9 ne consiste pas uniquement \u00e0 r\u00e9pondre aux demandes des utilisateurs, mais \u00e9galement \u00e0 faire face sans encombre et avec la r\u00e9activit\u00e9 maximale aux pics d\u2019activit\u00e9. Faire plus mais aussi mieux, avec moins. C\u2019est l\u2019un des avantages de la virtualisation : pouvoir d\u00e9placer les ressources disponibles en fonction des besoins. Rien de pire pour l\u2019image d\u2019une entreprise qu\u2019un site web inaccessible, et s\u2019il s\u2019agit d\u2019un site marchand, toute indisponibilit\u00e9 m\u00eame provisoire \u00e9quivaut \u00e0 un accident industriel.<\/p>\n<p>Malgr\u00e9 cela, il n\u2019est pas rare que les patrons de la production, le responsable de l\u2019infrastructure ou le Capacity manager ne soient pas avertis lorsqu\u2019une nouvelle version d\u2019application va g\u00e9n\u00e9rer un surcro\u00eet d\u2019activit\u00e9. De plus, ces pics ne sont pas toujours pr\u00e9visibles.<\/p>\n<p>Enfin, d\u2019un point de vue d\u00e9veloppement, cette capacit\u00e9 \u00e0 r\u00e9pondre aux variations d\u2019activit\u00e9 n\u2019est pas toujours inscrite dans les objectifs de projet. D\u00e9livrer une application en temps et en heure, avec les nouvelles fonctionnalit\u00e9s impl\u00e9ment\u00e9es sans d\u00e9fauts ni bugs, voil\u00e0 la priorit\u00e9. Faire en sorte que l\u2019application soit suffisamment \u2018\u00e9lastique\u2019 pour r\u00e9agir correctement aux variations de charge constitue rarement un objectif identifi\u00e9, ni une pr\u00e9occupation r\u00e9ellement int\u00e9gr\u00e9e dans le cycle de projet, sauf \u00e9v\u00e8nement particulier.<\/p>\n<p>Une seule fois, j\u2019ai vu un client souhaiter un audit de la qualit\u00e9 de son code, afin de v\u00e9rifier si les programmeurs connaissaient et appliquaient correctement les bonnes pratiques en mati\u00e8re de performance. Il s\u2019agissait d\u2019une application bancaire critique, qui devait voir multipli\u00e9e par trois son nombre d\u2019utilisateurs, et par la-m\u00eame la taille des donn\u00e9es. Hormis un tel cas o\u00f9 la performance \u2013 en fait la scalabilit\u00e9 \u2013 \u00e9tait inscrite dans les objectifs du projet, il est bien rare que celle-ci soit consid\u00e9r\u00e9e comme critique lorsqu\u2019il s\u2019agit d\u2019identifier l\u2019impact de nouvelles fonctionnalit\u00e9s sur l\u2019application.<\/p>\n<p>Bien s\u00fbr, vous vous souciez des bonnes pratiques en mati\u00e8re de performance, mais avez-vous int\u00e9gr\u00e9 l\u2019\u00e9lasticit\u00e9 de votre application au sein de votre projet ?<\/p>\n<h3><strong>Elasticit\u00e9<\/strong><\/h3>\n<p>Le terme d\u2019\u00e9lasticit\u00e9 provient du monde du cloud. Il constitue un crit\u00e8re important de la qualit\u00e9 d\u2019une infrastructure virtuelle : l\u2019aptitude \u00e0 ajouter ou supprimer \u2013 on parle de commissionner \/ d\u00e9commisionner \u2013 bref \u00e0 d\u00e9placer des ressources (CPU, m\u00e9moire, espace et performance du disque dur principalement) afin de r\u00e9pondre aux besoins de capacit\u00e9.<br \/>\nImaginez que l\u2019infrastructure virtuelle soit un ballon : pouvoir gonfler ou d\u00e9gonfler un ballon plus ou moins facilement ou rapidement d\u00e9pend de l\u2019\u00e9lasticit\u00e9 de celui-ci.<\/p>\n<p>On mesure l\u2019\u00e9lasticit\u00e9 sur des crit\u00e8res tels que :<\/p>\n<ul>\n<li>La vitesse pour \u2018bouger\u2019 les ressources n\u00e9cessaires \u2013 pour gonfler\/d\u00e9gonfler le ballon,<\/li>\n<li>La quantit\u00e9 de ces ressources d\u00e9plac\u00e9es,<\/li>\n<li>La possibilit\u00e9 de ne d\u00e9placer que certaines ressources \u2013 m\u00e9moire, CPU, espace disque \u2013 uniquement.<\/li>\n<\/ul>\n<p>L\u2019\u00e9lasticit\u00e9 est n\u00e9cessaire pour r\u00e9pondre aux pics d\u2019activit\u00e9, et aux besoins de scalabilit\u00e9. Les deux notions ne doivent pas \u00eatre confondues.<\/p>\n<h3><strong>Scalabilit\u00e9<\/strong><\/h3>\n<p>La scalabilit\u00e9 est l\u2019aptitude \u00e0 r\u00e9pondre \u00e1 la mont\u00e9e en charge en ajoutant des ressources. On peut la mesurer sous la forme d\u2019un ratio charge \/ ressources. Si une application autorise une performance satisfaisante avec n ressources pour x utilisateurs, et si la performance reste \u00e9gale en multipliant les ressources par 2 lorsque le nombre d\u2019utilisateurs est multipli\u00e9 par 2, alors cette application a une bonne scalabilit\u00e9. Si ce ratio reste constant alors que les deux facteurs augmentent, la scalabilit\u00e9 sera lin\u00e9aire. C\u2019est l\u2019id\u00e9al. Mais il est plus probable que certains composants ne soient pas \u00e0 la hauteur de la scalabilit\u00e9 souhait\u00e9e, et donc que la performance se stabilise \u00e0 partir d\u2019un certain seuil, malgr\u00e9 l\u2019ajout de ressources suppl\u00e9mentaires.<\/p>\n<p><a href=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/04\/Qual_Scal1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1514\" title=\"Qual_Scal1\" alt=\"\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/04\/Qual_Scal1.jpg\" width=\"485\" height=\"322\" \/><\/a><br \/>\nL\u2019\u00e9lasticit\u00e9 est la capacit\u00e9 \u00e0 ajouter \u2013 ou diminuer &#8211; ces ressources dans une infrastructure virtuelle. L\u2019\u00e9lasticit\u00e9 inclut la scalabilit\u00e9, mais une application \u2018scalable\u2019 n\u2019est pas forc\u00e9ment une application \u00e9lastique. Par exemple, vous effectuez du load-balancing afin de r\u00e9partir la charge entre 2 serveurs d\u2019application : ceci vous permet d\u2019assurer un temps de r\u00e9ponse et une performance correcte, quelque soit le nombre d\u2019utilisateurs, m\u00eame lors de pointes d\u2019activit\u00e9 impr\u00e9vues.<\/p>\n<p>Mais si vous ne pouvez revenir automatiquement \u00e0 une architecture avec un unique serveur d\u2019application, sans faire de load-balancing, vous ne pouvez pas d\u00e9gonfler le ballon, votre application n\u2019est pas \u00e9lastique.<\/p>\n<p>Comment prendre en compte l\u2019\u00e9lasticit\u00e9 dans votre projet ? Qu\u2019est ce que l\u2019\u00e9lasticit\u00e9 d\u2019une application ? Quelles applications sont concern\u00e9es ? A vrai dire, si l&rsquo;on commence \u00e0 voir un certain nombre d&rsquo;annonces d&rsquo;\u00e9diteurs logiciels sur ce sujet, je n\u2019ai pas encore trouv\u00e9 beaucoup de r\u00e9ponses concr\u00e8tes \u00e0 ces questions, du point de vue du d\u00e9veloppeur ou de l&rsquo;architecte. C\u2019est ce que nous tenterons de faire dans notre prochain post.<\/p>\n<p>Dans l&rsquo;attente, tout commentaire sera le bienvenu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comme nous l\u2019avons vu dans un post pr\u00e9c\u00e9dent \u2013 La qualit\u00e9 dans le cloud \u2013 la r\u00e9duction des co\u00fbts reste la motivation principale pour la virtualisation et le cloud, suivi ensuite de l\u2019aptitude \u00e1 d\u00e9livrer la capacit\u00e9. Lorsqu\u2019il s\u2019agit de dimensionner une infrastructure physique et un budget d\u2019exploitation pour celle-ci, le mod\u00e8le est le suivant [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,2],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-cloud","category-qualite-des-applications"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/173"}],"collection":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":3,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":1177,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/posts\/173\/revisions\/1177"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/fr\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}