Archivo de la categoría: Cloud

Curso DevOps en la práctica para WebApps en Azure

Este curso lo hicimos con Alex Campos en 3 partes, comenzamos explicando lo básico de Web Apps para luego explicar como automatizar el despliegue y por ultimo como obtener metricas de nuestro sistema. Estos son los modulos

Modulo 1

devops1

Modulo 2

devops2

Modulo 3

devops3

Contenido relacionado

WAMS VOD Butler: workflow de publicación de video en demanda

Introducción

Desde hace un tiempo muchas cargas de trabajo, de diferentes tipos, se están moviendo a la nube por diferentes motivos. Algunos buscan mejor desempeño, mejorar la disponibilidad y confiabilidad de las soluciones, disminuir costos, etcétera. Dentro de las cargas de trabajo que naturalmente están buscando moverse a la nube tenemos las soluciones de medios de comunicación.

Las necesidades de IT para las soluciones de medios podemos describirlas como:

  • Requerimientos exponenciales en recursos
  • Respuestas agiles para los proyectos de producción
  • Motivados por reducción de costos

Para estos tres pilares de necesidades de las soluciones de medios podemos encontrar respuesta en las soluciones de computación en la nube y específicamente en Azure Media Services (WAMS).

WAMS ofrece la flexibilidad, escalabilidad y confiabilidad de una plataforma de nube y el manejo de experiencia de medios de alta calidad para audiencias globales. WAMS ofrece solución para ingestión, codificación, conversión de formatos, protección del contenido y trasmisión de video en vivo o bajo demanda para múltiples plataformas y dispositivos.

En WAMS usted puede construir un workflows de inicio a fin completamente en la nube. Desde la subida hasta la distribución del contenido, para ello WAMS provee un amplio rango de componentes listos para usar, pre construidos o de terceros que se pueden combinar para satisfacer su necesidad especifica.

WAMS VOD Butler código de ejemplo

En el contexto de una solución que utilice WAMS para video en demanda (VOD) el cliente tiene que implementar el workflow de publicación utilizando por ejemplo el SDK de punto NET. Esto es una muy flexible manera de implementar un workflow ya que da la libertad a los desarrolladores de codificar de acuerdo a las necesidades específicas de cada caso. Por otra parte, existen clientes que tienen la necesidad de un flujo de publicación VOD muy simple para los que no necesariamente hace sentido desarrollar código a la medida, por ejemplo un flujo como se muestra a continuación.

a1Para este tipo de escenario fue creado el código de ejemplo/Framework llamado WAMS VOD Butler, que implementa un flujo de procesamiento directo desde un video MP4 hasta la publicación del mismo ya codificado para ser consumido por los diferentes clientes. Para iniciar el proceso se debe subir el video a un contenedor del almacenamiento de Azure y eso gatilla el inicio del trabajo. El proceso se muestra en el siguiente diagrama de secuencia

b1

Una de las características más interesantes que tiene Butler es que los formatos de video de salida son configurables, por lo cual simplemente cambiando la configuración usted puede obtener diferentes formatos de video y empaquetamiento al final del proceso.

En este artículo vamos a implementar WAMS VOD Butler y codificar un video MP4 en formato multi bit rate y lo empaquetaremos de manera dinámica para que pueda ser consumido mediante HTTP Adaptative streaming con diferentes protocolos, por ejemplo HLS para dispositivos IOS y Smooth Streaming para plataforma Windows.

Despliegue de Butler

Como primer paso debemos hacer el despliegue de los componentes de Butler en Microsoft Azure. Butler es un servicio construido íntegramente sobre los servicios de Cloud Service y Storage. El siguiente diagrama muestra los componentes de Butler.

c1

Para realizar el despliegue debemos realizar dos tareas:

  • Crear una instancia de WAMS en Azure.

Para esto se puede ver el articulo How to Create a Media Services Account en http://azure.microsoft.com/en-us/documentation/articles/media-services-create-account/

  • Crear los elementos en el servicio de Storage.

Para simplificar la creación de estos elementos y la configuración básica de Butler podemos usar el siguiente PowerShell Script

Pare ejecutarlo debemos definir los siguientes parámetros:

  1. azureSubscritionName: Nombre de la subscripción en que vamos a hacer despliegue de Bulter y dondé se encuentra Azure Media Services.
  2. wamsAcountName: Nombre de la cuenta de Azure Media Services.
  3. wamsAcountKey: Llave de la cuenta de Azure Media Services.
  4. butlerStorageAccountName: Nombre de la cuenta de almacenamiento de Media Services.
  5. butlerContainerStageName: Nombre del contenedor donde se subirán los archivos MP4 para iniciar el proceso.

El script se ejecuta como se muestra a continuación:

CreateButlerStorageElements -azureSubscritionName ‘jpgarcia69 Windows Azure MSDN – Visual Studio Ultimate’ -butlerContainerStageName ‘stage’ -wamsAcountKey ‘[your Wams Account Key]’ -wamsAcountName ‘testpoweshell’ -butlerStorageAccountName ‘testpowershellstorage’

  • Hacer el despliegue del Worker Role en el servicio Cloud Service.

Una vez que se cuenta con todas los elementos creados en el almacenamiento de Azure debemos hacer deploy del Worker Role que implementa WAMS VOD Butler.

Butler al ser un ejemplo de código abierto está publicado en GITHUB y usted puede descargarlo directamente desde https://github.com/liarjo/WAMSVODButler y abrirlo con Visual Studio para hacer deploy. Lo único que debe hacer es actualizar dos parámetros de configuración:

  1. strConnConfig
  2. Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString

En ambos parámetros usted debe colocar la cadena de conexión a la cuenta de almacenamiento de WAMS. Una vez actualizada la configuración se hace deploy. Si no conoce cómo hacer deploy con Visual Studio puede ver el articulo Developing and Deploying Microsoft Azure Cloud Services Using Visual Studio en la liga http://msdn.microsoft.com/en-us/magazine/jj618299.aspx

Pruebas de funcionamiento VOD

Una vez terminado el despliegue y configuración de WAMS VOD Butler podemos probar su funcionamiento. Primero debemos subir un video MP4 al contenedor de Staging en la cuenta de almacenamiento. La imagen muestra el video en el contenedor.

d1

Una vez que el video está en el contendor, debemos espera a que Butler detecte el nuevo archivo. Cuando lo hace, crea un Asset con el video original, el que está marcado con rojo, y otro que es el video codificado. En este caso en multiBitrate.

e1

Luego nos movemos a ver la lista de JOBS de WAMS y podemos ver que el trabajo de codificación va avanzando.

f1

Una vez que la codificación termina, podemos volver al contenido y ver que ahora solo tenemos un Asset. La razón de esto es que después de codificar el video original ya no se utiliza y por eso por eso Butler lo borró. Por otra parte podemos ver que el nuevo Asset está ya publicado, lo que significa que está listo para ser consumido.

g1

Para probar el video podemos hacer click en el botón Play de Media Services y vemos con el player por defecto el video codificado, como se muestra en la siguiente imagen.

h1

Prueba de Adaptative Streaming

Ahora vamos a probar la característica de WAMS llamada Dynamic Package, como se muestra en el siguiente diagrama. Más información en http://msdn.microsoft.com/en-us/library/jj889436.aspx

i1

 

Para probar Dynamic Package necesitamos configurar a lo menos una instancia reservada en el servidor de origen de Media Services. Para nuestro ejemplo necesita solo una instancia reservada, cómo hacerlo puede verse en el artículo How to Scale a Media Service en http://azure.microsoft.com/en-us/documentation/articles/media-services-how-to-scale/

