Azure: Desplegando y Depurando allí arriba en la nube

image

 

Después de ya un tiempo me he decidido a llevar a cabo mi primer deploy en la nube, no obstante una de las cosas que más me preocupa es el control de lo que realmente está ocurriendo. Para conseguir ser dueño de tal poder es muy importante tener en cuenta desde el principio el tratamiento de cierta información con objeto de poder consultarla para lograr finalmente coseguir la ubicación exacta de lo que ocurre, es decir, si ocurre un problema, localizarlo y solucionarlo.

Esto tiene una implicación muy importante, y es, que finalmente, se va a pensar en las trazas y en el control de errores desde el primer momento del proyecto. ¡Al fin un “hito” que no va a poder pasarse por alto, va a resultar que poco a poco vamos a ir haciendo las cosas bien!  ¿Porque no pensamos tan detenidamente estas cosas en un sistema On-Premise? ¡Claro, en una última instancia, nos enfrentamos cara a cara con el servidor que esta en una sala más a la derecha y listo, Risa! Bueno, pues ahora nos tocará codificar algunas líneas más de código….

Por el momento veamos el deploy y todo lo que surge a su alrededor:

  • Desde Visual Studio:
    Click derecho sobre el proyecto de “Cloud Services” y “Publish…”. A continuación tendremos que seleccionar un certificado o crear uno nuevo directamnte desde el Wizard. Para crear uno basatará con incluir el siguiente comando en la cosola de “Windows Azure SDK v1.2”:
makecert -r -pe -a sha1 -n "CN=Windows Azure Authentication Certificate" -ss My -len 2048 -sp "Microsoft Enhanced RSA and AES Cryptographic Provider" –sy 24 elGuerreAzure.cer.
image
Comienza el deploy, ¡ahora, lo que menos me gusta!, a esperar unos 20 minutos, aunque eso sí, podemos seguir trabajando sin ningún problema.

MyFistDeploy

Si por alguna razón (el Visual Studio “peta”) hay que volver a lanzar de nuevo el deploy. En tal caso así como cuando queremos relanzar una publicación veremos este mensaje; (“Delete and Continue” y seguimos…) y a volver a esperar.

image

  • Desde la Web “wwww.azure.com”:

Seleccionamos los paquetes de instalación; “.cspkg” y “.cscfg”:

image

image

A esperar los 20min de cortesía y listo, Risa

Un tema muy importante a tener en cuenta es realizar el deploy con el IntelliTrace activado  como mostraba en una imagen anterior.  Esto va a permitir recuperar las trazas y poder localizar cualquier error, y sobre todo, los ocurridos durante el despliegue.

Para ello, acceder al “Server Explorer” desde Visual Studio, click derecho  y “View IntelliTrace Logs”:

imageimage

En ese momento comienza la descarga de las trazas desde el servidor, seguidamente podremos acceder al IntelliTrace y localizar el posible problema.  Una detalle que me he encontrado es que las Dlls de MVC para ASP.Net no se encuentran instaladas en los Web Roles y por lo tanto hay que hacer un “Copy Local = True” de la misma para se incluya en el deploy y así se copie al/los servidor/es. Igualmente para el resto de Dlls que tampoco se encuentren instaladas. Guiño

 

Algunos errores durante el despliegue

  • System.Net.WebException: Unable to connecto to the remote server
  • System.ObjectDisposedException: Cannot access a disposed object.
  • “System.Net.Sockets.SocketException:  An attempt was made to access a socket in a way forbidden by its access permissions.”

Estos aprecen si el deploy en la nube se realiza con “UseDevelopmentStorage=true”,(de igual forma si “UseDevelopmentStorage=false”). La solución a estos, basatará con indicar los valores correctos tales como; “DefaultEndpointsProtocol=https;AccountName=[Your Account Name];AccountKey=[Your Account Key]. Es facil pero puede ocurrir que se nos olvide o que en algún caso la cadena no esté bien formada.

  • “No valid combination of account information found.”

 Este problema puede implicar un pequeño ajuste en nuestro código, aunque no siempre tiene que ser necesario, el porqué, aún no lo tengo muy claro. En otras casos también es posible que aparezca si la cadena de conexión a la nube no está correctamente formada:

Código original:
   1: CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>

   2: {

   3: configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));

   4: });

Nuevo código a sustituir por el anterior:
   1: CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>

   2: {

   3:     string connectionString; 

   4:     if (RoleEnvironment.IsAvailable) 

   5:     { 

   6:         connectionString = RoleEnvironment.GetConfigurationSettingValue(configName);

   7:     } 

   8:     else

   9:     { 

  10:         connectionString = ConfigurationManager.AppSettings[configName]; 

  11:     } 

  12:     configSetter(connectionString);

  13: });

  • Windows Azure – Resolving “The Path is too long after being fully qualified”. 

Aparece en muchas ocasiones al intentar compilar o publicar una aplicación. Puedemos solucionarlo fácilmente siguiendo los siguientes pasos.  Más detalle aquí:

  1. Desde la consola; “Windows Azure SDK v1.2”, ejecutamos:
    1. csrun /devfabric:shutdow
    2. csrun /devfabric:clean
  2. Aseguramos que el icono de Azure no se encuentra en la barra de notificaciones.
  3. Finalmente creamos una nueva variable de entorno “_CSRUN_STATE_DIRECTORY“ y le asignamos el path que quieras “ej.: “C:AZURE_RUN”

En un siguiente post veremos en detalle el Traceo y la monitorización, Guiño

saludos
Juanlu

Azure: ¿Qué es? ¿Cómo? y ¿Por donde comenzar?

