Windows Azure FAQ

· En este post quiero recopilar todas las preguntas que me hacen por medios escritos acerca del tema y su respectiva respuesta:

1. La arquitectura de la aplicación a migrar se fundamenta en la exposición de componentes (COM+)a través de Windows Communication Foundation, mediante una serie de servicios (SVC) publicados en un sitio de IIS. El modelo propuesto por Azure soporta la publicación de componentes COM+? Como se realiza el registro de los componentes en la plataforma? (Es decir, Windows Azure provee un administrador de componentes?)

Esta publicación sí es posible a través de SartUpTasks en las que al iniciarse un role, se accede cómo administrador y se ejecutan los batch de instalación de estos COM. Luego se pasa a usuario normal el role queda funcionando de manera segura.
Se realiza a través de operaciones en batch y StarUptasks. Aquí hay instrucciones: https://msdn.microsoft.com/en-us/wazplatformtrainingcourse_advancedwebandworkerroles_topic3

2. Que puedo usar para crear aplicaciones para Azure, WebForms?, WPF?, SilverLight?, se puede usar MVC?

Todo lo que mencionaste y más, se puede usar con Azure. También puedes usar WinForms, Java, PHP, Ruby, etc.

3. Hola WarNov, estamos a punto de iniciar un software y no sabemos si usar AZURE, nos asalta la duda de si podemos usar sockets en AZURE o si existe alguna manera de implementarlos.

En #Azure claro que se pueden usar sockets. Desde la versión 1.2 de la plataforma es posible abrir puertos a conexiones remotas

4. Sabemos que no se factura por el ancho de banda de entrada a azure, solo el de salida, usando VMRole cuando me conecto por remote desktop me factura algo? de ser asi hay alguna forma de predecir ese costo?

Se factura el consumo de salida en la conexión RDP y la única forma de averiguarlo es estar mirando la facturación actual en el portal y extrapolar.

5. En cuanto a VMRole, yo tengo q configurar la maquina en mi Hyper-V local, esa licencia sw WS2008R2 que le instalo tiene q correr por mi cuenta?

No.. la licencia que le instalas no es problema

6. cual seria la mejor forma, de reemplazar mis variables de sesión y cache de mi aplicación WEB al pasarla a AZURE, tamos en ese proceso, y es una duda que nos asalta, de antemano gracias

Una buena forma es usando registros en las tablas de Azure. Es rápido y barato. La otra es usando APPFABRIC que tiene módulos de cache y sesión.

7. WarNov, buenas tardes, de casualidad tienes links de recursos sobre el manejo de variables de sesión y cache para azure?, tamos migrando nuestra aplicacion de asp.net a azure y este es uno de nuestros primeros problemas

Claro. Te recomiendo hacer el capítulo de APPFABRIC que viene en el Windows Azure Training Kit. Allí enseñan como usar este módulo para el manejo de sesiones y cache.

8. Quiero montar un ESB en .net, Windows Azure que puede hacer por mi?. Azure podria ser en si un ESB ??. Puedo hacer que Azure sea privado, es decir, que solo corra en mi datacenter ???

Azure provee plataforma tecnológica para desplegar aplicaciones orientadas a cloud computing. Azure por sí mismo no es un ESB. Se puede construir un ESB y orientarlo a Cloud Computing y subirlo a Azure. Azure privado aún no sale al público pero empresas como eBay lo están probando. Esto se llama Azure Appliance y permitirá comprar un contenedor con Azure para poner el el datacenter local. También se espera a futuro que Azure tenga su propio módulo de orquestación de servicios.

9. WarNov tengo un proyecto con un reporting y funciona localmente pero cuando lo subo a la nube me sale el siguienet error: An error occurred during local report processing.Could not find file 'E:\approot\_WASR_\0\Report2.rdlc'. gracias por tu ayuda

En Windows Azure no hay un sistema de archivos como en una máquina local. Debes asegurarte de guardar el reporte en un blob y luego referenciarlo con la dirección del blob.

10. Será cierto eso que dicen que para migrar una base de datos de Sql Server 2008? a Windows Azure se realiza con MiWiza? y funcionara para todos sin problema?

Nunca he oido hablar de esa aplicación de Migración. En cambio conozco por ejemplo SQL Azure Migration Wizard v3.6 que es de código libre y está en codeplex: https://sqlazuremw.codeplex.com/
Aunque en algunas ocasiones hace un trabajo impecable, no siempre es suficiente. Algunas características avanzadas de la DB no estarán disponibles o habrán de sermodificadas a mano. Pero En general sirve muy bien y es una gran herramienta. Para bases de datos sencillas la migración casi siempre es 100%

