Patrones cloud: patrón Retry

Que es un patrón en desarrollo de software

Antes de ver el patrón retry, vamos a empezar por el principio, vamos a ver que es un patrón. En el desarrollo de software, es de los más normal encontrarnos con problemas y/o retos que son recurrentes y que siempre están ahí. Retos que son agnósticos al lenguaje de programación que utilices, incluso si estas haciendo algo con alguna herramienta low code, te encontraras con estas casuísticas. ¿Cómo accedemos a la base de datos? ¿Cómo tratamos los errores? ¿Cómo muevo millones de registros en el menor tiempo posible?, etc. ¿no te ha pasado nunca que tienes un error, un problema, algo que no sabes como hacer, lo buscas en StackOverflow, y hay cientos de respuestas? Seguro que creías que eso solo te había pasado a ti, pero no, en software, todos nos encontramos con las mismas problemáticas.

Un patrón es un diseño que nos permite «atacar» a una casuística concreta, no es mas que una forma concreta de resolver un problema. Puedes profundizar mucho más en la definición desde la página de Wikipedia.

Los patrones cloud, por lo tanto, serán soluciones a problemas concretos que se dan en los entornos y desarrollos pensados para la nube. Recuerda, son soluciones agnosticas a la tecnologia que uses. Yo para mis ejemplos voy a usar Azure y C#, pero podrías aplicar el patrón a AWS y Java, por ejemplo, o picar el código en Python, es indiferente.

Sigue leyendo Patrones cloud: patrón Retry

Aventuras de un arquitecto: Por que decidí crear una capa de API Rest delante de un D365 Field Service

Hola, el otro día estaba leyendo el libro de Satya Nadella (Pulsa refrescar, lo recomiendo mucho, esta regalado en Amazon) en el que habla de cómo ha liderado el cambio tanto tecnológico como cultural en Microsoft. Una de las cosas que dice es que a él lo que le funciona es la empatía, el ponerse en el lugar de los otros. Así que he reflexionado un poco sobre el tema y he pensado que tal vez, desde la parte tecnológica, a veces no se explica lo suficiente el porqué de ciertas decisiones que tomamos y, por lo tanto, no se están entendiendo desde áreas no técnicas. A veces es por nuestro ego (hablo por mí, por supuesto), el orgullo, la falta de empatía o el hecho de que tal vez no se nos escucha como se debería desde las áreas no tecnológicas. Tal vez la suma de todo.

He pensado que tal vez, explicando algunos casos de decisiones que he tomado con más detalle, sin hablar en idioma puramente técnico. Por lo tanto, voy a iniciar una serie de entradas en el blog en las que hablare de algunas decisiones que he tomado y el por que de estas. Tal vez tenga suerte y consiga un debate interesante.

Sigue leyendo Aventuras de un arquitecto: Por que decidí crear una capa de API Rest delante de un D365 Field Service

El futuro de .Net y sus distintas versiones

Dentro de poco, en noviembre de este año, .Net 5 pasara a GA (general availability) y esto va a suponer un gran cambio en el ecosistema .Net, que no todo el mundo esta terminado de entender.

El otro día me topé con el siguiente Tweet que no tiene desperdicio:

Cómo el mismo menciona en la conversación creada, Microsoft no lo ha puesto fácil, así que me he puesto a revisar la documentación y roadmap para intentar resumir esto un poco.

Vamos a ver cada una de las versiones del framework y a intentar explicar esto un poco.

Ojo, no confundir los frameworks o implantaciones de .Net con los lenguajes (que alguna vez me lo he encontrado). C# es el lenguaje y .Net Core es el framework (por poner un ejemplo).

Sigue leyendo El futuro de .Net y sus distintas versiones

Como desplegar un Azure App Service sin tiempos de caída

Es muy probable que si estamos realizando y desplegando una API o una web usando App Services, necesitemos que nuestro producto este siempre on-line, sin dejar de dar servicio en ningún momento durante el proceso de despliegue. También es posible que quieras probar manualmente que todo funciona correctamente, pero sin que esto afecte a los usuarios en producción. O simplemente te puede interesar realizar pruebas A/B y redirigir parte del trafico entrante a distintos servicios. Para ello, Azure App Service ofrece los Staging Slots.

Hemos de tener en cuenta que esta característica no esta disponible en todos los niveles del servicio, por lo que en los niveles gratuitos, compartidos y el básico no podrás utilizarlo. También es algo normal, ya que es una característica útil en entornos productivos.

Listado de las características incluidas en el app service, entre ellas se encuentra staging slot, en este caso permite hasta cinco slots

Vamos a ver como crear y configurar un App Service que no deje de dar servicio durante un despliegue.

Sigue leyendo Como desplegar un Azure App Service sin tiempos de caída

Como preparar la certificación Azure Solutions Architect Expert

Escudo de la certificación Azure Solutions Architect Expert

Recientemente me he certificado como Microsoft Certified: Azure Solutions Architect Expert y me gustaría contar por aquí como ha sido la experiencia y que recursos he utilizado para formarme, tal vez a alguien le ayude en algo.

Esta certificación consta de dos exámenes: Az-300 y Az-301. Puedes hacer el Az-302 como examen de transición si ya tenias el 70-535 (han cambiado esto, si no me equivoco en enero de este año). Veamos pues cada uno de estos exámenes por separado.

Sigue leyendo Como preparar la certificación Azure Solutions Architect Expert

Despliegue continuo en Azure con plantillas ARM

Las plantillas ARM (Azure Resource Manager) nos permiten parametrizar y automatizar la creación y despliegue de toda la infraestructura Azure necesaria en un proyecto (la web, el service plan, las bases de datos, etc…) permitiendo así la creación de nuevos entornos exactamente iguales en cuestión de minutos y sin esfuerzo. Además, como por defecto el despliegue es incremental, si modificamos algún elemento de la ecuación este se actualizará sin afectar al resto.

Vamos a ver como crear una plantilla ARM y como integrarla en el proceso de despliegue.

Sigue leyendo Despliegue continuo en Azure con plantillas ARM

Trabajando con Azure Tables y Storage Emulator.

Siguiendo con el tema de los microservicios que inicie en mi primera entrada del blog, voy a hablar del almacenamiento de los datos cuando trabajamos usando este tipo de arquitectura. No tendría mucho sentido que diseñásemos una arquitectura orientada a que sea muy escalable y muy independiente entre sus distintos módulos, para que luego la capa de almacenamiento de los datos nos limite precisamente en estos aspectos. Por eso, cuando trabajamos con microservicios una buena estrategia es crear una base de datos por servicio  (al fin y al cabo, un microservicio es un proyecto entero en si mismo) en vez de una única compartida. De lo contrario, estaríamos creando cuello de botella y acoplamiento entre los servicios, que es precisamente lo que queremos evitar.

Sigue leyendo Trabajando con Azure Tables y Storage Emulator.