Azure Queues y Service Bus Queues, diferencias y similitudes

Introducción

Microsoft Azure nos ofrece dos alternativas a la horas de armar sistemas basados en colas de mensajes: Azure Queue Storage y Service Bus Queues.

El servicio de Azure Queue Storage es parte de la infraestructura de Azure Storage (que también nos ofrece Blobs y Tables), y están basadas en una interfaz REST.

El servicio de Service Bus Queues, es parte de una infraestructura de mensajes más amplia, que soporta colas, como así también publicador/suscriptor, remoting de Web services y patrones de integración.

Consideraciones tecnológicas

Ambos servicios tienen sus diferencias y similitudes, y podremos usar uno u otro (o ambos) de acuerdo a las necesidades técnicas y/o de negocio del problema que estemos resolviendo. Sigue leyendo

Anuncios

Creando un clúster Hadoop en HDInsight – Parte 3

En la primera parte vimos cómo crear un clúster Hadoop en HDInsight desde los portales. En la segunda parte vimos cómo hacerlo desde código .NET y desde PowerShell en Windows.

En este post veremos cómo instalar y configurar la Azure CLI en MacOS o Linux y cómo crear un cúster con la configuración básica desde ella.

La Azure CLI está escrita en JavaScript y funciona sobre Node.js. Se implementó usando el Azure SDK para Node, y fue liberada bajo licencia Apache 2.0. El repositorio del proyecto se encuentra en https://github.com/azure/azure-xplat-cli.

Instalar la Azure CLI

Hay tres formas de realizar la instalación:

  1. Usar un instalador.
  2. Instalar Node.js y npm y luego usar el comando npm install.
  3. Correr la Azure CLI como un container de Docker.

Una vez instalada, podremos usar el comando azure en nuestra línea de comandos para ejecutar comandos de la Azure CLI.

Usar un instalador

Los paquetes están disponibles para los diferentes sistemas operativos:

Usar Node.js y npm

Si ya tenemos Node.js y npm instalados, ejecutamos:

npm install azure-cli -g

Instalar Node.js y npm en Windows y MacOS

Para instalar Node.js y npm en Windows y MacOS podemos descargar los paquetes de instalación de Nodejs.org.

Para verificar que la instalación haya sido correcta, podemos ejecutar en la consola:

npm -v

Luego instalamos el paquete de la Azure CLI:

npm install -g azure-cli

Instalar Node.js y npm en Linux con administración de paquetes dpkg

Para las distribuciones que usan apt (advanced packaging tool), como Ubuntu o Debian, podemos instalar Node.js y npm con los siguientes comandos:

sudo apt-get install nodejs-legacy
sudo apt-get install npm
sudo npm install -g azure-cli

Instalar Node.js y npm en Linux con administración de paquetes rpm

Para instalar Node.js y npm en distribuciones basadas en rpm, como Red Hat, primero hay que habilitar el repositorio EPEL. Por ejemplo, para instalar en CentOS 7:

su -
yum update [enter]
yum upgrade –y [enter]
yum install epel-release [enter]
yum install nodejs [enter]
yum install npm [enter]
npm install -g azure-cli [enter]

Usar un container Docker

Dentro de un host Docker ejecutar:

docker run -it microsoft/azure-cli

Configurar la Azure CLI

Lo primero que debemos hacer es vincular nuestra suscripción, algo que podemos hacer de dos maneras:

  • Iniciando sesión con una cuenta de trabajo o escuela o con una cuenta Microsoft (Microsoft account, anteriormente Live ID): ejecutando el comando azure login (el inicio de sesión con una cuenta Microsoft sólo está disponible desde la versión 0.9.10)
  • Descargando el archivo de Publish settings. Lo cual instalará un certificado en nuestro equipo local y nos permitirá hacer tareas de administración mientras la suscripción y el certificado sean válidos.

Crear el clúster mediante la Azure CLI, desde MacOS o Linux

azure hdinsight cluster create <myhdicluster> --location eastus --osType windows --storageAccountName <mystorage> --storageAccountKey <storagekey> --storageContainer <mycontainer> --userName admin --password <mypassword> --sshUserName sshuser --sshPassword <mypassword>

@gjbellmann

Despliegue e integración continua en Microsoft Azure

Durante el MVP Summit de 2015 tuvimos la oportunidad de grabar un video con Matías Quaranta en los estudios de Channel 9, en el campus de Microsoft en Redmond.

En el video hablamos sobre la implementación de Despliegue e Integración continua en Azure Web Apps, explicando los conceptos de Ranuras de Implementación, Intercambio, Kudu y finalmente integrando notificaciones de Slack.

El Despliegue e Integración contínua es vital para cualquier equipo de desarrollo ágil, permitiendo enfocarnos en construir nuestros productos sin perder tiempo en tareas repetitivas y propensas a error.

Despliegue e integración continua en AzureVer el video en Channel 9

Saludos!

@gjbellmann

Creando un clúster Hadoop en HDInsight – Parte 2

Como vimos en la primera parte, tenemos varias formas de crear nuestro clúster Hadoop en HDInsight.

En este post veremos cómo crearlo desde código .NET y desde PowerShell.

Crear el clúster desde código C#, con el SDK de HDInsight

Paso 1: Instalar los paquetes NuGet necesarios

Para crear nuestro clúster desde C# primero deberemos instalar el paquete NuGet de administración de HDInsight. Sigue leyendo

Recibiendo notificaciones de deploys de Azure Web Apps en Slack

Introducción

El servicio de Azure Web Apps tiene una gran funcionalidad: implementación contínua (continuous deployment), desde diferentes tipos de repositorios: Visual Studio Online, OneDrive, un repositorio local Git, GitHub, Bitbucket, Dropbox, o un repositorio externo. También tenemos alertas incorporadas, pero no notificaciones de las implementaciones. Ahí es cuando vienen al rescate los Web Hooks de Kudu.

Pero primero, ¿qué es Kudu?

Project Kudu es un proyecto open source, hosteado en GitHub, que es el motor detrás de las implementaciones desde Git/Mercurial, WebJobs, y varias otras cosas en Azure Web Apps. Y además, también puede correr fuera de Azure.

¿Qué son los Web Hooks?

Un Web Hook es un callback HTTP: un HTTP POST que ocurre cuando sucede algo; una simple notificación de evento vía HTTP POST. Los Web Hooks son una manera de recibir información valiosa cuando sucede, en vez de estar continuamente pidiendo datos sin estar recibiendo nada valioso la mayor parte del tiempo.

¿Cómo integramos?

En Nubimetrics, como en muchas otras startups, usamos Slack como medio de comunicación entre los miembros del equipo. Slack provee integración con otras aplicaciones y servicios, como GitHub, Bitbucket, Trello, Asana, JIRA, Google+ Hangouts, Google Drive, Dropbox y Visual Studio Online, por nombrar algunas (si estás interesado en conocer sobre el resto de las integraciones disponibles puedes visitar https://slack.com/integrations).

Pero, como verán en la lista, no hay una integración nativa con Kudu, pero aquí vienen nuevamente los Web Hooks al rescate! Slack soporta web hooks de entrada como una forma para otras aplicaciones de postear información a Slack.

Y, para hacer las cosas aún más fáciles, hay una aplicación hosteada en GitHub, escrita en Node.js y que corre en Azure, que hace esta tarea.

Todo lo que necesitamos hacer es:

  1. Ir a la configuración de nuestro equipo en Slack y configurar una integración de webhook de entrada.
  2. Implementar la aplicación desde el botón deploy.
  3. Configurar una variable de entorno llamada slackhookuri con el valor de la URI del Paso 1.
  4. Agregar la URI de nuestra Web App en los Web Hooks del portal de Kudu, al que podemos acceder desde https://{tu azure web app}.scm.azurewebsites.net/WebHooks.
  5. Y listo!!!

Conclusión

Los Web Hooks nos proveen una forma sencilla de integrar aplicaciones web. Usando simples web requests con contenido JSON podremos integrar casi cualquier cosa!

@gjbellmann

Creando un clúster Hadoop en HDInsight – Parte 1

Para crear un clúster Hadoop en HDInsight tenemos varias opciones:

  • Crear el clúster desde el portal viejo.
  • Crear el clúster desde el portal nuevo.
  • Crear el clúster desde código C#, con el SDK de HDInsight.
  • Crear el clúster mediante un script de Azure PowerShell, desde Windows.
  • Crear el clúster mediante la Azure CLI, desde Linux o MacOS.

Con todas ellas estaremos creando un cluster Hadoop con la configuración básica. Sigue leyendo