11. Hola WarNov. No quiero usar mas Sql Azure, ¿puedo sacar una copia de todos mis datos para luego restaurarlos en una sql local?. Es fácil?

Si es muy fácil... con el SQL Server Management Studio te conectas y haces un backup por ejemplo.. o bajas los datos con Integration Services, etc.
Las cadenas de conexión de SQL Azure son las mismas de cualquier servidor SQL Server.

12. WarNov en Azure para instalar un App con envío de correo masivo tiene que ser a través de una cuenta determinada o puedo usar un servidor SMTP cualquiera, adicional a esto el firewall de Azure me permite realizar esta tarea o existe alguna limitación?

Hola. Azure permite usar cualquier servidor SMTP y no impone ninguna limitación de conectividad entre la aplicación y el servidor SMTP.

13. Hola WarNov, la pregunta es como puedo configurar Azure para que tome una instancia de SQL Server ya instalada y no busque por defecto a .\SQLExpress?

Hay un tool llamado DSInit; este viene con el SDK de Windows Azure. Así ke si abres el command prompt de Windows Azure, allí la encuentras y pones DSInit /sqlInstance:[Nombre de la Instancia]
por ejemplo DSInit /sqlInstance:. te levantaría la instancia por defecto (MSSQL)

14. Hola; quería preguntarle como puedo montar una aplicación Azure en un dominio que haya comprado

La idea no es que montes la app en un dominio comprado, sino que montes la aplicación como siempre y luego hagas que el dominio que compraste apunte al dominio de Windows Azure. Las instrucciones específicas las encuentras aquí: https://blog.smarx.com/posts/custom-domain-names-in-windows-azure

15. Es posible desarrollar una aplicación para azure y para una intranet... donde simplemente el cliente decida en donde quiere hospedarla??

Si es una aplicación creada con esto en mente, claro que sí es posible. Solo sería necesario establecer un par de variables de configuración y listo

16. WarNov en Azure puedo instalar aplicaciones como VisualSorucesafe para el manejo de versiones, un bugtracker para registro de bugs y tener un ambiente de pruebas para las aplicaciones, pues nos queremos ahorrar la compra de cualquier clase de servidor ?

Lo puedes poner en un VMRole, pero debes tener en cuenta la licencia del producto que estás instalando. Lo más seguro es que aún no diga nada acerca de trabajar el servidor en la nube y tal vez te genere problemas legales. Por otro lado, Microsoft en poco tiempo lanzará su servicio de TFS como servicio. Una excelente opción.

17. Actualmente tengo una aplicación de consola que lee docs de Excel para cargar la información a la base de datos y eso lo hace todos los dias a media noche, ¿de que forma puedo ejecutar una aplicación de consola en Windows Azure cada cierto tiempo teniendo

Hay que subir la aplicación de consola a un worker role que la ejecute. En ese worker role podemos poner dentro del loop infinito un chequeo e la hora e acuerdo a un archivo de agenda tal vez, que en determinadas horas dispare la aplicación de Consola.

18. Hola WarNov nosotros utilizamos aplicaciones en asp .net framework 3/3.5 hosteadas en sevidores externos, para migrar estas aplicaciones a Winazure debemos modificar la arquitectura de nuestras aplicaciones? que tan complejo es el cambio en codificacion

Si la aplicaicón ya está diseñada en capas, el cambio es muy sencillo. Lo único necesario es añadir una nueva capa entre la capa de servicios o negocio y la capa de presentación. Esta capa manejará la comunicación entre los Web Roles y Worker Roles. En general, las capas de negocio permanecen intactas.
Si tenemos un proyecto web con todas las capas en el mismo, este se puede pasar tal cual a un Web Role y no hay problema. Solo que se dejarían de aprovechar algunas características especiales de Azure, pero igual otras como la escalabilidad y automatzación quedarían disponibles.

19. Si no puedo realizar la migración de la bd MySQL a SQL Server, ¿como puedo acceder a la bd MySQL desde una app Web que se encuentra en Windows Azure?. ¿Haciendo uso de Azure AppFabric para conectarme a la bd o por algun puerto o por una app Win Cliente?

