Páginas

sábado, 12 de abril de 2025

Curso de PL/SQL. Control de Flujo con IF-THEN-ELSE en PL/SQL

En el mundo de PL/SQL, una de las herramientas más importantes para controlar el flujo de nuestro programa es la estructura IF-THEN-ELSE. Esta  permite tomar decisiones dentro de nuestros bloques de código, ejecutando ciertas acciones cuando se cumple una condición y otras cuando no se cumple.

¿Qué es IF-THEN-ELSE?

La estructura IF-THEN-ELSE se utiliza para ejecutar diferentes bloques de código dependiendo del resultado de una condición lógica. Esta estructura es muy similar a la de otros lenguajes de programación, pero se adapta específicamente a las reglas de PL/SQL.

La sintaxis básica es la siguiente:

IF condición THEN

    -- Código a ejecutar si la condición es verdadera

ELSE

    -- Código a ejecutar si la condición es falsa

END IF;

Para hacer el código aún más flexible, PL/SQL también nos ofrece la opción de usar ELSIF si tenemos múltiples condiciones. Esto permite evaluar varias posibilidades de manera ordenada.

Control de Flujo con IF-THEN-ELSE en PL/SQL


Ejemplo Básico de IF-THEN-ELSE

Imaginemos que tenemos una variable que almacena el salario de un empleado, y queremos imprimir un mensaje basado en el valor del salario. El siguiente ejemplo muestra cómo podríamos hacerlo:

DECLARE

    salario NUMBER := 4500;

BEGIN

    IF salario > 5000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es alto.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El salario es moderado o bajo.');

    END IF;

END;

En este ejemplo:

  • Si el salario es mayor que 5000, se mostrará el mensaje: "El salario es alto."
  • De lo contrario, se mostrará el mensaje: "El salario es moderado o bajo."

Utilizando ELSIF para Múltiples Condiciones

Si necesitamos evaluar más de dos situaciones, podemos utilizar ELSIF. Imagina que quieres clasificar los salarios en diferentes categorías:

DECLARE

    salario NUMBER := 3500;

BEGIN

    IF salario > 7000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es muy alto.');

    ELSIF salario BETWEEN 5000 AND 7000 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es alto.');

    ELSIF salario BETWEEN 3000 AND 4999 THEN

        DBMS_OUTPUT.PUT_LINE('El salario es moderado.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El salario es bajo.');

    END IF;

END;

Aquí hemos introducido múltiples condiciones:

  1. Si el salario es mayor que 7000, mostramos "El salario es muy alto."
  2. Si está entre 5000 y 7000, mostramos "El salario es alto."
  3. Si está entre 3000 y 4999, mostramos "El salario es moderado."
  4. Si no cumple ninguna de las anteriores, mostramos "El salario es bajo."

Ventajas de IF-THEN-ELSE en PL/SQL

  • Claridad: Permite tomar decisiones en el código de una manera lógica y fácil de entender.
  • Flexibilidad: Podemos encadenar múltiples condiciones con ELSIF, lo cual es ideal para manejar varios casos específicos.
  • Control del flujo: Ayuda a controlar qué se ejecuta y cuándo, en función de las condiciones dadas.

Ejemplo con Variables de Base de Datos

Podemos hacer un ejemplo un poco más avanzado usando datos que provienen de una tabla. Supongamos que tenemos una tabla llamada empleados y queremos clasificar a los empleados según sus años de antigüedad.

DECLARE

    v_antiguedad NUMBER;

BEGIN

    -- Supongamos que estamos seleccionando a un empleado con ID = 101

    SELECT antiguedad INTO v_antiguedad FROM empleados WHERE empleado_id = 101;

   

    IF v_antiguedad > 10 THEN

        DBMS_OUTPUT.PUT_LINE('El empleado tiene alta antigüedad.');

    ELSIF v_antiguedad BETWEEN 5 AND 10 THEN

        DBMS_OUTPUT.PUT_LINE('El empleado tiene antigüedad moderada.');

    ELSE

        DBMS_OUTPUT.PUT_LINE('El empleado es relativamente nuevo.');

    END IF;