Windows Azure Big

Azure va a dar mucho que hablar así, que espero estar por aquí algo más de lo habitual.

Ya en un post anterior comenté algún tema curioso sobre Azure, en este caso en concreto me gustaría dejar un resumen a grandes rasgos de manera que sirva de orientación para el comienzo con esta nueva gran “area de desarrollo”, principalmente para aquellos que aún no conocen poco o nada sobre Azure.

¿Qué es Azure? y, concretamente, ¿Qué es Windows Azure Platform?

Antes de dar ninguna explicación, me gustaría hacer mención sobre como equiparar a Azure con otros temas históricos de nuestra vida y de los que actualmente nos estamos beneficiando. Este simile aunque ya utilizado en más de una presentación creo que aclara bastante:   “La electricidad, el gas, etc, los tenemos al alcance de nuestra mano con un servicio. ¿Por qué no hacer lo mismo con la infraestructura de ordenadores y pagar por un servicio prestado? De esta manera cada “uno” se dedica única y exclusivamente a su negocio”.   Con el tiempo, hay una menor inversión y se produce un alto ROI.

Windows Azure es un entorno de “Cloud Computing” basado en Internet, es decir, un Sistema Operativo basado en Internet.  Una plataforma para el desarrollo de aplicaciones .net en la “nube”, todo ello apoyado en data centers repartidos por todo el mundo.

Una imagen muy buena que define o da respuesta a esta pregunta es la siguiente. ¡ Creo que hay poco más que contar para una breve respuesta!

Microsoft Platform

Esta plataforma esta formada por:

  • Windows Azure: Computación y capacidad de almacenamiento en la nube. Basicamente un OS.
  • App Fabric: Bus de datos y Control de acceso. Básicamente un ESB (Enterprise Service Bus).
  • SQL Azure: SQL Server para la nube.

Todo ello con algunas restricciones y algunas diferencias que ya intentaré ir contando poco a poco.

Adicionalmente, cuando comencemos a estudiar y a intentar aprender Azure, encontraremos muchos acronimos que es conveniente tener presente desde el principio y que yo creo que pueden acortar dicho tiempo:

  • IaaS: Infraestructure as a Service. Elasticidad y facilidad  para subir máquinas a la nube; maquinas virtuales (WM Ware), Amazon, …
  • PaaS: Platform as a Services. Plataforma para la ejecución de software/servicios a medida; Windows Azure, Google App Engine, …
  • SaaS: Software as a Services. Productos acabados. Windows Live, Bing, Sharepoint, Twitter, faceboos, Gmail, …
  • Windows Azure Appliance: Contenedores de máquinas de Azure administrados por la nube, y que van a encontrarse físicamente en casa del cliente, (éste, los quiere cerca, poque “no se fía”).
  • On-premise: Sistema Software “No-Cloud”.

Azure se identifica claramentecon algunos adjetivos; Elasticidad, flexibilidad y “On-Demand” (En el Cloud, se paga por lo que se usa).  Pincipalmente lo definiría como “Self-Service”.

Una vez  entendido que es Windows Azure Platform, he aquí un gráfico identificatio (sacado de uno de los correspondientes White Papers), aunque por el momento no entraremos en detalle:

image

Conviene conocer también que existe una API “REST” (tecnología basada en HTTP y URI), que es utilizada por Azure y que, aunque aparentemente es trasparente, su uso es posible de forma explicita incluso para otros lenguajes para el uso con componentes de la plataforma azure:

WindowsAzureStorageServices

Adicionalmente y de cara a la seguirdad tendremos que entender algunos terminos que aunque ya exsten hace tiempo, se le comenzará a dar más uso en y con la nube;

  • WIF (Windows Identity Foundation); WS_Trust y WS-Federation.
  • Claims: Es “Algo” que identifica a un usuario; el UserId, el Pwd, la edad, un conjunto de estas, etc.
  • STS (Security Token Service); Issue, Renew, Validate, Cancel
  • ADSF 2.0 (Active Directory Federation Services)
  • Y mucho más…

A partir de ahora no tiene por que ir todo a la nube, cada cosa irá en su sitio, exisiten aplicaciones idóneas para la nube mientras que otras no:

Idóneas:

  • Requieren escalabilidad; interet
  • Estacionales; Loterías, rebajas, etc
  • Con picos; Ofertas, vuelos, etc
  • De crecimiento exponencial generado por los usuarios; facebook, flickr, etc
  • etc…

No idóneas:

  • Lineales, sin perspectiva de crecer.
  • Cotrol absoluto del entorno.
  • Alta sensibilidad en los datos; datos financieros.

Adicionalmente agradecer anuestro compañero de Geeks Ibon Landa, su recapitulación sobre el inicio con Windows Azure Platform.

Hasta aquí y en pocas palabras, un resumén o recapitulación y punto de partida hacia este gran y maravilloso mundo. En los siguientes post directo al grano con VS 2010 y Windows Azure Cloud Services.

Saludos desde nube
Juanlu

Azure está llegando, ¡Y de que manera!

Windows Azure Big

Muy buenas a todos,

Windows Azure está ya aquí rondando como ya sabéis y parece ser que no va a parar. Aunque aún estoy un poco “espeso” en la parte técnica a pesar de haber hecho algun que otro ejemplo y ser capaz de captar su potencia, por el momento os dejo algunos vídeos que os pueden dar una idea de lo que se mueve por “ahí fuera” alrededor de Azure, merece la pena echarles un vistazo: Videos sobre Windows Azure.

Algunas novedades:

Y, por otro frente tambien se aproxima “Windows Intune

Azufresaludos
Juanlu