La conexión desde Azure a My SQL es idéntica a cualquier aplicación ASP.NET a My SQL. Solo basta poner la cadena de conexión y listo. No es necesario APP Fabric

20. Se conoce algo respecto al tema de costos que tendra VMRole cuando deje de ser beta?

Será el mismo de cualquier otro Role. No habrá que pagar licencias del server tampoco, porque al igual viene incluida. Hay que tener cuidado con el software adicional que se instale, pues se podrían estar infringiendo términos de licencia de dicho software al ponerlo en la nube.

21. Hay algún tutorial para implementar mi dominio en la aplicación que estoy montando en azure?

Claro que sí.. Con este post yo aprendí a hacerlo: https://blog.smarx.com/posts/custom-domain-names-in-windows-azure

22. WarNov, tengo una cuenta en sql azure y me muestra una db llamada master que asumo Aue es la misma cuando uno trabaja localmente. el tamaño de esa base de datos es incluido como tamaño de la cuenta contratada.

No. Ese tamaño no se cobra. Tampoco se cobran los logs.

23. Con una cuenta trial de windowsazurepass puedo trabajar VMRole son problema? o tiene alguna limitacion respecto a este tema?

El VM Role aún está en Beta. Para poder usarlo hay que solicitar el servicio. Desde CUALQUIER cuenta de Windows Azure se puede solicitar este servicio, pero se entra a una cola de espera que puede ser de un par de semanas.

24. Las transacciones entre windows azure y sql azure, no se cobra la transaccion del windows pero si el in/out del sql? Gracias

Es correcto. El único cobro relacionado a SQL Azure es el del ancho de banda empleado en transacciones ejecutadas por fuera de la nube y el del tamaño de la base de datos como tal.

25. hola estoy tratando de probar la plataforma Windows Azure, pero tengo inconveniente con lo de la Tarjeta de Crédito, no se puede de otro tipo diferente a los posibles o una alternativa a que no haya que ingresarla??. Agradezco tu ayuda.

Claro que sí... puedes pedir una cuenta en windowsazurepass.com

26. Es posible desarrollar software de Inteligencia Artificial con C# 4.0 y Windows Azure?

En Azure puede desarrollarse todo lo que se dedarrolla en .NET. Azure es .NET

27. Instalé el sdk de azure, al crear el proyecto me sale que es de FW 3.5... Azure funciona sobre 4.0 o toca sobre 3.5?

Azure funciona sobre cualquiera de esas dos versiones del framework.

28. Hola WarNov, estoy trabajando en un proyecto en el cual estoy utilizando Silverlight (EF4,RIA sevices,MEF)y quiero probarlo en Windows Azure, pero al querer subir me marca un error de Abortado, ya asocie el web rol, o se necesita una configuración?

Muy seguramente tienes un error en el despliegue; por ejemplo te falta subir alguna DLL que se requiera para el funcionamiento de la aplicación o algo así.

29. Como puedo saber cuanto consume un usuario en computo de Windows Azure en una hora?

Los recursos de las máquinas de Windows Azure son todos dedicados al usuario. Por ende, no importa cuánto se gaste en cómputo, así que no hay forma de medir cuanto se gasta un solo usuario. La idea es que Azure cobra solo el tiempo no el consumo.

30. Hola, es muy interesante este tema Windows Azure, pero si me puedes colaborar sacándome de una duda. Yo tengo una aplicación de escritorio sobre la plataforma .NET. Podría aprovechar solamente el SQL Azure de la nube?

Puedes tener una app fuera de la nube en corriendo sobre cualquier plataforma y conectarla a SQL Azure. No hay problema. Azure te da el poder de elegir.

31. Los logs de transacciones afectan el costo de SQL Azure?

No. Lo único que afecta el costo de SQL Azure es el tamaño de la base de datos solicitado, así como el ancho de banda usado en su operación.

32. Pueden los clientes acceder a los logs de SQL Azure?

No. No es posible para un ente externo a la nube acceder a estos logs.

33. Hay alguna restricción con respecto al tamaño de los log y alguna operación automática para reducir sus tamaños?

La administración de logs es completamente automatizada. La base de datos corre siempre en modo de recuperación completa (“Full Recovery Mode”) y los logs son respaldados y truncados regularmente. La única restricción acerca de los logs, es que una transacción sencilla contra la base de datos no puede exceder 1GB de datos en el log.

34. Solicito su colaboración para validar de que forma se puede evitar la vulnerabilidad de Inyección de SQL en SQL Azure, si aparte de las buenas practicas en programación existen herramientas que me ayuden a controlar esto desde la plataforma

Basta con las mismas prácticas convencionales en ASP.NET para evitar el SQL Injection. Por ende Windows Azure no tiene herramientas ni políticas especiales para evitar esta práctica. Si no conoce estas buenas prácticas remítase a este artículo.

35. Actualmente se realiza el cargue de archivos desde una aplicación Web y se almacena en los servidores locales y existe un servicio Windows que realiza las validaciones de los archivos cargados, la duda es: ¿Que tan complejo es migrar el servicio Windows a un proyecto de tipo Worker Role para subirlo a la plataforma Azure y que implicaciones tiene esto?

En Windows Azure actualmente no se pueden instalar servicios porque requieren permisos de administración. A futuro estará disponible el VM Role con permisos de administración pero no será PaaS sino IaaS lo que conlleva necesidades de administración.

La labor de un Windows Service claramente se puede llevar a cabo con un Worker Role que corre infinitamente leyendo mensajes de la cola por ejemplo. Sabiendo cómo programar un worker role no habrían dificultades. Esto lo puede aprender en el laboratorio: Introduction to Windows Azure que encuentra en el training kit, referenciado en https://bit.ly/wazure.

36. Existe alguna forma o herramienta automatizada, que determine en tiempo real cuanto ha sido el consumo que han tenido mis servicios en Windows Azure en una fecha determinada, es decir como una especie de reporte que muestre el consumo total en términos de (Transacciones, almacenamiento, transferencias de datos de entrada y salida, etc.) Y así saber si me he excedido en el consumo mucho antes de que se genere la facturación, para poder controlar este consumo.?

Hola Julián; por ahora no hay dentro de Azure una utilidad por defecto con esta información. Sin embargo tenemos:

1. El API de diagnostico; sobre el cual podemos construir aplicaciones que nos indiquen el uso de Azure. Ya hay varias implementaciones de terceros...

2. Para las suscripciones por paquetes, hay correos que nos indican cuando vamos en 75%, 100% y 125% de nuestro paquete. Observa más detalles en: blogs.msdn.com/.../notificaciones-de-consumo-para-usuarios-de-windows-azure.aspx

3. En el portal de Microsoft Online Services está disponible la factura para poder ver el consumo diario.

37. Actualmente estoy trabajando en una migración de una aplicación Web y quisiéramos realizar dicha migración a Windows Azure, pero la base de datos es MySQL. ¿se puede subir la base de datos a Azure o de que forma puedo hacer esta labor?

Una base de datos es fácilmente Migrable a SQL Azure. Primero es necesario pasarla a SQL Server. Luego de allí generar los scripts, y luego usar una herramienta que nos ayuda a optimizar esos scripts a SQL Azure. La herramienta es esta: https://sqlazuremw.codeplex.com/
Luego es fácil subir los datos usando Integration Services o Management Studio.

También se puede decidir ejecutar MySQL en Azure. (Ver la siguiente pregunta)

38. Qué opciones hay para ejecutar MySQL en Windows Azure?

Como sabemos, MySql se puede instalar como servicio, o como un ejecutable. En el primer caso, se requieren permisos de administrador, que Windows Azure (WAZ) por ahora no nos brinda. Por ende solo podemos recurrir a la segunda opción. En cuyo caso lo que se hace es subir el ejecutable con sus a un Worker Role que lo inicializa y lo deja ejecutando infinitamente. Además faltaría escribir código para hacer un pipeline de todos los llamados. Esto afortunadamente está ya pre-escrito en algo que llamamos MySQL Accelerator. Los Accelerators de WAZ son proyecto pre escritos que tienen todo para correr servicios o aplicaciones especiales en WAZ; tales como MySQL, Tomcat o PHP.

El Accelerator de MySQL se puede bajar de aquí

Sin embargo personalmente recomiendo que solo se use este accelerator en casos extremos en los que sea imposible migrar a SqlServer. Por qué? Pues como les mencioné se requiere un Worker ejecutándose indefinidamente para tener el MySQL. Ejecutar el worker rol más pequeño nos vale US$0.12 la hora. Esto como mínimo nos vale US$0.12x24x30=$86.4 GB al mes. Mientras que una giga del ya muy confiable SQL Azure al mes nos vale tan solo US$10. Entonces es mejor hacer buenos cálculos antes de decidir quedarse con MySQL.