END;

En este ejemplo, estamos consultando la antigüedad de un empleado y mostrando un mensaje basado en la cantidad de años que ha trabajado en la empresa. El uso de IF-THEN-ELSE nos permite decidir qué mensaje mostrar dependiendo del valor de v_antiguedad.

Conclusión

La estructura IF-THEN-ELSE en PL/SQL es fundamental para controlar la lógica y el flujo de nuestros programas. Nos permite tomar decisiones y actuar en función de los datos que tenemos disponibles. Ya sea que estemos trabajando con simples valores de variables o con datos provenientes de la base de datos, esta herramienta es esencial para escribir código eficiente y efectivo.

sábado, 5 de abril de 2025

¿Son las nuevas IA realmente inteligentes?

Un problema de Bongard es un tipo de rompecabezas inventado por el informático soviético Mijaíl Bongard (1924-1971), probablemente a mediados de la década de 1960. Se publicó en su libro de 1967 sobre reconocimiento de patrones. El objetivo es identificar las diferencias entre ambos lados. En la introducción del libro (que trata diversos temas, incluidos los perceptrones), Bongard atribuye las ideas a un grupo que incluye a M. N. Vaintsvaig, V. V. Maksimov y M. S. Smirnov.

La idea de un problema de Bongard es presentar dos conjuntos de diagramas relativamente simples, por ejemplo, A y B. Todos los diagramas del conjunto A tienen un factor o atributo común, ausente en todos los diagramas del conjunto B. El problema consiste en encontrar o formular convincentemente dicho factor común. Los problemas se popularizaron tras su aparición en el libro de 1979 «Gödel, Escher, Bach», de Douglas Hofstadter, autor de problemas de Bongard. Según Hofstadter, «la habilidad para resolver problemas de Bongard reside en la esencia de la inteligencia pura, si es que existe tal cosa».

Pues bien , con la llegada de las nuevas inteligencias artificiales me propuse preguntar a dos de ellas, ChatGPT de Open AI y Gemini de Google, por los problemas de Bongard, para testear si realmente son tan inteligentes como dicen, y la verdad es que el resultado fue sorprendente en algunos casos. 

He aquí el primer problema de Bongard que le propuse, el Nº 51.

Problema de Bongard 51




 

Problema de Bongard 51 ChatGPT


Respuesta de ChatGPT (En azul)

Este es un problema de Bongard, que consiste en identificar la regla que distingue los ejemplos de la parte izquierda de los de la derecha.

Análisis del patrón

1. Observando la columna de la izquierda:

o Cada cuadro tiene puntos distribuidos de cierta manera.

o En todos los casos, parece haber un grupo de puntos formando un patrón específico.

2. Observando la columna de la derecha:

o También hay puntos distribuidos, pero con una diferencia.

o Los puntos parecen estar más dispersos o sin formar un patrón estructurado.

Posible regla

Los cuadros de la izquierda tienen puntos que forman una figura reconocible o están agrupados, mientras que los de la derecha tienen puntos dispersos sin formar un patrón claro.

Parece que la clave está en la distribución y agrupación de los puntos. ¿Notas algún otro patrón?

En este caso nuestra IA ha acertado, no está mal. ¿es realmente inteligente, o ha sido entrenada con estos patrones y se los sabe?

Veamos el siguiente:

 

Problema de Bongard 47

Problema de Bongard 47 ChatGPT


Este es otro problema de Bongard, en el que hay que identificar la diferencia entre los cuadros de la izquierda y los de la derecha.

Análisis del patrón

1. Observando la columna izquierda:

o Los cuadros contienen triángulos dentro de círculos o círculos dentro de triángulos.

o Hay una interacción clara entre las formas.

2. Observando la columna derecha:

o Los cuadros tienen círculos y triángulos, pero no están uno dentro del otro.

o Las figuras están separadas o simplemente colocadas juntas.

Posible regla:

Los cuadros de la izquierda contienen figuras anidadas (un triángulo dentro de un círculo o viceversa), mientras que los de la derecha no tienen anidamiento, solo formas separadas.

¿Qué te parece esta hipótesis? 😊

Aquí, acierta de nuevo, pero desvaría, es incapaz de determinar que en la izquierda se cumple solo al patrón de triángulos dentro de círculos y en la derecha Círculos dentro de triángulos. Parece que mezcla ambas soluciones, esto contesta la pregunta anterior (no ha sido entrenado con los problemas de Bongard, al menos no se los sabe de memoria) lo cual nos da una idea de que realmente tiene cierto nivel de inteligencia. Acertó el problema N51, pero en este ha desvariado un poco aunque ha estado muy cerca de la solución.

Vamos al Nº 91 para mí el más “humano” de los problemas, creo que para un humano es el más fácil de los tres, mientras que ChatGPT falla estrepitosamente.

 

Problema de Bongard 91

Problema de Bongard 91 ChatGPT




Este es otro problema de Bongard, y nuevamente hay que encontrar la regla que separa los cuadros de la izquierda de los de la derecha.

Análisis del patrón

1. Observando la columna izquierda:

o Las figuras parecen tener líneas curvas o estructuras más complejas.

o Algunas formas tienen subdivisiones o elementos más detallados.

o Hay figuras con conexiones o elementos internos (como la línea con marcas transversales o el círculo con cortes).

2. Observando la columna derecha:

o Las formas son más simples y geométricas.

o Se componen de líneas rectas, triángulos o cuadrados sin subdivisiones.

Posible regla:

Las figuras de la izquierda tienen estructuras más elaboradas o detalles internos, mientras que las de la derecha son más simples y geométricas.

¿Qué opinas de esta hipótesis? ¿Ves algún otro detalle que pueda ayudar? 😊

Era mucho más sencillo, a la izquierda tenemos el concepto abstracto de número tres y la derecha el del número 4.

GTP: ¡Buena observación! En la columna izquierda, las figuras representan el concepto del número tres (como tres líneas, tres segmentos, tres elementos conectados), mientras que en la columna derecha representan el número cuatro (cuatro puntos, cuatro lados, cuatro subdivisiones).

Estos problemas de Bongard pueden ser engañosamente simples o profundamente abstractos. ¡Gracias por el desafío! ¿Te gustaría intentar otro? 😊

Aquí vemos que ChatGPT no fue capaz de encontrar una simple abstracción, se lió en complejidades y no vio lo mas sencillo y evidente (para un humano). 

ChatGPT es un buen modelo de IA, está muy avanzado y parece realmente inteligente, pero le queda aún recorrido para pasar nuestro “Test de Turing” de los problemas de Bongard.

Veamos ahora Gemini de Google.

Problema de Bongard 51 Gemini



GEMINI

¡Absolutamente! Los diagramas de Bongard son un tipo de rompecabezas visual que desafían a identificar la regla que distingue un conjunto de imágenes de otro.

Analizando el Problema 51:

Para resolver este problema, debemos encontrar la característica común que comparten todos los cuadros de un lado y que no está presente en el otro lado.

Observación Inicial:

Cantidad de círculos: Todos los cuadros tienen la misma cantidad de círculos.

Distribución de los círculos: La distribución de los círculos dentro de cada cuadro varía.

Hipótesis:

Después de analizar detenidamente los cuadros, una posible solución es que:

Un lado de los cuadros tiene un número impar de filas.

El otro lado de los cuadros tiene un número par de filas.

Verificación:

Al contar las filas en cada cuadro, podemos confirmar si esta hipótesis es correcta. Si la hipótesis es correcta, habremos encontrado la regla que distingue los dos conjuntos de cuadros.

Solución Tentativa:

Si esta hipótesis es correcta, la solución al problema de Bongard 51 sería que los cuadros de un lado tienen un número impar de filas, mientras que los cuadros del otro lado tienen un número par de filas.

Importante:

Visualización: Es fundamental visualizar y comparar cada cuadro individualmente para llegar a una conclusión precisa.

Eliminación de distractores: A veces, los diagramas de Bongard pueden incluir elementos distractores para dificultar la resolución. Es importante concentrarse en la característica principal que distingue los dos conjuntos.