Una vez que tenemos al menos una instancia reservada del servidor de origen tenemos que leer desde la cola de notificaciones de Butler. Está cola se llama wamsbutlerallencodefinish y está en la cuenta de almacenamiento de WAMS. Utilizando alguna de las herramientas para el servicio de almacenamiento de Azure podemos ver el contenido del mensaje de notificación y copiar la URL que contiene el manifiesto, como muestra la siguiente imagen.

En este caso de ejemplo la URL es http://testpoweshell.origin.mediaservices.windows.net/f2def825-e100-4490-81d3-3904c065d8bc/BigBuckBunny_400.ism/manifest

Con esta URL podemos usar un player que soporte Smooth Streaming para ver nuestro video usando adaptative streming. Existen multiples opciones para esto, se puede usar para probar el Player llamado vértigo que se encuentra en la liga http://player.smooth.vertigo.com/.

Copiamos en el cuadro de texto llamado Manifest URL la url de nuestro manifiesto y apretamos el botón Set Source and Play y ya podemos ver nuestro video con este modelo de entrega adaptativo como se muestra en la siguiente imagen.

j1

Próximos pasos

Los próximos pasos con WAMS VOD Butler son comenzar a manejar la configuración para poder obtener formatos de videos que calcen con las necesidades específicas de su sistema.

Links relacionados

  1. Windows Azure Tech Series: Media Services 
  2. Windows Azure Media Services: Publicar videos para IOS y Windows Phone #azure

Presentación: Using windows azure to develop secure and deploy cloud applications Santiago Chile

vs2013_a

En el contexto del lanzamiento de Visual Studio 2013 presenté las siguientes laminas. En la exposición se muestran los conceptos básicos de Windows Azure y las herramientas que VS2013 trae para facilitar el desarrollo de aplicaciones en la Nube.

En las siguientes ligas se pueden hacer tutoriales parecidos a las demostraciones  que vimos en la presentación.

  1. Escenario de DEV/TES de Sharepoint en Azure VM
  2. Creación de Web Sites en Azure
  3. Debugging remoto con Visual Studio 2013
  4. Crear una aplicación Windows Phone 8 con BackEnd en Azure Mobile Services
  5. Publicar servicios internos en Azure Service Bus Relay

Windows Azure Queues and Windows Azure Service Bus Queues

Aquí publico una pequeña comparación de las opciones de mensajería de Windows Azure, con foco en Services bus Queues y ejemplos transaccionales que compilé la semana pasada para un proyecto en México.

Lo que necesita el proyecto es poder habilitar mensajería transaccional entre servidores en sus instalaciones y servicios corriendo en la Nube. Aquí se incluye un ejemplo de cómo enviar mensajes desde una cola MSMQ a una Cola del Service Bus en Azure de manera transaccional.

Links relacionados

  1. Colección de EBooks GRATIS de tecnologías Microsoft, incluida Windows AZURE
  2. Mejores Prácticas para el Diseño de la arquitectura en CLoud
  3. Presentación: Introducción SOA

 

Windows Azure Tech Series: Media Services #windowsazure

Esta es la presentación y contenido del evento Windows Azure Tech Series: media Services que se realizó ayer en las oficinas de MS Chile.

Alguno de los comentarios que recibidos de los asistentes y mis respuestas a los mismos 😉

  1. Publicar los ejemplos

Respuesta: los ejemplos pueden encontrarlos en los siguientes links

2. Excelente

Respuesta: como dicen en Colombia “Con Gusto”

3. Hubiese gustado algo impreso (tarjado)

Respuesta: No damos material impreso, somos ecológicos 😉

4. “En el área de TI no me ha tocado ver información acerca de Streaming. Si bien el curso es bueno, se nota que fue planeado para diseñadores”

Respuesta: más que para diseñadores lo había pensado para programadores de ISV que quisieran hacer un portal de Videos en vivo (Live Streaming) o en demanda (On demmand streaming)

5.  “Mucho mejor este exponente, explica bien los contenidos y de forma interactiva. Felicitaciones.”

