Siguiendo con recursos de formación gratuitos en Udemy encontramos un gran grupo de ellos tanto para iniciarse desde cero en Azure como algunos para preparar alguna certificacion oficial.
La lista de cursos y trainings están en ingles y son gratuitos disponibles en Udemy:
El último artículo para finalizar el año que quiero compartir son una serie de prácticas de laboratorios de Azure y Microsoft 365 para aprender paso a paso algunas tareas comunes que se realizan en Azure y que también son útiles para los exámenes de certificación como por ejemplo AZ-104 Azure Administrator.
Los laboratorios o trainings están en ingles y son guiados:
Hoy quiero compartir un par de videos muy interesantes para conocer como diseñar soluciones de Azure mediante Landing Zones y trabajar de forma correcta con buenas prácticas en la plataforma de Azure.
¿Que es una Landing Zone?
El concepto de Landing Zone esta definido dentro del marco de Azure en lo se conoce como CAF (Cloud Adoptation Framework) y nos indica los pilares básicos necesarios para diseñar correctamente.
La definición de Microsoft es bastante buena y nos dice: «Una zona de aterrizaje de Azure es la salida de un entorno de Azure con varias suscripciones que tiene en cuenta la escala, seguridad, gobernanza, redes e identidad. Una zona de aterrizaje de Azure permite la migración, modernización e innovación de aplicaciones a escala empresarial en Azure.»
Como diagramas de referencia para landing zones seguro que muchos de vosotros conoceis algunos de los que existen dentro del framework CAF tanto para arquitecturas Enterprise o como otras más pequeñas:
En este articulo, voy a publicar una recopilación de enlaces que pueden ser utiles para escenarios de migracion de bases de datos a Azure.
Como sabeis, Azure dispone de Azure Database Migration Service para hacer un evaluación y herramientas que podemos utilizar para llevar nuestros datos a la nube según cada tipo de base de datos a migrar como MariaDB, MySQL, SQL Server, Mongo, Oracle y otras.
En general, el proceso de migración de base de datos consiste en las siguientes fases:
Analisis de requisitos previos: conectividad, usuarios, permisos, versiones soportadas, etc.
Pre Migración: Evaluar la base de datos a migrar mediante algún asistente y haciendo inspección manual que nos indica cada guia según la base de datos.
Realizar Migracion: Si todo es correcto y no hay discrepancias o problemas detectados durante la evaluación previa se realiza la migración con la herramienta adecuda para cada base de datos.
Post Migración: Validar que todos los son correctos, si tenemos test ejecutarlos para asegurar que los datos se han volcado correctamente. Importante tambien validar el SKU, DTU,etc. de la base de datos en Azure para detectar problemas de rendimiento en funcion de la capa de precios seleccionada.
Herramientas: En la documentacion de Azure encontraremos una lista de tooling, pdf, excel, herramientas de comparación de esquemas y datos, otros «assets» para ayudarnos en los procesos de migración que recomienda Microsoft como, por ejemplo: Azure Data Studio.
Lo bueno de tener la lista de enlaces es que nos ahorra tiempo de busqueda a la hora de encontrar todos los pasos y procesos que recomienda Microsoft para cada tipo de base de datos que os comparto aqui.
El articulo de hoy es una recopilación de enlaces que suelo utilizar cuando tengo que montar temas relacionados con practicas y procesos DevOps en diferentes empresas.
Azure Architecture Center es una web donde encontraremos de forma centralizada guías, procedimientos recomendados, buenas prácticas y patrones para diseño de soluciones arquitectónicas en Microsoft Azure para todo tipo de aplicaciones.
Hay varias arquitecturas y soluciones de ejemplo relacionadas con DevOps que os pueden servir de guia o aceleradores para implementar proyectos sin tener que partir de cero, os comparto la lista:
Esta semana realizando unas actividades con Azure DataFactory hemos encontrado un error a la hora de procesar una pipeline para la carga y movimiento de datos entre cuentas storage y bases de datos.
El error que aparecía era: «ErrorMessage=The expression limit exceeded: maximum ‘8192’ and actual ‘8280’, al principio nos despisto un poco, pero después de investigarlo os comparto el origen del problema y como solucionarlo.
Azure subscription y Data Factory limites
Como sabéis, los recursos en Azure están limitados por Microsoft para cada suscripción y evitar afectar al rendimiento de los datacenters distribuidos globalmente, por ello, existen limites para cada servicio contratado.
Lo cierto, es que muchas veces no encontramos a la primera en la documentación el detalle del error o incluso el portal de Azure no informa adecuadamente del problema para depurarlo.
Afortunadamente, Microsoft nos ofrece una pagina bastante extensa donde encontrar y consultar toda la información referente a los limites de servicios que nos sirve de ayuda para estos temas.
Azure Data Factory V2 limits
En el caso de Azure DataFactory V2 tenemos todas estas limitaciones (copia del original) y podéis encontrar en la lista «Characters per expression = 8192″
Resource
Default limit
Maximum limit
Total number of entities, such as pipelines, data sets, triggers, linked services, Private Endpoints, and integration runtimes, within a data factory
Concurrent pipeline runs per data factory that’s shared among all pipelines in the factory
10,000
10,000
Concurrent External activity runs per subscription per Azure Integration Runtime region External activities are managed on integration runtime but execute on linked services, including Databricks, stored procedure, Web, and others. This limit does not apply to Self-hosted IR.
3,000
3,000
Concurrent Pipeline activity runs per subscription per Azure Integration Runtime region Pipeline activities execute on integration runtime, including Lookup, GetMetadata, and Delete. This limit does not apply to Self-hosted IR.
1,000
1,000
Concurrent authoring operations per subscription per Azure Integration Runtime region Including test connection, browse folder list and table list, preview data. This limit does not apply to Self-hosted IR.
La solución en nuestro caso, por temas de timming, fue rediseñar la actividad en Datafactory para hacerla más pequeña y no llegar al limite establecido.
También tenéis la posibilidad de abrir un ticket a Microsoft para aumentar la cuota del limite, aunque no siempre es posible en todos los escenarios: New support request desde el Portal de Azure
A veces ocurre cuando instalamos Docker o creamos nuevos usuarios en tu equipo local que intentas abrir Docker Desktop en tu PC con Windows y aparece el error indicado en el titulo del artículo.
El problema es que Windows detecta que el usuarios no pertenece al grupo «docker-users» y para solucionarlo hay varias opciones que os comparto.
Arreglar desde Administracion de usuarios locales y grupos
Para hacer esto tenemos ser administradores del equipo local, abrimos «herramientas administrativas», nos vamos a «Usuarios y grupos», buscamos el «usuario» y simplemente lo asignamos al grupo «docker-users» en la pantalla de dialogo.
Una vez asignado Aceptamos y tenemos que volver a conectarnos con el usuario para que detecte los cambios del nuevo grupo.
Arreglar desde consola de comandos de nuestro Widnows
Al igual que antes, debemos ser administradores locales, abrimos nuestro «CMD» o «Powershell» en modo administrador y escribimos lo siguiente en la consola:
c:\> net localgroup docker-users «username» /ADD
Para aplicar los cambios hay que cerrar sesión y volver a entrar en Windows con el usuario.
Empezamos el año 2022 con nuevos retos y cosas que aprender, seguramente muchos de vosotros ya estáis al tanto de la nueva versión de .NET6 oficial, en este articulo quiero compartir información de todas las novedades presentadas y recomendar que si estáis empezando nuevos desarrollos utilizar desde ya esta versión del framework porque a diferencia de .NET5, la versión .NET6 es LTS (Long Term Support).
En .NET6, utilizando Visual Studio 2022 o VisualStudio Code podemos crear soluciones modernas para Azure, AWS, GCP, Windows, Linux, Android, macOS, iOS, tvOS, watchOS, WebAssembly, Xbox, IoT entre otras, todo ello, integrado dentro de una única plataforma global de desarrollo de soluciones.
A nivel de plataforma de desarrollo soporta todo tipo de aplicaciones como en el anterior .NET5 donde encontramos la siguiente lista de soluciones:
Cloud Development
Web Development
Desktop Development
Mobile Development
Gaming Development
IoT and Devices Development
AI y Machine Learing Development
Angular, React, VUE y otras librerías JS soportadas
CoreFX soportado y extendido para compilación estática de .NET
Como novedades destacadas aquí os comparto una lista:
Production stress-tested
Supported for three years LTS release
Unified platform
Performance improved
C# 10
Hot Reload
Cloud diagnostics
JSON APIs have higher performance
Minimal APIs
Blazor integrated with existing JavaScript based apps.
WebAssembly AOT
Single-page apps
HTTP/3
File IO now has support for symbolic links
Security has been improved with support for OpenSSL 3
Single-file apps (extraction-free)
IL trimming is now more capable and effective
Source generators and analyzers
Source build enables organizations like Red Hat to build .NET from source
Este articulo es muy breve, se trata de compartir como registrar el MFA como usuario de forma facil, para ello necesitareis descargar la Aplicacion de Microsoft Authenticator en vuestro móvil Android o iOS y seguir los pasos a partir de este link: https://aka.ms/mfasetup
En este video oficial oculto de Microsoft encontrareis todos los pasos explicados :
El artículo de hoy pretende servir de ayuda para cuando estás desplegando aplicaciones de Angular 12/Node14 en AppService de Linux y aparezca el error siguiente:
Si lleváis poco tiempo trabajando con Azure, unas de las dudas más comunes cuando queremos crear y desplegar aplicaciones web es sobre qué plan Windows o Linux debemos elegir, incluso buscando por Google encontrareis las 2 opciones, lo cual crea confusión sobre cuál de ellos configurar para desplegar nuestra aplicación web.
Para que tengais contexto de todo esto, al principio los AppServices solo estaban disponibles con planes Windows sobre un IIS que administra directamente el servicio PaaS y Microsoft tuvo que implementar un módulo de Node para IIS para ejecutar aplicaciones que no fueran del ecosistema .NET, por eso, encontrareis artículos donde os explican que se debe configurar y desplegar un archivo web.config con el módulo de iisnode y definiendo rutas para servir la web.
La verdad es que este modelo de despliegue ya no es recomendado, si visitáis el repo de GitHub veréis que han pasado varios años y apenas se mantiene.
Creando Aplicación Angular HelloWorld
Primero, creamos una aplicación básica de Angular 12 (yo tengo instalada la versión de Node 14.17.6) con el comando: «ng new angular-hello», la compilamos con «ng build» y ejecutamos «ng serve» en local para comprobar que funciona:
Creando AppService de Linux
El siguiente paso, desde el Portal de Azure creamos un AppService de Linux con un plan Basico B1 indicando el Stack de Node y la version 14 (seguir cualquier tutorial MS) que nos termina dejando la siguiente configuración como podemos ver aquí:
Desplegando Angular en AppService de Linux
La parte del deploy, tenemos muchas opciones, yo utilizo VSCode con la extensión de Azure AppService y la opción «Deploy to WebApp…» para esta prueba, pero hay varias formas de realizarlo como podéis comprobar en esta lista de tutoriales que os comparto:
El objetivo al final es desplegar la carpeta dist de nuestra Angular HelloWorld en AppService de Linux y verificar que se produce el Application Error.
Solucionando el Application Error
Ya hemos realizado el deploy, validamos que aparece el error al ejecutar nuestra aplicación Angular HelloWorld.
Para solucionarlo os comparto 2 métodos que he tenido que utilizar en algunos proyectos, ya que, dependiendo de la versión de Angular y el Stack del AppService Node10, 12, 14, etc. (recordar que es un servicio PaaS y Microsoft lo va evolucionando con el tiempo) puede ser que a veces alguno de ellos no funcione y tengais que usar el otro.
Debemos indicar una de estas opciones en la configuración de Startup command:
pm2 serve /home/site/wwwroot –no-daemon –spa
npx serve -s
Os comparto captura para saber donde tenéis que introducirlo, no olvidaros de pulsar el boton «save» para que guarde los cambios 🙂
Si con esto no funciona, puede ser que existen otros problemas relacionados con vuestra build/deploy, y las opciones de configuracion del AppServices, tendréis que examinar Logs stream y revisar desde Appservice Kudu el despliegue realizado y entrar en la carpeta de wwwroot para validar que esta todo correcto,accediendo desde el Portal de Azure, url del navegador o por Bash:
Importante: En las opciones de configuración de Application Settings tenéis que indicar esta variable de entorno SCM_DO_BUILD_DURING_DEPLOYMENT = false, ya que, la build para generar vuestra carpeta dist la realizas de forma local o desde Azure Devops.