¿Quieres intentar resolver otro problema de Bongard? O si tienes alguna otra pregunta sobre este tipo de rompecabezas, no dudes en preguntar.

Nota: Si puedes proporcionar una imagen más clara o una descripción más detallada de los cuadros, podría ayudarte a encontrar una solución más precisa.

¿Te gustaría que intentemos resolver otro problema de Bongard?

Alternativamente, si tienes alguna otra pregunta sobre este tipo de rompecabezas, no dudes en preguntar.

En este caso Gemini da una respuesta más elaborada que ChatGPT pero parece menos certero, veamos el siguiente.

Problema de Bongard 47 Gemini


 ¡Absolutamente! Vamos a analizar juntos el problema de Bongard número 47.

Observación Inicial:

A simple vista, vemos una mezcla de círculos y triángulos en cada cuadro. Algunos triángulos tienen un pequeño círculo dentro.

Hipótesis:

Después de una observación cuidadosa, propongo la siguiente hipótesis:

Un lado de los cuadros: Todos los triángulos tienen un círculo dentro.

El otro lado de los cuadros: Ningún triángulo tiene un círculo dentro.

Verificación:

Al examinar cada cuadro individualmente, podemos confirmar si esta hipótesis es correcta. Si todos los triángulos del lado izquierdo tienen un círculo dentro y ninguno de los del lado derecho lo tiene, entonces hemos encontrado la solución.

Posibles variaciones de la hipótesis:

Tamaño del círculo: Podría haber una diferencia en el tamaño relativo del círculo dentro del triángulo.

Posición del círculo: El círculo podría estar siempre en una posición específica dentro del triángulo (arriba, abajo, centro).

¿Qué te parece esta hipótesis? Si no es así, podemos explorar otras posibilidades.

Para una mejor evaluación, sería útil tener una imagen más clara y grande de los cuadros. Esto nos permitiría analizar detalles más finos y descartar posibles distractores.

Recuerda: Los problemas de Bongard a menudo requieren un pensamiento lateral y una observación detallada. ¡No te desanimes si no encuentras la solución de inmediato!

Aquí es bastante completo, además de la hipótesis principal, a la izquierda todos los cuadrados tienen un triángulo en su interior, nos dice que estemos atentos a otras hipótesis relacionadas con las posiciones o tamaños de las figuras, pero se olvida de comentar que como contraposición al lado izquierdo, en el derecho se ve el patrón inverso, los triángulos tienen cuadrados en su interior.

Vamos al tercer y último problema.

Problema de Bongard 91 Gemini


 

¡Absolutamente! Vamos a analizar juntos el problema de Bongard número 91.

Observación Inicial:

En esta ocasión, tenemos una variedad de formas geométricas simples y líneas. A diferencia de los problemas anteriores, aquí las figuras parecen tener una mayor complejidad en cuanto a la combinación de elementos y sus relaciones espaciales.

Hipótesis:

Después de una observación cuidadosa, propongo las siguientes hipótesis:

1. Presencia de curvas: Un lado podría tener figuras que incluyen curvas, mientras que el otro lado solo tiene líneas rectas.

2. Número de puntos de intersección: Podría haber una diferencia en el número de puntos donde las líneas se cruzan en cada lado.

3. Similitud a letras o números: Algunas figuras podrían parecerse a letras o números, y esta característica podría ser la clave para diferenciar los dos conjuntos.

4. Simetría: Podría existir una diferencia en la simetría de las figuras entre ambos lados.

Análisis más detallado:

Para confirmar o descartar estas hipótesis, es necesario analizar cada figura individualmente y buscar patrones comunes dentro de cada conjunto. Considera los siguientes aspectos:

Tipo de líneas: ¿Son rectas, curvas o una combinación de ambas?

Número de líneas: ¿Cuántas líneas hay en cada figura?

Conexiones entre líneas: ¿Cómo se conectan las líneas entre sí? ¿Hay puntos de intersección?

Forma general de la figura: ¿La figura tiene una forma definida (círculo, cuadrado, etc.) o es más abstracta?

Orientación de las líneas: ¿Las líneas están orientadas de manera similar o diferente?

Sugerencias:

Simplifica las figuras: Intenta descomponer cada figura en sus elementos básicos (líneas, curvas, puntos) para identificar patrones más fácilmente.

Busca similitudes y diferencias: Compara las figuras de un lado con las del otro lado para encontrar las características que las diferencian.

Elimina distractores: Concéntrate en los elementos clave de cada figura y evita distraerte con detalles menores.

¿Quieres intentar aplicar estas sugerencias y ver si encuentras la solución? Si necesitas más pistas, puedo ayudarte.

Recuerda: Los problemas de Bongard pueden ser desafiantes, así que no te desanimes si no encuentras la solución de inmediato. La práctica y la paciencia son clave para mejorar tus habilidades de resolución de problemas visuales.

¿Te gustaría que te ayude a encontrar la solución?

Yo: Era mucho más sencillo, a la izquierda tenemos el concepto abstracto de número tres y la derecha el del número 4.

Gemini: ¡Excelente observación! Has dado con la solución de manera muy simple y elegante. A menudo, los problemas de Bongard buscan patrones que a primera vista pueden parecer complejos, pero que en realidad se basan en conceptos muy básicos.

Tu solución es correcta:

Lado izquierdo: Todas las figuras están compuestas por tres elementos (líneas, puntos, etc.).

Lado derecho: Todas las figuras están compuestas por cuatro elementos.

Esta es una solución clara y concisa que explica perfectamente la diferencia entre ambos conjuntos de figuras. ¡Felicidades por haber resuelto este problema de Bongard!

A veces, la solución más sencilla es la correcta. Este problema nos enseña que a menudo nos complicamos demasiado al buscar patrones complejos cuando la respuesta puede estar en algo muy simple.

Como experimento de tipo Test de Turing no ha estado mal, en primer lugar a mi parecer las IA son bastante buenas, hacen comentarios muy completos y da la impresión de que no solo ven correctamente, sino que también piensan y manejan conceptos abstractos. Aunque a un nivel claramente inferior al de un ser humano. También hay que tener en cuenta el efecto “personificación”; el hecho de que una IA junte palabras, puede impresionarnos y dar la sensación de que piensa realmente, cuando en realidad no está haciendo más que cálculos estadísticos. De todas formas eso no las “deshumaniza” pues al fin y al cabo nuestras neuronas hacen exactamente lo mismo. 

Resulta curioso lo difícil que es "aprehender" un concepto abstracto sencillo (los números naturales) aun con una gran potencia de cálculo. Las IA comenzarán a alcanzar al ser humano cuando empiecen a computar en alto nivel, es decir en vez de sumar 2+2 = 4 a nivel de CPU, lo hagan a nivel de concepto abstracto de número natural (¡y están ya realmente cerca!)  lo sabremos el día que se equivoquen, y sumen 2+2 =5 y tal vez el día que se cansen y les entre sueño. 😀


