Todo lo que querías saber sobre las “versiones” en Azure y no te atrevías a preguntar (2)

Bueno, esto tardo un poco mas de la cuenta, pero aquí continuamos con lo ya empezado, tratar de entender los ciclos de vida y “versiones” de los diversos servicios de Azure, así que vamos a ello y hoy veremos algunos datos que nos servirán para planear bien la provisión de nuestros servicios, y si en la ocasión anterior conocimos los casos vinculados a las deprecación de servicios y a las generaciones de computo (máquinas virtuales), por lo que hoy toca continuar con los…

Servicios PaaS, en este caso empezaremos enfocándonos en nuestros queridos Azure Functions, como todos sabemos si uno opera en el modo Consumo no tiene margen de maniobra para elegir la infraestructura base sobre la que va a correr nuestro código, pero eso cambia si se opta por los modos Premium o App Service, en ese sentido, al provisionar un nuevo Function desde el Portal (1), podemos ver diversas opciones para desplegar nuestro Function: Finish Reading: Todo lo que querías saber sobre las “versiones” en Azure y no te atrevías a preguntar (2)

Todo lo que querías saber sobre las “versiones” en Azure y no te atrevías a preguntar (1)

Hace unas semanas alguien me pregunto sobre las “versiones recomendadas” de los recursos de Azure que debían provisionar para una solución, esa pregunta de tanto en tanto aflora y suele ser común entre quienes tienen experiencia en TI on premise, y que por lo general suelen estar acostumbrado a que los software tengan años o versiones, por ejemplo, Windows Server 2003, Windows Server 2019, Oracle 8i, etc.

Súmale el hecho de que en este mundo es usual seguir políticas de “no usar la última versión, hasta que salgan los primeros parches o usar solo la penúltima que ya está probada” “usar las versiones de manera intercalada para ahorrar en licencias (perpetuas)”, paradigmas que tenían sentido en el mundo on premise cambian de valor cuando las organizaciones migran hacia la nube y especialmente a esquemas de pago por suscripción/uso como por ejemplo en el caso de Office, antes era usual que una organización comprara las licencias perpetuas de Office 2010, ignorara el lanzamiento de Office 2013, para solo actualizar hacia Office 2016.

Como sabemos con Office 365 (ahora Microsoft 365), el modelo cambio a un pago por subscripción periódica, donde Microsoft se hace cargo de actualizar constantemente con las últimas versiones que vayan liberando, liberándonos de problemas de desplegar nuevas versiones, nuestra responsabilidad obviamente es elegir el plan correcto para las necesidades y presupuesto de nuestra organización: E1, Pequeña Empresa, A3, etc.

Con esta premisa respecto al modelo de compra basado en uso, podemos ir profundizando en el concepto, y plantearnos la pregunta “¿Existen versiones (incrementales) de los servicios PaaS en la nube?”, y la respuesta corta seria “En la mayoría de los casos no debemos preocuparnos, porque como parte de la responsabilidad compartida, Azure se hace cargo de ir actualizando las plataformas base de los servicios PaaS que vayamos utilizando”. Finish Reading: Todo lo que querías saber sobre las “versiones” en Azure y no te atrevías a preguntar (1)

Agregando HTTPS a tus Azure Web Apps… gratis!

Siempre es bueno revisitar uno de los servicios mas queridos de Azure para mi: Azure Web Apps, con ellos (y SQL Database) empecé mi camino hacia la nube, fue blanco de mis primeros experimentos en lo que ahora se conoce como DevOps, y además… es el servicio donde tengo este blog, así que vamos a compartir experiencia que espero les sea de utilidad para configurar los sites que tenemos en este servicio.

Contextualizando, originalmente yo tenia este site en Blogger, el cual mude a WordPress con Azure Web Apps ya hace 8 años, cambiando su base de datos MySQL de clearDB hacia Azure hace 4, lo que no mencione es que originalmente este site solo uso el protocolo “http” por un buen tiempo, por lo que, como es sabido, terminaría siendo penalizado a nivel de SEO en los buscadores y generando desconfianza del lector, lo cual seria todo un problema de cara a los objetivos de divulgación de este sitio.

En ese sentido a poco de ingresar al programa MVP empecé a utilizar el beneficio de los certificados digitales de prueba que Digicert ofrece a la comunidad MVP, de esta manera ya tenia un certificado digital que podía vincular a mi site, indicando que la comunicación y el usuario viaja de manera segura, y… todo ha ido bien, pero este año decidí hacer una prueba cuyos resultados estoy probando y compartiendo ahora.