39. Que limitantes tiene la instalación de MySQL en Windows Azure a través del Accelerator?, ¿sobre esta se puede trabajar una base de datos de producción?

No conozco la estructura interna de MySql. Pero diría que operativamente son iguales, de acuerdo a lo que he trabajado en MySQL. La diferencia es que el ejecutable hay que iniciarlo manualmente con código. El servicio siempre está andando con el server. El Accelerator sin embargo ya trae el código que ejecuta la inicialización del .exe de MySQL

40. Si no puedo realizar la migración de la bd MySQL a SQL Server, ¿como puedo acceder a la bd MySQL desde una app Web que se encuentra en Windows Azure?. ¿Haciendo uso de Azure AppFabric para conectarme a la bd o por algún puerto o por una app Win Cliente?

La conexión desde Azure a My SQL es idéntica a cualquier aplicación ASP.NET a My SQL. Solo basta poner la cadena de conexión y listo. No es necesario APP Fabric.

41. ¿Como se pueden montar aplicaciones de consola a Windows Azure?

La inicialización de un programa de consola se ejecuta tal como la de MySQL o PHP en sus Accelerators. Pueden copiarse el código. Para subir la aplicación, solo basta agregar el ejecutable a un proyecto que esté asociado a un Worker Role y este subirá en el root de esa aplicación luego del despliegue. Estaré posteando posteriormente los detalles de esta operación.

42. ¿Hay alguna forma de realizar la programación de las aplicaciones de consola como tareas programadas?

Se puede crear un worker rol infinito que en determinados lapsos de tiempo lance la consola. Esos tiempos pueden ir por ejemplo en un archivo de configuración o una tabla. También el worker podría más bien responder a mensajes puestos en las colas de Azure y reaccionar ante dichos mensajes para ejecutar el aplicativo.

43. ¿Una de esas aplicaciones de consola lee archivos en Excel 2003/2007 por medio de las librerías de Interop de Excel, esta funcionalidad se maneja de la misma forma en la plataforma Windows Azure?

No. Iterop como su nombre lo indica interopera con Office. Office no está instalado en la nube de Azure. Así que no funcionará. Si necesitas interactuar con documentos de Excel o en general de Office, te aconsejo usar archivos .xlsx (o los equivalentes para los otros aplicativos) que soportan el estándar Open XML y que por tanto pueden ser accedidos usando el SDK.

44. WarNov en Azure para instalar un App con envío de correo masivo tiene que ser a través de una cuenta determinada o puedo usar un servidor SMTP cualquiera, adicional a esto el firewall de Azure me permite realizar esta tarea o existe alguna limitación?

Hola. Azure permite usar cualquier servidor SMTP y no impone ninguna limitación de conectividad entre la aplicación y el servidor SMTP.

45. WarNov en Azure puedo instalar aplicaciones como VisualSorucesafe para el manejo de versiones, un bugtracker para registro de bugs y tener un ambiente de pruebas para las aplicaciones, pues nos queremos ahorrar la compra de cualquier clase de servidor.

No. Esas opciones hoy no están disponibles en Azure; tal vez a futuro. Hoy Azure actúa como PaaS (Plataforma como Servicio) Así que allí solo puedes poner a correr aplicaciones como tal (bueno; y uno que otro servidor sencillo como un TomCat). Pero otros tipos de servidores como Team System o un Oracle por ejemplo, solo podrían instalarse en un esquema de IaaS, con todas las desventajas que ello conlleva; por ejemplo encargarse de las actualizaciones, administración, patchs y todo eso que es lo que evita el PaaS y puntualmente Azure.

46. Hola WarNov nosotros utilizamos aplicaciones en asp .net framework 3/3.5 hosteadas en servidores externos, para migrar estas aplicaciones a Winazure debemos modificar la arquitectura de nuestras aplicaciones? que tan complejo es el cambio en codificación

Si la aplicación ya está diseñada en capas, el cambio es muy sencillo. Lo único necesario es añadir una nueva capa entre la capa de servicios o negocio y la capa de presentación. Esta capa manejará la comunicación entre los Web Roles y Worker Roles. En general, las capas de negocio permanecen intactas.
Si tenemos un proyecto web con todas las capas en el mismo, este se puede pasar tal cual a un Web Role y no hay problema. Solo que se dejarían de aprovechar algunas características especiales de Azure, pero igual otras como la escalabilidad y automatización quedarían disponibles.