Respuesta: Cuando el tema es interesante, es fácil apasionarse con la presentación. Windows Azure, como plataforma es en mi opinión el futuro 110% para nuestros socios.

Links Relacionados

Cómo usar Custom Load Balance y Affinity en Windows Azure #windowsazure

Introducción

Windows Azure tiene la característica de balanceador de carga incluido dentro del servicio, no es un cobro extra como en otras soluciones de Nube. Este servicio de balanceo está disponible tanto para aplicaciones Cloud Services (PaaS) como para servicios que corren en máquinas virtuales (Iaas).

El balanceador de Azure tiene el criterio de distribución de carga llamado Round Robin y no soporta sticky session, hasta ahora. Esto produce un reto para las compañías que tienen aplicaciones que no son State Less.

En ese contexto, y no como la primera opción a recomendar, podemos hacer un Walkaround utilizando nuestro propio sistema de balanceo basado en Aplication Request Routing (ARR) de Internet Information Server (IIS). Con esto podemos implementar un escenario donde tenemos ARR corriendo en máquinas virtuales, que balancean la carga hacia servidores Web que se encuentren en otro Cloud Service con la opción de afinidad.

Este es un escenario muy potente porque estamos tomando el control del balanceador, agregando la capacidad de afinidad de sesiones y conectado IaaS con PaaS dentro del mismo sistema. . Aquí, una pieza clave para unir los dos mundos (IaaS con PaaS) son las redes virtuales.El escenario que vamos a implementar se muestra en la figura 1.

escenario de demo

Este articulo lo divido en dos partes, para que sea más simple su lectura. La primera parte configura el primer ARR y hace pruebas de balanceo junto con afinidad.

En la segunda parte vamos a completar el escenario de la figura 1.

Paso a paso para implementar ARR con balanceador y afinidad

Primero vamos a implementar un escenario más sencillo que nos permita entender cómo se implementa y configura ARR en Windows Azure. La idea es solo crear un ARR y que este balancee tráfico a dos sitios web de terceros para luego agregarle afinidad. El escenario de prueba inicial lo podemos ver en la figura 2.

Escenario de prueba

1.      Crear una Red Virtual

En la figura 1 se muestra el escenario que buscamos armar en este artículo. Para lograrlo debemos comunicar directamente el Cloud Service que contiene las máquinas virtuales con el que contiene las aplicaciones Web. Esto es conectar IaaS con PaaS, una de las maravillas que nos permite hacer Azure.

La unión des diferentes Cloud Services se logra a través del uso de una red virtual. La red virtual debe ser creada primero, para así estar disponible al momento de crear las máquinas virtuales y aplicaciones Web.

Para crear una red virtual, en el portal se selecciona la opción New, Networks y Custom Create como muestra la figura 3.

i1

Luego, ingresamos el nombre de la red y el grupo de afinidad. Es un requisito tener un grupo de afinidad para tener una red virtual.

i2

El siguiente paso en el asistente es la creación y asignación del espacio de direccionamiento. Para asignar direcciones tenemos dos opciones de nomenclatura, COUNT y CIDR. CDIR es la clásica de los administradores de red, que definen máscaras y con eso determinan la cantidad de direcciones IP del segmento. Por otra parte, COUNT es el método para desarrolladores donde defines el número de direcciones IP que necesitas en el segmento de manera directa y más simpe.

Para nuestro escenario vamos a definir una sub red para los balanceadores (máquinas virtuales con ARR) y otro para las aplicaciones Web (PaaS)

i3

Con esto ya tenemos definida nuestra virtual la cual será utilizada en los próximos pasos.

2.      Crear un Servidor Windows Server 2012

Vamos a crear un servidor con Windows Server 2012 en una Máquina virtual de Windows Azure. Para ello, desde el portal se selecciona la opción de crear una máquina virtual desde la galería. Seleccionamos la imagen de Windows Server 2012 Datacenter y avanzamos en el asistente de creación.