Top 10 Standard (DV) SSL Hosting Companies

El detalle es que el proceso de generación de un certificado SSL en DigiCert es tedioso y poco claro,al menos hasta hace dos años se apoyaba en herramientas de apariencia casi 90era y no generaban de manera directa los archivos PFX que son los que acepta Azure Web Apps para instalar un certificado, así que este año cuando mi ultimo certificado de DigiCert cumplió sus dos años de vigencia, decidí probar una funcionalidad que Microsoft anuncio el 2019: los certificados SSL gratuitos para Azure Web Apps, funcionalidad que brinda un gran beneficio para sites sencillos como este pues existen algunas limitaciones, como por ejemplo el no poder usar wildcards (*), pero de todas maneras es una gran ayuda para el que tiene su dominio y quiere brindar seguridad a sus sites.

Ok, el caso es que yo usaba previamente un certificado wildcard de DigiCert, y todo estaba configurado alrededor de este esquema, tanto en Azure como en mi registro de dominios (en este caso Network Solutions) por lo que contare mas o menos como lo fui solucionando, esperando que le sirva tanto al que va a migrar como el que va a aprovechar esta funcionalidad por primera vez. Ojo, estoy dando por sobreentendido que ya se tiene la titularidad de un dominio, ya sea en GoDaddy, RCP, NetSol, etc, así como acceso a su respectiva consola y obviamente una subscripción en Azure.

Finish Reading: Agregando HTTPS a tus Azure Web Apps… gratis!

Presentando Azure DevOps

El día de hoy Microsoft anuncia Azure DevOps, que a primera vista podría ser un nuevo rebranding de VSTS, pero la realidad detrás de este cambio es mucho mas compleja, así que trataremos de explicarlo haciendo un poco de historia.

Team Foundation Server es presentado el 2005 como una solución integrada para las necesidades ALM de la época, en que se empezaba a buscar herramientas que apoyaran la gestión interactiva de proyectos, así como ir desarrollando los conceptos de Integración Continua y Gestión de Pruebas, rápidamente el producto fue adoptado por buena parte de las organizaciones que ya estaban trabajando con .Net como su plataforma de desarrollo de software, las versiones 2008 y 2010 fueron una mejora incremental que fueron simplificando el trabajo de los equipos, pero aun así el configurar un proyecto de Integración Continua requería pelearse con componentes de terceros y editar archivos XML.

El primer punto de quiebre se produce 2011 con el lanzamiento del preview de Team Foundation Service (que luego seria renombrado como Visual Studio Online) que al inicio era una implementación basada en Azure de los servicios que ofrecía TFS (y que me entusiasmo mucho apenas saque mi cuenta), pero que además de proveer al publico de una infraestructura ALM sin depender de la instalación de un servidor, permitió a Microsoft acelerar sus ciclos de entrega de novedades y pruebas de nuevas funcionalidades, siendo que la versión 2012 de TFS incluía como novedad esencial (al menos para mi) un nuevo modelo de creación de Builds Definitions, basado en XAML, que efectivamente hizo mas sencillo el proceso de despliegue… si usabas las plantillas proveidas en el producto! y es que la idea original era posibilitar la creación de plantillas personalizadas para diversos tipos de entorno (recuerdo que por ahí encontré una plantilla para facilitar el despliegue con ClickOnce, pero que nunca pude hacerla funcionar), para este año ya era mas que notorio el crecimiento de Git y GitHub como plataforma preferida de los desarrolladores, así que la versión 2013 de TFS incluía su propio repositorio Git (al igual que el entonces llamado Visual Studio Online), pero los cambios recién empezaban… Finish Reading: Presentando Azure DevOps

Usando Deployment Groups para facilitar nuestros despliegues sobre servidores (I)

Pues si, de vuelta… ya tocaba tener algo que compartir con ustedes, y en esta ocasión algo nuevo que sea de utilidad para quienes despliegan sus aplicaciones en servidores, pero… mejor contextualicemos.