sábado, 15 de marzo de 2025

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Vamos a recordar los componentes de la plataforma de automatización, junto con las ventajas de utilizar una plataforma frente a un sistema de scripts aislados para tareas de administración del sistema. Hay diferentes enfoques que podemos adoptar para automatizar nuestros sistemas. Uno de ellos es adoptar la plataforma de automatización. El segundo es optar por el script de automatización. Intentemos comprender la arquitectura centrándonos en los componentes de esta.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Hay cuatro capas importantes. La primera capa es la base que proporciona la infraestructura. Puede ser NSX, vSphere o también puede ser vSAN. La segunda capa tiene que ver con operaciones en las que podemos utilizar componentes como vRealize Log Insight o incluso vRealize Operations Manager. Hay que seleccionar componentes que puedan gestionar las operaciones de nuestra plataforma de automatización. Después necesitamos una plataforma de gestión en la nube, que pueda funcionar con la automatización del orquestador. vRealize proporciona componentes como vRealize Orchestrator y vRealize Automation para administrar nuestra plataforma en la nube. Y, por último, es necesario identificar escenarios que representen qué modelos de negocio se pueden automatizar. Y eso se puede hacer utilizando vRealize Business o vRealize Hyperic. Existen varias herramientas externas diferentes que se pueden utilizar para crear escenarios.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Ahora, debemos centrarnos en utilizar un flujo de trabajo de automatización. Puede haber una desviación respecto a nuestro flujo de trabajo de automatización. Estamos adoptando un flujo de trabajo de automatización que se ha implementado prácticamente en varios escenarios. Para empezar, primero debemos utilizar un formato de diseño validado proporcionado por un proveedor. Por ejemplo, podemos tomar la base de VMware Validated Design. Esto nos ayudará a clasificar primero el tipo de implementación. Ahora hay tres posibilidades diferentes de tipo de implementación. La primera es una región única, la segunda es una región dual y la tercera es una región cruzada que utiliza UDLR. Necesitamos entender que una sola región siempre se preparará para una región particular, digamos, la región Y, como se indica en la ilustración. Podemos utilizar estas regiones para realizar la implementación de varios escenarios que están presentes en una región en particular. Podemos completar la región Z. Cuando tenemos una región dual, tenemos que realizar todas las tareas de una sola región y luego necesitaremos preparar la región X. En resumen, estamos preparando dos regiones diferentes y luego estas implementarán los escenarios. Cuando vayamos a una región cruzada con UDLR, realizaremos un escenario con UDLR. No realizaremos un escenario preparando un escenario explícito para regiones específicas.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Ahora bien, ¿cuales son las ventajas de utilizar una plataforma de automatización? En primer lugar, la alta disponibilidad de los componentes de gestión porque están debidamente probados. Proporciona copia de seguridad y restauración simplificada de los componentes de administración, monitoreo y alertas configurables y configuración basada en UI de recuperación ante desastres de los componentes de administración.

 

Curso de DevOps: Automatización VIII. Componentes de una plataforma de automatización

Finalmente, necesitamos clasificar los beneficios de la plataforma de scripts. El primer beneficio es la compatibilidad con el ritmo del ciclo de desarrollo. Costo de mantenimiento más económico y proporciona automatización de escala incorporada. También proporciona la capacidad de ampliar el alcance de la automatización. Y, por último, proporciona una adopción mejorada con automatización de pruebas sin código donde, en el caso de un script, es necesario escribir código. Depende de un intérprete particular para interpretar el código. También es necesario probarlo aplicando varios tipos diferentes de pruebas.

 

sábado, 1 de marzo de 2025

Curso de SQL. Filtrar resultados usando HAVING

A diferencia de la cláusula WHERE, HAVING se puede utilizar con funciones agregadas. Una función agregada es una función donde se agrupan los valores de varias filas juntos como información sobre ciertos criterios para formar un valor único de significado más significativo o medición.

Las funciones agregadas comunes incluyen COUNT(), SUM(), MIN() y MAX().

Este ejemplo utiliza la tabla Coches de una base de datos de ejemplo.

SELECT IdCliente, COUNT(Id) AS [Numero de Coches] FROM Coches

GROUP BY IdCliente HAVING COUNT(Id) > 1

Esta consulta devolverá el ID de cliente y el número de coches de cualquier 
cliente que tenga más de uno. En este caso, hay dos clientes que tienen 
más de uno, el 1 y el 4, el cliente 1 tiene 2 coches y el cliente 4 tiene 3 coches.



Los resultados se verán así:
Id. de cliente Número de Coches

stomerId ProductId Quantity Price

1                   2

4                   3

También se puede utilizar HAVING para comprobar si hay clientes que hayan pedido dos productos determinados. Por ejemplo en este caso se quiere saber los clientes que han pedido el producto con Id = 2 e Id = 3.

SELECT IdCliente FROM Pedidos WHERE IdProducto in (2,3)

GROUP by IdCliente HAVING count(distinct IdProducto) = 2

La consulta selecciona solo registros con los IdProducto 2 y 3 y con la cláusula
 HAVING busca solo los clientes que hayan pedido ambos IdProducto  
y no solo uno.
Otra posibilidad sería

SELECT IdCliente FROM orders GROUP BY IdCliente HAVING SUM(CASE WHEN IdProducto = 2 THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN productID = 3 THEN 1 ELSE 0 END) > 0 

