Creación de aplicaciones reales en la nube con Azure

por Rick Anderson y Tom Dykstra

Descargar el proyecto Fix it o descargar el libro electrónico

Este libro electrónico le guiará a través de un enfoque basado en patrones para crear soluciones reales en la nube. Los patrones se aplican al proceso de desarrollo y a prácticas de arquitectura y codificación.

El contenido está basado en una presentación desarrollada por Scott Guthrie, que este presentó en la Conferencia de desarrolladores noruegos (NDC) de junio de 2013 (parte 1 y parte 2), y en Microsoft Tech Ed Australia en septiembre de 2013. Muchas otras personas actualizaron y ampliaron el contenido mientras lo pasaban del vídeo a la forma escrita.

Destinatarios

Los desarrolladores que sientan curiosidad por el desarrollo para la nube, estén planteándose un cambio a la nube o no tengan experiencia en el desarrollo en la nube encontrarán aquí una perspectiva concisa de los conceptos y procedimientos más importantes que deben conocer. Los conceptos se ilustran con ejemplos concretos y cada capítulo se vincula a otros recursos para obtener información más detallada. Los ejemplos y los vínculos a recursos adicionales son de marcos y servicios de Microsoft, pero los principios ilustrados se aplican también a otros marcos de desarrollo web y entornos en la nube.

Los desarrolladores que ya están desarrollando para la nube pueden encontrar aquí ideas para mejorar sus resultados. Cada capítulo de la serie se puede leer de forma independiente, por lo que puede elegir los temas que le interesen.

Cualquier persona que haya visto la presentación Creación de aplicaciones reales en la nube con Azure de Scott Guthrie y quiera más detalles e información actualizada los encontrará aquí.

Patrones de desarrollo en la nube

En este libro electrónico se explican trece patrones recomendados para el desarrollo en la nube. La palabra "patrón" se usa aquí en un sentido amplio para hacer referencia a los procedimientos recomendados para hacer las cosas: la mejor manera de desarrollar, diseñar y codificar aplicaciones en la nube. Estos patrones clave le ayudarán a "caer en el pozo del éxito".

  • Automatización de todas las acciones

    • Use scripts para maximizar la eficiencia y minimizar los errores en procesos repetitivos.
    • Demostración: Scripts de administración de Azure.
  • Control de código fuente

    • Configure la estructura de bifurcación en el control de código fuente para facilitar el flujo de trabajo de DevOps.
    • Demostración: Agregar scripts al control de código fuente.
    • Demostración: Mantener los datos confidenciales fuera el control de código fuente.
    • Demostración: Cómo usar Git en Visual Studio.
  • Integración y entrega continuas

    • Automatice la compilación y la implementación con cada comprobación de control de código fuente.
  • Procedimientos recomendados de desarrollo web

    • Mantenga el nivel web sin estado.
    • Demostración: Escalado y escalado automático en Web Apps en Azure App Service.
    • Evite el estado de sesión.
    • Use una red CDN con una reserva cuando la red CDN no esté disponible.
    • Use el modelo de programación asincrónica.
    • Demostración: asincronía en ASP.NET MVC y Entity Framework.
  • Inicio de sesión único.

    • Introducción a Azure Active Directory.
    • Demostración: Creación de una aplicación de ASP.NET que use Azure Active Directory.
  • Opciones de almacenamiento de datos.

    • Tipos de almacenes de datos.
    • Cómo elegir el almacén de datos apropiado.
    • Demostración: Azure SQL Database.
  • Estrategias de partición de datos

    • Particione los datos verticalmente, horizontalmente o de las dos maneras para facilitar el escalado de una base de datos relacional.
  • Almacenamiento de blobs no estructurado

    • Almacene archivos en la nube mediante Blob service.
    • Demostración: Uso del almacenamiento de blobs en la aplicación Fix it.
  • Diseño para sobrevivir a errores

    • Tipos de errores.
    • Ámbito de error.
    • Comprensión de los acuerdos de nivel de servicio.
  • Supervisión y telemetría

    • Por qué debería comprar una aplicación de telemetría y escribir su propio código para instrumentar la aplicación.
    • Demostración: New Relic para Azure
    • Demostración: Registro del código en la aplicación Fix it.
    • Demostración: Inserción de dependencias en la aplicación Fix it.
    • Demostración: Compatibilidad con el registro integrado en Azure.
  • Control de errores transitorios

    • Use una lógica inteligente de reintentos y retrocesos para mitigar el efecto de los errores transitorios.
    • Demostración: Reintento y retroceso en Entity Framework 6.
  • Almacenamiento en caché distribuido

    • Mejore la escalabilidad y reduzca los costos de transacción de base de datos mediante el almacenamiento en caché distribuido.
  • Patrón de trabajo centrado en la cola

    • Habilite una alta disponibilidad y mejore la escalabilidad mediante el acoplamiento flexible de los niveles web y de trabajo.
    • Demostración: Colas de Azure Storage en la aplicación Fix it.
  • Más guías y patrones de aplicaciones en la nube

  • Apéndice: Aplicación de ejemplo Reparar

    • Problemas conocidos
    • Procedimientos recomendados
    • Cómo descargar, compilar, ejecutar e implementar.

Estos patrones se aplican a todos los entornos de nube, pero los ilustraremos con ejemplos basados en tecnologías y servicios de Microsoft, como Visual Studio, Team Foundation Service, ASP.NET y Azure.

En el resto de este capítulo se presenta la aplicación de ejemplo Fix it y el entorno en la nube de Web Apps en Azure App Service donde se ejecuta la aplicación Fix it.