Cuando originalmente empece a hacer mis pruebas de despliegue automatizado de aplicaciones en .Net tuve que hacerlo sobre servidores Windows, y para lograr eso se tenia que hacer varios pasos, instalar Web Deploy, asignar usuarios, activar servicios, pre configurar los WebSites o Aplicaciones Web, exportar un perfil, usar ese perfil dentro de la configuración de nuestro despliegue XAML, etc.. de hecho la cosa era tan tediosa que tuve que escribir una documentación de varias paginas para mi antiguo trabajo explicando como se hacia el proceso, y bueno… esa en parte fue la razon por la cual me he enfocado especialmente en lo que es despliegue sobre Web Apps, pero claro siempre me quedo el bichito de como ayudar a optimizar las cosas si la necesidad es trabajar con servidores ya sea IaaS u On Premise.

Así que desde hace unos meses he estado leyendo sobre una nueva funcionalidad que te ofrece VSTS llamada Deployment Groups (ya disponible de manera oficial) que esencialmente permite que tu aplicación se despliegue de manera sencilla hacia un servidor o conjunto de servidores, esto lo logra mediante la ejecución de un script (que ya veremos luego) en la(s) maquina(s) destino que esencialmente instala un agente que facilita la ejecución de los diversos pasos necesarios para la configuración el despliegue de nuestra aplicación, y cuando me refiero a configuración me refiero a que es posible realizar de manera desatendida la creación del Website o Aplicación Web en los servidores destino. Mas aun, esta funcionalidad permite agrupar nuestros servidores de manera lógica, de tal manera que no sea lo mismo desplegar a los servidores de QA que a los de Producción.

Todo bien, así que lo que trataremos ahora es de desplegar nuestra aplicación a un conjunto de Maquinas Virtuales creadas en Azure, las cuales estarán detrás de un balanceador de carga el cual nos proveera de una URL o IP unica, siendo que a la hora de efectuar la petición o request la respuesta podrá provenir de cualquiera de las maquinas virtuales que hayamos desplegado, lo cual facilita mucho la disponibilidad de nuestra aplicación, pero que a la vez proporciona retos respecto al manejo de sesiones y recursos compartidos. Finish Reading: Usando Deployment Groups para facilitar nuestros despliegues sobre servidores (I)

Y ahora verificando la performance (I)

Varias cosas han pasado desde que empezamos a probar en nuevo modelo de Builds en VSTS, primero creamos una build sencilla que desplegaba a una Azure Web App, luego probamos como usar los Resource Groups para desplegar entornos, luego retiramos el paso de despliegue de la Build para trasladarlo a Release Management luego de su integración con VSTS, y hace poco agregamos Sonar como parte del proceso de análisis de nuestro código dentro de la compilación.

Y como el ciclo de evolución del proceso DevOps nunca para, en esta ocasión veremos como hacer algo a lo que le he tenido bastante respeto desde la época de las builds con el modelo XAML, en este caso la evaluación de la performance y estabilidad de nuestras aplicaciones web desplegadas.

En corto, la posibilidad de probar nuestras aplicaciones Web precede aun a .Net, recuerdo cuando probé Web Application Stress Tool (Homer) para hacer unas pruebas sencillas sobre ASP Clásico, de ahí le perdí el rastro pero la cosa se puso interesante desde Visual Studio 2013 se permite que los tests de carga se basen en las capacidades de la nube, lo cual significa que durante nuestras pruebas se provisionaran las maquinas virtuales que hagan falta para cubrir la cantidad usuarios y peticiones deseadas, esto ya lo había probado desde Visual Studio (revisar aquí y aquí), con buen resultado, pero… ¿como hacer que estas pruebas se ejecuten cuando se produzca cierto tipo de despliegue?

Antes de proseguir hay algunas consideraciones a tener en cuenta:

Los recursos que Azure provisiona para efectuar estas pruebas tienen un costo (si se va por encima de los minutos de carga incluidos con nuestra suscripción de VSTS) por lo que hay que tener cuidado de no lanzar estas pruebas por cada commit que los desarrolladores efectúen, así que la sugerencia general seria tener un sitio de DEV donde se despliegue continuamente pero sin efectuar las pruebas de cargar, luego definiríamos un sitio QA (por ejemplo) al cual se desplegara ya sea de manera manual o de manera programada el contenido existente en DEV (con Release Management lo que se despliega son paquetes que no necesariamente son recién compilados) y al efectuar ese despliegue se lanzaran las pruebas de carga, las cuales si son exitosas indicar que en el proceso de despliegue esta listo para ser sometido a aprobación (si lo hemos definido así) para decidir su pase a otro entorno.

Con estas consideraciones en mente procederemos con nuestra primera prueba para lo cual no sera necesario usar Visual Studio simplemente agregar un paso adicional a nuestro proceso de despliegue, esto es porque a veces lo que nos interesa es simplemente ver que tan bien resiste una URL en concreto a cierta petición.

Para esto vamos a la pestaña de Release de nuestra instalación de VSTS, elegimos nuestro plan actual, seleccionamos el “entorno lógico” sobre el cual agregaremos nuestra prueba de carga y agregamos el Step de Cloud-based Web Performance Test, así:

Clipboard01

Clipboard02

Ok, ahora toca parametrizar el paso para lo cual dejaremos los parámetros mas o menos así, en breve explicare el significado de cada parámetro:

Clipboard06

Antes de proseguir prestemos atención al parámetro Registered connection, lo que ocurre es que cada prueba de carga se hace con cargo a los recursos y facturación de una cuenta de VSTS y podría darse el caso de que la organización tenga mas de una instancia de VSTS, así que corresponde indicar explícitamente dicha cuenta, así que hagamos clic sobre el enlace que dice Manage, que nos abrirá una nueva pestaña en el navegador para agregar un Endpoint (como ya hicimos anteriormente para enlazar Sonar y la cuenta de Azure), y en este caso elegiremos Generic, así:

Clipboard04Y llenamos los parametros de configuración de nuestra instancia de VSTS, pero ojo, al hacerlo deberemos utilizar los datos de nuestra conexión alterna a VSTS, algo de lo que hablamos hace tiempo cuando empezamos a trastear con Git.

Clipboard05

Listo, ya hemos enlazado nuestra prueba de carga a nuestra cuenta de VSTS,  personalmente yo agregaria un checkbox que permita usar la instancia actual y no hacer nada mas, pero siempre es bueno tener una conexión alterna a VSTS especialmente de cara a la integración con herramientas de terceros en Git.

Ok, antes de grabar repasemos los parámetros que estamos configurando:

  • Registered connection: como lo vimos, la instancia de VSTS sobre la cual se hara la facturación de esta prueba de carga.
  • Website Url: La dirección que vamos a probar, en este caso estoy probando la raiz del site (o mejor dicho del slot) en que acabo de hacer el despliegue, cabe indicar que tranquilamente podria haber colocado cualquier URL interna de nuestro site, o peor aun, una URL totalmente externa no manejada por nosotros, pero eso no queremos ¿verdad?
  • Test Name: El nombre con el que identificaremos a esta prueba.
  • User Load: La cantidad de usuarios supuestos que se estarán conectando a nuestra URL.
  • Run Duration (sec): El tiempo de duración de la prueba.
  • Load Location: La zona geográfica de Azure desde donde se hará la prueba, es muy interesante y conveniente hacer la prueba desde una zona que no sea la que aloja a nuestro site, en mi caso la URL esta alojada en East-2, así que la prueba la estoy lanzando desde West.

Marcamos Enabled y grabamos, ya estamos listos para empezar, asi que lo mas sencillo sera hacer un cambio en nuestro codigo fuente, lanzar una nueva Build manualmente, o si queremos divertirnos relanzar un paquete antiguo al ciclo de Release, en todo caso esperamos un poco y veamos cuando nuestra Release se empieza a ejecutar y llega al paso que hemos agregado:

Clipboard08

Para después terminar:

Clipboard09Normalmente pasaríamos a aprobar o rechazar esta Release, pero ahora me interesa conocer los resultados de nuestra prueba, así que vamos a la pestaña Tests, y elegimos la opción LoadTest, para luego seleccionar la prueba mas reciente (en mi caso tengo algunas pruebas anteriores, pero si es la primera vez deberías tener una sola prueba en tu lista).

Clipboard10

Y así entramos a un detalle de los resultados de la prueba:

Clipboard11

Notemos algo interesante, aparentemente nuestra prueba salio ok (o sea, no hubo errores 500 o timeouts) pero el panel nos indica 2 errores, así que veamos el detalle:

Clipboard12

En mi caso el mensaje de error dice “The value 85.10138 exceeds the warning threshold value of 75“, lo cual nos viene a indicar no un error en el sitio que estamos probando sino un exceso en la capacidad de la instancia provisionada para hacer la prueba, esto apunta a que forzamos la maquina dandole 250 usuarios concurrentes, lo cual se relaciona a las pocas opciones de configuración que ofrece este tipo de prueba.

Listo, sencillo y ya podemos empezar a sacar conclusiones, pero como verán esta prueba es muy sencilla y en adición al ya mencionado problema del threshold no permite saber si por ejemplo el comportamiento es diferente desde un browser u otro, desde un tipo de red, etc, para lograr este tipo de análisis lo que se nos ofrece es la posibilidad de crear un test muy detallado desde dentro de Visual Studio y que cuando se efectúe el despliegue Visual Studio Team Services pueda “leer” todos estos parámetros archivados y ejecutar tras bastidores las pruebas programadas, esto sera tema de nuestro próximo post, de momento sugiero familiarizarse con este tipo de prueba, pues los conceptos siguen siendo validos cuando los escalemos, aparte de que estas pruebas tienen su lugar si  hacemos peticiones Get que luego repercuten a nuestra BD, o queremos probar la mejora si usamos un servicio de cache, etc.

Espero sus comentarios 😉

Integración Continua con el nuevo modelo de Builds de VSO/TFS 2015 (IV)

Pues si, como fue prometido, ya va tocando meternos con el modelo de Builds, pero antes de proseguir respondamos la pregunta que deje en el post anterior, ¿en que parte de la solución estoy grabando los parámetros de conexión a la BD? pues en el archivo PartsUnlimitedWebsite.pubxml ya que es ahí donde el wizard de deploy guardo los datos de la cadena de conexión a pesar de que al final no sobrescribió los valores del web.config, nos corresponde editar las secciones de dicho archivo a fin de que no persistan los valores dentro de nuestra solución.

Curiosamente, debemos agregar este archivo a nuestra solución, para lo cual hacemos clic derecho y ya formara parte de lo gestionado por VSO, ojo esto solo funciona si hemos editado adecuadamente nuestro archivo .gitignore como ya hemos explicado en el segundo post de esta serie.

Clipboard27
Bueno, ahora si, subamos el cambio y volvamos a nuestro Team Project en Visual Studio Online, dirigiéndonos a la zona de BUILD, de momento estará vacía.Clipboard28
Posicionados sobre la zona que dice “Build definitions” (nótese que aparte tenemos una zona correspondiente a las XAML definitions) y presionamos el “+”, nos saldrá la siguiente pantalla:Clipboard29
Finish Reading: Integración Continua con el nuevo modelo de Builds de VSO/TFS 2015 (IV)

Integración Continua con el nuevo modelo de Builds de VSO/TFS 2015 (III)

Bueno, luego de una pausa, proseguimos con esta serie de artículos para establecer un escenario completo de despliegue usando el nuevo modelo de Builds que traen tanto Visual Studio Online como Team Foundation Server 2015, ¡así que manos a la obra!

Para proseguir con el demo de Parts Unlimited, debemos mencionar que en este ejemplo se hace uso intensivo de los Resource Groups que ya conversamos anteriormente, esto permite automatizar la creación del entorno donde se desplegara nuestra aplicación, vale decir que reduciremos nuestras visitas al Portal de Azure para la creación de nuestros recursos.

Para facilitar esto debemos preparar a nuestra maquina para que sea capaz de provisionar directamente en Azure, para lo cual abrimos una ventana de PowerShell (con permisos de Administrador, claro esta) y escribimos Set-ExecutionPolicy RemoteSigned.

5554.image_thumb_6CC60E94

Bien, terminaron los preparativos así que ya con la aplicación cargada en Visual Studio (y bien conectada a VSO) vamos al proyecto PartsUnlimitedEnv, hacemos clic derecho y elegimos New Deployment… Finish Reading: Integración Continua con el nuevo modelo de Builds de VSO/TFS 2015 (III)

Agregando uno de los primeros pasos a nuestro ciclo de desarrollo y despliegue

Quienes han dedicado un rato a ver mi serie sobre automatización en el despliegue de aplicaciones con Azure habrán notado que había varios pasos manuales a la hora de preparar los entornos en los que íbamos a desarrollar y luego desplegar nuestras aplicaciones.

Pero, ¿nos hemos preguntado que pasa cuando hemos llegado a cierta madurez y nos encontramos con un escenario en que?: siempre creamos nuestros Websites en la misma zona geográfica de Azure, el mismo plan de precios, y… que la organización ya definió cuantos slots (ranuras) de despliegue son requeridos para el ciclo de desarrollo antes de que algo pase a producción.

En ese sentido Azure nos ofrece los Azure Resource Manager templates, que nos permiten definir y usar plantillas para automatizar la creación de recursos y entornos completos dentro de Azure, y ojo esto no esta limitado unicamente a Web Apps, sino también a entornos que involucren VM, Docker, Logic App, etc, en suma algo muy potente si queremos simplificar tareas repetitivas.

Este mecanismo llamo mi atención luego de que la genial GiS (a quien pude conocer de pasada en mi época en España) publicara este interesante articulo sobre como crear las citadas plantillas desde Visual Studio y es a ese articulo a donde deben remitirse para entender con detalle las partes de un proyecto de este tipo, luego de lo cual podemos regresar aquí.

¿Ok? En nuestro caso vamos a definir un proyecto de plantilla de tipo Web App (a diferencia de GiS que eligió la Blank Template para explicar con mas detalle la estructura base), así:

RM1En este caso notaremos que a diferencia del ejemplo genérico, lo que obtendremos serán archivos de nombre WebSite.json y WebSite.param.dev.json, los cuales se corresponden con los DeploymentTemplate.json y DeploymentTemplate.param.dev.json que con tanto detalle se describieron en el articulo de GiS.

RM2Ahora lo que haremos sera configurar los diversos archivos a fin de lograr una plantila que automáticamente nos permita:

  • Crear un Web App que incluya dos slots por defecto: “QA” y “Staging
  • Localizar esta Web App (y sus slots) en una zona geografica determinada, en mi caso: “East US
  • Usar siempre un mismo Grupo de Recursos (ya previamente creado en nuestro Portal de Azure, o creado la primera vez que invoquemos la plantilla), en mi caso: “Default-Web-EastUS

Finish Reading: Agregando uno de los primeros pasos a nuestro ciclo de desarrollo y despliegue

Los retos para hacer cloud en el Perú

Cloud es una interesante y validad promesa para las empresas peruanas, la promesa de reducir sus costos fijos, haciendo que buena parte de la infraestructura pase a ser costo variable pagando solo lo que se consume, es algo muy atractivo, y mas cuando un caso de éxito como el de Cineplanet llama la atención por la escalabilidad que esta logrando.

Para lograr esto hay que mirar con otros ojos a nuestras conexiones de internet, si antes se orientaba a facilitar acceso a la web y al correo, ahora… las cosas cambian, si antes el servidor de correo estaba en la red local ahora lo esta fuera, así que cada request sale fuera de la red de la organización por mencionar el detalle que podría ser mas común.

Otro escenario en que nuestra velocidad de conexión puede asomar un lado poco amable es el de la carga de datos desde nuestra organización hacia la nube, y claro como usualmente la infraestructura de la nube esta fuera de nuestro país la latencia si que es un factor a considerar, para lo cual habrá que recurrir a herramientas como Azure Speed y así determinar en que zona geográfica nos conviene mas provisionar nuestros servicios en la nube; pues como vengo insistiendo, el hecho de que haya datacenters cloud en Brasil no implica que vayamos a conseguir mejores velocidades de conexión que las que tenemos con USA.

Pero por mas de que elijamos bien la zona geográfica y aumentemos razonablemente el ancho de banda, hay otro factor que toca considerar y es que la mayoría de conexiones a Internet que se contratan son de tipo ADSL (Asymmetric Digital Subscriber Line) siendo que la A, que antes usualmente no nos importaba pues solo consumíamos contenido, nos puede jugar una mala pasada pues la Asimetría nos recuerda que la velocidad con la que nos podemos bajar contenido siempre sera mucho mayor que la velocidad de subida… upss y eso se refleja en los problemas mencionados anteriormente, de ahí que dentro del planeamiento de uso de soluciones cloud debe hacerse la evaluación de pasar de conexiones ADSL a conexiones DSL que no restrinjan la capacidad de subir contenido.

Ya en el lado que no esta mucho en nuestras manos esta el reclamar por los precios y las velocidades que se ofertan en el Perú (penosas realmente) y esperar que a se haga una NAP a nivel de la Comunidad Andina, lo cual justificaria a los proveedores de cloud el montar un datacenter en la región, o que se mejore la conexión vía fibra óptica con Brasil y así reducir la latencia con los datacenter de dicho país.

Por otro lado, corresponde hacer una mayor difusión respecto a lo que implica cloud en cuanto a generar nuevas aplicaciones (PaaS) o gestión de Infraestructura (IaaS), pues percibo que aun en los departamentos de IT se habla de cloud solo en términos de compartir información en repositorios de facil acceso o usar herramientas de ofimática basadas en Web, y como bien sabemos es mucho mas que eso, todo un reto para los informáticos en estos tiempos ¿no?