{"id":110,"date":"2012-04-15T21:11:19","date_gmt":"2012-04-15T20:11:19","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=110"},"modified":"2013-09-24T15:07:48","modified_gmt":"2013-09-24T14:07:48","slug":"elasticidad-del-codigo-12","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/elasticidad-del-codigo-12\/","title":{"rendered":"Elasticidad del c\u00f3digo (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>Como hemos visto en un post anterior \u2013 <a href=\"http:\/\/qualilogy.com\/es\/la-calidad-en-el-cloud\" target=\"_blank\">La calidad en el cloud<\/a> \u2013 la reducci\u00f3n de costes sigue siendo la principal motivaci\u00f3n para la virtualizaci\u00f3n y el Cloud, luego la capacidad de entregar la capacidad.<\/p>\n<p>Cuando se trata de dimensionar la infraestructura f\u00edsica y un presupuesto operativo, el modelo es el siguiente:<\/p>\n<ul>\n<li>Planificar la caraga m\u00e1xima requerida, incluso para cumplir con los picos de actividad.<\/li>\n<li>Evaluar el crecimiento a medio \/ largo plazo.<\/li>\n<li>A\u00f1adir un margen de seguridad.<\/li>\n<\/ul>\n<p><!--more-->Una arquitectura basada en servidores f\u00edsicos es necesariamente sobredimensionada en relaci\u00f3n con las necesidades. Pregunta a cualquier ingeniero de producci\u00f3n: 20% a 40% de los servidores f\u00edsicos alojan aplicaciones que utilizan menos del 10% de su CPU. Puedes compartir estas aplicaciones en m\u00faltiples m\u00e1quinas virtuales (VMs) dentro de un \u00fanico servidor y liberar los otros servidores para reasignarlos en la infraestructura.<\/p>\n<p>Reducci\u00f3n de costes: hacer m\u00e1s con menos.<\/p>\n<h3><strong>Gesti\u00f3n de capacidad<\/strong><\/h3>\n<p>Entregar la capacidad es la segunda raz\u00f3n m\u00e1s importante: para responder con mayor reactividad a las peticiones de los usuarios. Antes, cuando uno necesitaba un nuevo servidor, hab\u00eda que esperar, a menudo por varias semanas, el tiempo del pedido y de la entrega y de instalaci\u00f3n de la m\u00e1quina. Hoy en d\u00eda, se necesitan s\u00f3lo 3 clics de rat\u00f3n para instalar una m\u00e1quina virtual, y los usuarios se han acostumbrado a ver sus requisitos cumplidos dentro de 24 horas.<\/p>\n<p>Esto conduce tambi\u00e9n al fen\u00f3meno bien conocido como proliferaci\u00f3n de VMs, con el resultado de reducir las ganancias conseguidas anteriormente por la reducci\u00f3n de los costes de infraestructura. Es f\u00e1cil de instalar nuevas m\u00e1quinas virtuales, pero esto representa un costo en t\u00e9rminos de recursos, de licencias y de gastos de personal para administrar la infraestructura virtual.<strong><br \/>\n<\/strong><\/p>\n<p>La gesti\u00f3n de la capacidad no es s\u00f3lo para responder a las peticiones de los usuarios, sino tambi\u00e9n para hacer frente de manera segura y con m\u00e1xima reactividad a los picos de actividad. Hacer m\u00e1s pero tambi\u00e9n mejor, con menos. Este es uno de los beneficios de la virtualizaci\u00f3n para mover los recursos seg\u00fan sea necesario. Nada peor para la imagen de una empresa que un sitio web inaccesible, y si se trata de un sitio comercial, cualquier interrupci\u00f3n equivale a un accidente industrial.<\/p>\n<p>A pesar de esto, no es raro que los gestores de la producci\u00f3n, el responsable de la infraestructura o el administrador de la capacidad no sean notificados cuando una nueva versi\u00f3n de la aplicaci\u00f3n generar\u00e1 un incremento en la actividad. Adem\u00e1s, estos picos no siempre son predecibles.<\/p>\n<p>Por \u00faltimo, desde una perspectiva de desarrollo, esta capacidad de responder a las variaciones en la actividad no siempre se incluye en los objetivos del proyecto. Entregar una aplicaci\u00f3n a tiempo, con las nuevas caracter\u00edsticas implementadas sin defectos o errores, eso es la prioridad. Asegurarse de que la aplicaci\u00f3n es lo suficientemente el\u00e1stica como para reaccionar correctamente a los cambios en la carga no suele ser un objetivo integrado en el ciclo del proyecto, a menos sin que haya alg\u00fan evento especial.<\/p>\n<p>Una vez vi a un cliente pedir una auditor\u00eda de calidad de su c\u00f3digo para comprobar si los programadores conoc\u00edan y aplicaban correctamente las mejores pr\u00e1cticas de rendimiento. Era una aplicaci\u00f3n cr\u00edtica, que deb\u00eda ver triplicado su n\u00famero de usuarios, y entonces los datos. Aparte de tal caso en que el rendimiento \u2013 de hecho, la escalabilidad \u2013 se incluy\u00f3 en los objetivos del proyecto, es raro que se considera cr\u00edtico cuando se trata de identificar el impacto de las nuevas caracter\u00edsticas de una aplicaci\u00f3n.<\/p>\n<p>Por supuesto, te preocupas por las buenas pr\u00e1cticas en el rendimiento, pero \u00bfqu\u00e9 hay de integrar la elasticidad de tu aplicaci\u00f3n dentro de tu proyecto?<\/p>\n<p><strong>Elasticidad<\/strong><\/p>\n<p>El t\u00e9rmino de la elasticidad proviene del mundo del Cloud. Es un criterio importante de la calidad de una infraestructura virtual: la posibilidad de a\u00f1adir o eliminar, es decir de mover los recursos (CPU, memoria, espacio y rendimiento de disco duro, principalmente) para cumplir con las necesidades de capacidad.<br \/>\nImag\u00ednete que la infraestructura virtual es un globo: inflar o desinflar un globo m\u00e1s o menos f\u00e1cilmente o r\u00e1pidamente depende de su elasticidad.<\/p>\n<p>Medimos la elasticidad con criterios tales como:<\/p>\n<ul>\n<li>Velocidad para mover los recursos necesarios \u2013 para inflar \/ desinflar el globo.<\/li>\n<li>La cantidad de estos recursos desplazados.<\/li>\n<li>La capacidad de mover \u00fanicamente a algunos recursos \u2013 memoria, CPU, espacio en disco.<\/li>\n<\/ul>\n<p>La elasticidad es necesaria para satisfacer los picos de actividad y las necesidades de escalabilidad. Pero los dos conceptos no deben confundirse.<\/p>\n<h3><strong>Escalabilidad<\/strong><\/h3>\n<p>La escalabilidad es la capacidad para cumplir con el aumento de la carga mediante la adici\u00f3n de recursos. Se puede medir como un ratio carga \/ recursos. Si una aplicaci\u00f3n permite un rendimiento satisfactorio, con N recursos para X usuarios, y si el rendimiento sigue siendo igual de multiplicar los recursos por 2 cuando el n\u00famero de usuarios se multiplica por 2, entonces esta aplicaci\u00f3n tiene una buena escalabilidad. Si esta relaci\u00f3n se mantiene constante con el aumento de los dos factores, la escalabilidad es lineal. Este es optimal. Sin embargo, es m\u00e1s probable que algunos componentes no est\u00e1n a la altura deseada, y por lo tanto que el rendimiento se estabiliza en un determinado umbral, a pesar de la adici\u00f3n de recursos adicionales.<\/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 \/>\nLa elasticidad es la capacidad de agregar \u2013 o disminuir \u2013 estos recursos en una infraestructura virtual. La elasticidad incluye la escalabilidad, pero una aplicaci\u00f3n &#8216;escalable&#8217; no es necesariamente una aplicaci\u00f3n el\u00e1stica. Por ejemplo, realizar load balancing para distribuir la carga entre dos servidores de aplicaciones permite garantizar un tiempo de respuesta y un rendimiento adecuado, sea cual sea el n\u00famero de usuarios, incluso durante los per\u00edodos de pico de actividad inesperada.<\/p>\n<p>Pero si no puedes regresar autom\u00e1ticamente a una arquitectura con un \u00fanico servidor de aplicaciones, sin load balancing, no se puede desinflar el globo, tu aplicaci\u00f3n no es el\u00e1stica.<\/p>\n<p>\u00bfC\u00f3mo tener en cuenta la elasticidad en tu proyecto? \u00bfCu\u00e1l es la elasticidad de una aplicaci\u00f3n? \u00bfQu\u00e9 aplicaciones se ven afectadas? De hecho, si empezamos a ver anuncios de editores de software sobre este tema, no he encontrado muchas respuestas concretas a estas preguntas, desde la perspectiva del desarrollador o del arquitecto. Esto es lo que trataremos de hacer en nuestro pr\u00f3ximo post.<\/p>\n<p>Mientras tanto, cualquier comentario ser\u00e1 bienvenido.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como hemos visto en un post anterior \u2013 La calidad en el cloud \u2013 la reducci\u00f3n de costes sigue siendo la principal motivaci\u00f3n para la virtualizaci\u00f3n y el Cloud, luego la capacidad de entregar la capacidad. Cuando se trata de dimensionar la infraestructura f\u00edsica y un presupuesto operativo, el modelo es el siguiente: Planificar la [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,13],"tags":[],"class_list":["post-110","post","type-post","status-publish","format-standard","hentry","category-calidad-de-aplicaciones","category-cloud"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/110"}],"collection":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":2,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":730,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/110\/revisions\/730"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}