Aplicación de ejemplo Fix it

La mayoría de las capturas de pantalla y los ejemplos de código que se muestran en este libro electrónico están basados en la aplicación Fix it desarrollada originalmente por Scott Guthrie para demostrar los patrones y procedimientos recomendados para el desarrollo de aplicaciones en la nube.

Fix It app home page

La aplicación de ejemplo es un sencillo sistema de vales de elementos de trabajo. Cuando se necesita corregir algo, se crea un vale y se asigna a un usuario. Los usuarios pueden iniciar sesión y ver los vales que tienen asignados, además de marcar los vales como completados cuando se realice el trabajo.

Es un proyecto web estándar de Visual Studio. Se basa en ASP.NET MVC y usa una base de datos de SQL Server. Se puede ejecutar localmente en IIS Express y se puede implementar en un sitio web de Azure para que se ejecute en la nube. Puede iniciar sesión mediante la autenticación de formularios y una base de datos local o mediante un proveedor social, como Google. (Más adelante también mostraremos cómo iniciar sesión con una cuenta de organización de Active Directory).

Log in page

Una vez que se inicia sesión, se puede crear un vale, asignarlo a un usuario y cargar una imagen de lo que desea corregir.

Create a Fix It task

Fix It task created

Se puede realizar un seguimiento del progreso de los elementos de trabajo que se han creado, ver los vales asignados, ver los detalles de los vales y marcar los elementos como completados.

Se trata de una aplicación muy sencilla desde en cuanto a características, pero verá cómo compilarla para que se pueda escalar a millones de usuarios y sea resistente, entre otras cosas, a los errores de la base de datos y a las finalizaciones de la conexión. También verá cómo crear un flujo de trabajo de desarrollo automatizado y ágil, lo que le permitirá empezar de forma sencilla e ir mejorando la aplicación mediante la iteración del ciclo de desarrollo de forma eficaz y rápida.

Web Apps en Azure App Service

El entorno de nube que se usa para la aplicación Fix it es un servicio de Azure al que llamamos Sitios web. Este servicio permite hospedar una aplicación web propia en Azure sin tener que crear máquinas virtuales y mantenerlas actualizadas, instalar y configurar IIS, etc. Hospedamos su sitio en nuestras máquinas virtuales y proporcionamos automáticamente copias de seguridad y recuperación, además de otros servicios. El servicio Sitios web funciona con ASP.NET, Node.js, PHP y Python. Permite realizar la implementación muy rápidamente mediante Visual Studio, Web Deploy, FTP, Git o TFS. Por lo general, transcurren tan solo unos segundos desde que se inicia la implementación hasta que la actualización está disponible en Internet. Es gratuito para empezar y puede escalar verticalmente a medida que crece el tráfico.

En segundo plano, Web Apps en Azure App Service proporciona una gran cantidad de componentes arquitectónicos y características, los cuales tendría que crear personalmente si quisiera hospedar un sitio web mediante IIS en sus propias máquinas virtuales. Un componente es un punto de conexión de implementación que configura IIS automáticamente e instala la aplicación en tantas máquinas virtuales como desee para ejecutar el sitio.

Deployment service

Cuando un usuario llega al sitio web, no llega a las máquinas virtuales de IIS directamente, pasa por equilibradores de carga de Enrutamiento de solicitud de aplicaciones (ARR). Puede usarlos con sus propios servidores, pero la ventaja es que se configuran automáticamente. Usan una heurística inteligente que tiene en cuenta distintos factores, como la afinidad de sesión, la profundidad de la cola en IIS y el uso de CPU en cada máquina para dirigir el tráfico a las máquinas virtuales que hospedan el sitio web.

ARR load balancer

Si una máquina deja de funcionar, Azure la extrae automáticamente de la rotación, pone en marcha una nueva instancia de máquina virtual y comienza a dirigir el tráfico a la nueva instancia, todo ello sin tiempo de inactividad de la aplicación.

Automatic recovery from machine failure

Todo esto tiene lugar automáticamente. Lo único que debe hacer es crear un sitio web e implementar la aplicación en él mediante Windows PowerShell, Visual Studio o el Portal de administración de Azure.

Para ver un tutorial detallado rápido y sencillo que muestra cómo crear una aplicación web en Visual Studio e implementarla en un sitio web de Azure, consulte Introducción a Azure y ASP.NET.

Resumen

En esta introducción se ha proporcionado una lista de los temas que se tratan en el libro, capturas de pantalla de la aplicación de ejemplo y una breve introducción a Web Apps en el entorno de nube de Azure App Service. Una de las grandes ventajas de desarrollar aplicaciones en y para la nube es lo fácil que resulta automatizar las tareas de desarrollo repetitivas, como la creación de un entorno de pruebas y la implementación del código en él. Cómo hacerlo es el tema del siguiente capítulo.

Recursos

Para obtener más información acerca los temas que se tratan en este capítulo, consulte los siguientes recursos.

Documentación:

  • Web Apps en Azure App Service. Página del portal de documentación de Azure sobre Web Apps.
  • Web Apps, Cloud Services y máquinas virtuales: ¿cuándo usar cada uno? Como se muestra en este capítulo, WAWS es una de las tres maneras de ejecutar aplicaciones web en Azure. En este artículo se explican las diferencias entre las tres maneras y se proporcionan instrucciones para elegir la más adecuada para cada escenario. Al igual que Sitios web, Cloud Services es una característica de PaaS de Azure. Las máquinas virtuales son una característica de IaaS. Para ver una descripción de las diferencias entre PaaS e IaaS, consulte el capítulo Opciones de datos.

Videos: