NET-Baires: Jornada de Arquitectura 06/2019 – Azure App Service al rescate
El pasado 22 de Junio participé como colaborador de la Jornada de Arquitectura .NET organizada por NET-Baires, organización que formo parte como organizador. Durante la jornada tuvimos muchas experiencias positivas junto con varios desarrolladores, donde pudimos ver los siguientes temas:
- Patrones de Desarrollo de Software.
- Experiencias de Clean Code & Refactoring.
- Experiencias de TDD.
En esta publicación te voy a contar cómo podemos aprovechar Microsoft Azure para que vos, que sos desarrollador de Software, tengas ambientes para poner en práctica todo lo aprendido en este jornada, con .NET + C# ó el Framework / Lenguaje que prefieras.
Resumen del Meetup
La jornada buscó centrarse en un tema fundamental para todos los desarrolladores de soluciones de software: la Arquitectura del Software. Fueron 7 horas donde se llevaron a cabo 3 workshops de trabajo donde cada desarrollador tuvo la posibilidad de experimentar en equipo los desafíos propuestos por los speakers.
Un tema charlado desde mi parte con el público fue: ¿qué herramientas y cómo podemos, como desarrolladores, utilizar en Azure para poder llevar adelante ambientes de prueba y experiencias temporales con el mínimo esfuerzo de configuración?
Azure App Service al rescate
La primera respuesta, simple, que daba a las personas que charlaban conmigo fue: Azure App Service.
Azure App Service es un servicio PaaS (Platform-as-a-Service) basado en HTTP para alojar aplicaciones de tipo web, y también API REST y back-ends para dispositivos móviles. El código puede estar desarrollado en varios lenguajes y frameworks, a saber: NET, .NET Core, Java, Ruby, Node.js, PHP o Python.
Realmente subir una aplicación desde tu equipo local hacia Azure App Service es muy simple, y se puede hacer mediante métodos HTTP propios de Visual Studio (Web Publish) ó a través de métodos tradicionales como FTP.
Una vez subido el código, se pueden habilitar herramientas de debug para que desde tu IDE preferido puedas hacer un seguimiento desde el código como si estuvieses ejecutando la instancia localmente:
Azure App Service brinda espacios de procesamiento con Windows y Linux como sistema operativo base, sin tener que preocuparse sobre su mantenimiento. Entre las principales funcionalidades que trae este servicio, podemos destacar:
- Se puede escalar de 1 a 1000 instancias.
- Facturación por minuto. Simples de Administrar.
- Permite templates, extensiones, etc.
- Acceso a redes virtuales + backup + monitoreo.
Además, desde el punto de vista oprerativo, Azure App Service tiene las siguientes características que alivianan el trabajo de mantenimiento y configuración:
- Parcheo automático del OS.
- Seguridad Empresarial.
- Scale out / in automático.
- Balanceador incorporado.
- Soporta varios lenguajes y Plataformas.
- Facilita el Despliegue / Entrega continua.
- Tabajos en segundo plano con WebJobs.
Azure Dev/Test también está presente
A veces, por algún motivo, necesitamos contar con una infraestructura IaaS dado que nuestras aplicaciones podrían requerir retrocompatibilidad o tener configuraciones muy personalizadas que no es posible hacerlas en Azure App Service.
Cuando debemos acudir a IaaS (en la forma más simple, podríamos decir máquinas virtuales en una nube) el esfuerzo operativo en inicializarlas, configurarlas y dejarlas listas para publicar aplicaciones web es mucho mayor que en el caso de Azure App Service.
Durante la jornada de arquitectura varios desarrolladores me han hecho la siguienite pregunta: ¿qué alternativa tenemos? Bueno, es aquí donde Dev/Test Labs de Azure puede ayudar.
Azure DevTest Labs permite a los desarrolladores de software tener equipos virtuales cuya administración (e incluso recursos PaaS) pueden ser administrados sin esperar a las aprobaciones de un administrador. ¿Cómo es eso? ¿Dev/Test Labs no es solo para IaaS? La respuesta es no, también es para PaaS, si bien esta publicación no aborda dicho tema.
DevTest Labs te ayuda como desarrollador de software a crear laboratorios que consisten en bases o plantillas de Azure Resource Manager preconfiguradas por, por ejemplo, el equipo de Infraestructura. Estos laboratorios disponen ya de todas las herramientas necesarias y el software requerido (ya sea IIS pre configurado, complementos, extensiones, etc) que fueron preparadas como código en instancias previas. Esto hace que los entornos que un desarrollador necesita se generen en cuestión de minutos en lugar de horas o días. Y lo mejor: se pueden aplicar vencimientos a los laboratorios para que se autodestruyan, e inclusive cuotas para que un desarrollador o equipo no pueda superar la creación de un número máximo de máquinas o entornos. Esto sería: IaaS simplificado y potenciado.
¿Qué tipo de entornos se pueden generar? Se pueden generar ambientes con las versiones más recientes de las aplicaciones mediante las siguientes tareas:
- Aprovisionamiento rápido de entornos de Windows y Linux con artefactos y plantillas reutilizables. Esto se puede crear por única vez y luego queda para cualquier creación de laboratorio. Es probable que necesite asistencia del equipo de Infraestructura.
- Portal para cada desarrollador, con límites pre-establecidos y self-service.
- Escalamiento vertical para pruebas de carga mediante el aprovisionamiento de varios agentes de prueba, y creación de entornos previamente aprovisionados con fines de capacitación y demostración.
Aquí te dejo un video de una charla que di en Uruguay con ejemplos de Azure Dev/Test Labs:
Momentos del Evento
Aquí dejo plasmado varios momentos del evento junto a los participantes y el equipo de Algeba:
Charla realizada por Fernando Sonego sobre Clean Code:
Foto final de cierre:
A todos los que participaron: ¡gracias por estar!