i4

Le asignamos el nombre de ARR1 a la VM y definimos el usuario administrador. La versión del realeas no es importante para nuestros objetivos porque básicamente solo necesitamos IIS.

i5

En el paso 3 debemos definir el DNS name, en este caso demoARRblog. Este es el DNS del Cloud Service y será el mismo que tendrá la segunda máquina virtual con ARR. Muy importante en este paso es seleccionar la red virtual que creamos en el primer paso y la sub net de balanceadores, como se muestra en la siguiente figura.

i6.0

Por ultimo nos preguntan por el Availability Set, para este demo no lo necesitamos, en producción obvio que sí, lo dejamos en blanco.

Con esto ya hemos creado nuestro primer servidor Virtual en la subnet de balanceadores. Una vez creada la VM, podemos ver en el Dashboard de la red virtual que aparece el recurso ya alocado en la red y sub red definidas.

i6.0.1

3.      Configuración de IIS en Windows Server

Lo primero que vamos ha hacer es modificar las configuraciones de seguridad del explorador para poder acceder a internet. Para los administradores seleccionamos OFF.

i7

Luego en Server Manager, agregamos el ROL de Web Server (IIS) y las herramientas de administración.

i8

A continuación en los servicios del rol agregamos los por defecto para luego confirmar la instalación.

i9

4.      Instalación de Aplication Request Routing (ARR)

Ahora, utilizando Internet Information Services (IIS) manager, vamos a instalar ARR. Para ello, al entrar al IIS Manager, nos aparece el siguiente dialogo donde nos preguntan si queremos conectarnos a la plataforma de componentes Web, le decimos que sí.

i12

Esto nos lleva al sitio Web donde podemos bajar e instalar gratuitamente Web Plaform Installer. Lo bajamos e instalamos en nuestro servidor virtual.

i13

Luego buscamos el Web Platform Installer 4.5 por ARR como se muestra en la siguiente figura. Lo agregamos aprontando el botón ADD y luego lo instalamos.

i15

El proceso de instalación termina con la siguiente pantalla de confirmación.

i18

5.      Publicar Puerto 80/http de la Máquina Virtual

Para poder acceder al servidor Web de nuestro servidor Virtual debemos exponer el servicio a través de un EndPoint. Existen los EndPoint externos e internos. Para que un usuario pueda acceder al nuestro servidor Web, tenemos que crear un EndPoint externo en el puerto 80.

Para hacer esto, vamos al portal de Azure y en la máquina virtual buscamos la pestaña que dice ENDPOINTS. Ahí apretamos agregar y se inicia el asistente para crear el EndPoint. Vamos a crear uno con las siguientes características

  1. Nombre: WWW
  2. Protocolo: TCP
  3. Puerto público: 80
  4. Puerto Privado: 80

i8.1

Ahora podemos conectarnos utilizando un Browser a nuestro servidor virtual.

i18.1

6.      Crear una Server Farm de pruebas con Aplication Request Routing (ARR)

En este punto ya tenemos el primer servidor virtual con ARR instalado y podemos crear ya la primera server FARM para poder probar las características de ARR. Una Server FARM es una granja de servidores que se comportan como un solo servidor lógico que está compuesto por varias instancias de servidores, físicos o virtuales.

El escenario de pruebas que usaremos se ilustra en la siguiente imagen. La idea es que el ARR1 sirva como balanceador de carga que dirige los requerimientos que se envían a http://demoarrblog.cloudapp.net a dos sitios web públicos, www.dell.com y www.amazon.com.

Escenario de prueba

Primero creamos un Server Farm. Para esto vamos a IIS Manager y vamos a ver que ahora aparece dentro del árbol de nuestro servidor una hoja que se llama Server Farm. Esto es lo que nos agregó la instalación de ARR.

i19

Si iniciamos el asistente de crear una nueva Server Farm, lo primero que nos pregunta es el nombre y si está estará Online. En nuestro caso, vamos a llamarla BalanceadorSitiosExternos y estará Online. Como siguiente paso vamos a agregar los servidores que componen la granja, 143.166.224.244 para DELL y 176.32.98.166 para Amazon.

i22.1

Cuando damos Finalizar al asistente, aparece el siguiente dialogo que nos pregunta si queremos que las reglas de ruteo se creen automáticamente. Le decimos que sí, ya que esas son las reglas que buscamos crear para redirigir los requerimientos hacia los dos sitios externos.

i23

Por último vamos ha configurar el método de distribución de carga. Para ello vamos a nuestra granja y seleccionamos Load Balance.

i26

Vamos a utilizar el criterio de distribución de carga llamada Weigted Round Robin, que distribuye los requerimientos de manera homogénea entre ambos sitios si los configuramos con el mismo peso relativo, como aparece en la siguiente imagen.

i27

Una vez que aplicamos los cambios, podemos cargar varias veces el sitio Web http://demoarrblog.cloudapp.net y vamos a ver el comportamiento del balanceador funcionado. Alternadamente nos muestra el contenido del sitio Web de DELL y Amanzon, en la URL del Cloud Service!

Podemos ver en las dos siguientes capturas de pantalla la prueba de ejecución.

i27.1i27.2

7.      Pruebas de Server Affinity con Aplication Request Routing (ARR)

La última prueba que vamos a realizar es la de afinidad (affinity). La afinidad es la capacidad de mantener al cliente final conectado siempre al mismo servidor de la granja de servidores. Por ejemplo, si un usuario entra en nuestro servicio y el balanceador lo envío la primera vez al sitio Web de Dell, la afinidad hace que todos los siguientes requerimientos de ese cliente sean dirigidos hacia ese servidor hasta que se cumpla un tiempo de inactividad o ese servidor se encuentre fuera de línea.

La opción de affinity se utiliza para que aplicaciones Web que no están preparadas para ser balanceadas porque no son state less. Cuando se trabaja en la nube, especialmente en PaaS, lo ideal es que nuestras aplicaciones Web sean State Less porque eso permite escalar sin ningún problema. El uso de ARR es un Walk Arround para las aplicaciones Web que no cumplen con esta característica de no tener estado.

Para configurar Server Affinity con Aplication Request Routing (ARR) vamos a la opción de Server Affinity de nuestra granja de servidores como muestra la figura.

i29

En esa opción seleccionamos Client Affinity y aplicamos el cambio. Esta característica se basa en el uso de cookies en el cliente, que permite al ARR conocer cuál fue el servidor de la granja que le asigno en el primer requerimiento de ese cliente y continúa enviándolo ahí.

i30

Una vez configurado podemos probar que el cliente siempre será enviado al mismo sevidor. En mi caso, con Explorer  cargue mi sitio y me envió al servidor de Dell. Todos los siguientes requerimientos con ese Browser van al mismo sitio de Dell.

i31

ara comprobar la afinidad, ahora utilizaré otro browser para cargar el sitio. Esto equivale a otro cliente, por lo que me envía a Amazon. Todos los recargar que hago me envían al mismo servidor.

i32

Próximos pasos

En esta primera parte hemos creado y configurado un servidor virtual con Aplication Request Routing (ARR). En el siguiente artículo voy a desarrollar el escenario completo, como se muestra en la figura 1, es decir una aplicación Web corriendo en PaaS, balanceada con ARR con mis propios criterios y con Server Affinity para crear afinidad entre el cliente y el servidor que lo atiende en la Server Farm.

Links relacionados

 

Windows Azure SDK 2.0 Video

La semana pasada se lanzó en SDK 2.0 de Windows Azure. Aquí hay un video de Channel9 donde Scott Guthrie explica las nuevas características del mismo.

sdk2.0video

Se puede bajar el SDK 2.0 de Windows Azure desde aquí.

Links relacionados