Esta consulta selecciona solo grupos que tengan al menos un registro con 
IdProducto =  2 y al menos uno con IdProducto = 3.

 

sábado, 15 de febrero de 2025

Curso de DevOps: Automatización VII. Atributos de los flujos de trabajo de automatización y DevOps

 La automatización es uno de los requisitos esenciales de la implementación de DevOps. Hay varias formas diferentes en las que podemos planificar el flujo de trabajo de automatización. Vamos a utilizar el marco de automatización API.

Curso de DevOps: Automatización VII. Atributos de los flujos de trabajo de automatización y DevOps

Hay tres unidades esenciales. Primero está el script de automatización, que puede contener archivos de características, datos de automatización o, a veces, repositorios de correo basura. Todo esto será utilizado por el marco de automatización API para automatizar la tarea. El marco de automatización API estará compuesto por un motor de ejecución de automatización, utilidades de automatización, utilidades de KPI para monitorear las tareas de automatización y ciertas utilidades comunes para integrar servicios externos al marco API existente. El resultado final serán informes y registros de automatización. Podemos utilizar varias herramientas diferentes en cada una de estas capas para asegurarnos de poder derivar un flujo de trabajo de automatización sólido para nuestro sistema existente utilizando marcos de automatización API.

Curso de DevOps: Automatización VII. Atributos de los flujos de trabajo de automatización y DevOps

El flujo de trabajo automatizado de DevOps también se basa en una canalización de componentes. La canalización de componentes comienza con la actividad de los desarrolladores de verificar la fuente. Una vez que se verifica la fuente y se compila, realizaremos pruebas de unidad y de sus componentes. En caso de que sea necesario revertir, revertiremos los cambios y una vez que estemos convencidos con el módulo probado, ensamblaremos los módulos. Cargaremos el módulo no controlado para su aprobación y finalmente, una vez aprobado, enviaremos una notificación. Las notificaciones pueden ser de dos tipos, puede ser una notificación de éxito o de error. Una vez que la carga de módulos no controlados se realice correctamente, el tipo de notificación será exitosa; de lo contrario, será una notificación de error.

Curso de DevOps: Automatización VII. Atributos de los flujos de trabajo de automatización y DevOps

Teniendo en cuenta el proceso de integración, comenzamos eligiendo la versión del componente. Una vez que hayamos seleccionado la versión del componente, debemos descargar todos los módulos dependientes. Después de descargar las dependencias, o módulos de los que depende nuestro componente, ensamblaremos y crearemos una unidad desplegable. Esas unidades desplegables se desplegarán utilizando varias estrategias de despliegue diferentes, como si se pudiera incrementar hasta la puesta en escena. Realizaremos una “prueba de humo” como resultado, podremos revertir la implementación y notificar la falla. Pero si la prueba  tiene éxito, comprobaremos el “sistema inmunológico”. Nuevamente, el resultado de la verificación, si no es satisfactorio, podemos revertir el despliegue, pero si tiene éxito, realizaremos la prueba de aceptación. Si la prueba de aceptación no tiene éxito, podemos revertir la implementación nuevamente. Pero si es así, si todo está bien, podemos retroceder la preparación, realizar una prueba de humo adecuada en la preparación, promocionar los módulos y luego desplegar la unidad. Y finalmente, una vez finalizada la implementación, notificar el éxito. Pero si la etapa de reversión no tiene éxito, notificaremos el error.

Curso de DevOps: Automatización VII. Atributos de los flujos de trabajo de automatización y DevOps

Finalmente, vemos el flujo de trabajo automatizado de DevOps, pero ahora desde la perspectiva de la implementación en producción. Planificaremos el incremento de implementación de lo que esté listo para la producción. Una vez que esté implementado, haremos una prueba y decidiremos si revertimos la implementación o no. Si seleccionamos la estrategia de implementación de reversión porque la prueba falle, debemos detectar una implementación incorrecta. Necesitamos notificar el fracaso. Pero sí, si pasa la prueba se realizará una prueba del sistema “inmunológico” y notificaremos el éxito.