Categories
54cuatro

Administrando contenedores con GitOps

Como analizamos en notas anteriores acerca de #GitOps, es importante destacar que su adopción permite gestionar las configuraciones usando Git, y cobra vital importancia cuando hablamos de contenedores dado que se construyende forma declarativa, la configuración de las aplicaciones y sus entornos de implementación son realizadas de manera declarativas (yaml/json).

¿Porque es importante GitOps cuando hablamos de contenedores?

Recordemos que cuando desplegamos un #container basicamente pulleamos código. De esta manera, poder tener un control de versiones permite controlar los despliegues de los #contenedores, por ejemplo para recuperarse de cualquier implementación fallida.

Ademas por medio de herramientas es mucho mas transparente realizar cambios operativos, por ejemplo, solucionar un problema de producción mediante un ‘pull request’ en lugar de realizar cambios en todo el sistema productivo.

Las herramientas GitOps como ArgoCD o FluxCD permiten actuar como una fuente unica de verdad, garantizando los estados de los clusteres a partir del control de las configuraciones.

Deployment Pipeline

Usando CI/CD con GitOps

Estas herramientas estan monitoreando los repos con las configuraciones para detectar cambios o imágenes nuevas, de manera de desencadenar automáticamente implementaciones o cambios de configuraciones.

Estas herramientas actuan como CI/CD sin requerir de herramientas adicionales, y el despliegue se encuentra asegurado debido a que funcionan en un formato denominado “atomico y transaccional”, de manera que existen logs que garantizan que las transacciones se realicen correctamente o en caso de fallar no sean aplicados los cambios.

GitOps en la nube

El desarrollo de implementacionees en #kubernetes requiere el despliegue de aplicaciones, clusteres, entornos, etc; y los despliegues en la nube no son una excepción.

Por ese motivo, comprender como GitOps se integra con aplicaciones #cloud es importante para poder crear #pipelines CI/CD.

En el caso de #Azure, se propone la creación de una integración con la solucion #AzureDevOps.

Arquitectura de CI/CD con GitOps
  • El repositorio de aplicaciones contiene el código de la aplicación. Las plantillas de implementación de la aplicación residen en este repositorio en un formato genérico, como Helm o Kustomize. Cualquier cambio en este repo dispara el proceso de implementación.
  • El registro de contenedor contiene todas las imágenes propias y de terceros que se usan en los entornos de Kubernetes.
  • En este caso la integración esta realizada con #FluxCD, como servicio que se ejecuta en cada clúster y es responsable de mantener el estado deseado. Como mencionamos mas arriba, este servicio sondea el repositorio de GitOps en busca de cambios en su clúster y los aplica.
  • Dentro de este esquema propuesto por Microsoft incorporan #AzureArc, una herramienta que ofrece una administración simplificada para Windows, Linux, SQL Server y para este caso particular, los clústeres de Kubernetes. En este caso,  Azure Arc sirve para los diferentes entornos necesarios para la aplicación. Por ejemplo, un único clúster puede atender a un entorno de desarrollo y QA a través de espacios de nombres diferentes. 

Beneficios y Conclusión

Git es el estándar de facto de los sistemas de control de versiones y es una herramienta de desarrollo de software común para la mayoría de los desarrolladores y equipos de software. Esto facilita que los desarrolladores familiarizados con Git se conviertan en colaboradores multifuncionales y participen en GitOps. Ademas un sistema de control de versiones le permite a un equipo rastrear todas las modificaciones a la configuración de un sistema.

GitOps aporta transparencia y claridad a las necesidades de infraestructura de una organización en torno a un repositorio central ue resuelven de forma muy simple las implementaciones y los rollbacks en infraestructuras complicadas.


[popup_anything id=”2076″]
Categories
54cuatro

¿Y ahora MLOPS?

Quienes nos siguen dirán, ¿Otro nuevo Ops en familia? Y si, tenemos que contarles sobre #MLOPS.

Repasemos. #DevOps conjuga la unión de los equipos de Desarrollo con Operaciones. #DataOps va acerca de la integración de datos en pos de soluciones analíticas. #GitOps nos ayuda a con el despliegue continuo sobre plataformas de contenedores. Y ahora nos toca describir MLOPS.

¿Que es MLOPS?

El nombre viene de la conjugación de Machine Learning y Operaciones. Y su filosofía gira en torno a lo mismo que sus familiares *Ops, la de generar un espacio colaborativo, en este caso entre Científicos de Datos y Operaciones. Es importante destacar que hace un tiempo se puso de moda el termino #AIOPS, pero esta mas orientado a una implementación de Inteligencia Artificial a las operaciones de TI, de manera que podria ser confundible con MLOPS.

Empecemos a descubrir MLOPS.

MLOps Principles

¿Que soluciona MLOPS?

MLOps es un descendiente directo de DevOps, y continuando con el éxito busca resolver la integración de los equipos de operaciones (en este caso quienes operan los datos) con aquellos que requieren de esa data para generar informacion de valor.

MLOps incorpora al juego a los científicos de datos, quienes requieren obtener conjuntos de datos de manera automatizada desde donde poder desarrollar sus modelos analíticos.

¿MLOPS requiere de un Pipeline?

Correcto, MLOPS tiene su propio concepto de Pipeline, solo que el CI/CD, esta orientado a integraciones de datos, y junto con ello, capacidades de gobernanza, transparencia y protección de la informacion.

  • En CI ademas de probar y validar código y componentes, se deben validar datos, esquemas y modelos.
  • En CD ademas de desplegar un paquete, debe implementar todo un servicio de manera automática.

En resumidas fases podriamos mencionar que MLOPS requiere de 4 pasos fundamentales:

  • Ingestar datos hacia un almacenamiento.
  • Procesar los datos almacenados.
  • Entregar esos datos para ser entrenados dentro de modelos de #MachineLearning.
  • Entregar el output del modelo, dependiendo el caso de negocio requerido.
Gartner on ML pipeline
Esquema MLOPS propuesto por Gartner

¿Como comienzo mi camino hacia MLOPS?

Es importante destacar que la comunidad que impulsa MLOPS crece dia a dia. Y ese crecimiento lleva a tener mas opciones que simplifican la adopción de MLOPS. Tanto #AWS, #GCP, #Azure, #IBM y otros proveedores tienen su propio stack tecnológico para hacer frente a una implementación de MLOPS, y como todo, no existe un método único, pero si buenas practicas recomendadas a seguir.

Para empezar, debemos crear una cultura de automatización.

El objetivo de MLOps es automatizar los pasos completos del flujo de trabajo de ML sin intervención manual. A partir de ello debemos dividir las tareas en fases que al final de la historia se ejecuten como un pipeline. Estas tareas son:

  1. Adquirir los datos desde las fuentes que identifiquemos. Y dentro de esta fase de adquisición vamos a Catalogar los Datos, Ingestarlos a nuestro almacenamiento, Procesarlos para generar nuestra data correcta, y finalmente Entregarlos para su consumo.
  2. Desarrollar los modelos. En esta fase (quizás la mas importante) un científico de datos generara interacciones con distintos modelos analíticos, validando la data recibida, e identificando la performance de los análisis. En caso de que la data recibida no sea suficiente o de la calidad esperada, el pipeline debe ser reajustado en el paso 1. Pero si los modelos tienen buenos rendimientos se pasara a la siguiente fase.
  3. Despliegue de los modelos. Como mencionamos anteriormente, si un modelo tiene buenos rendimientos y sus outputs son confiables, esta listo para ser pasado a producción. Tener un modelo productivo permite integrarlo a nuestro software, dejar una API para consultas, alimentar un sistema, etc. Pero atención, el modelo requiere de cuidados, y es por eso que existe una ultima etapa.
  4. Monitoreo de modelos. Como vamos a tener corriendo todo de forma automatizada, es importante monitorear como es la performance de los modelos. Cualquier desvio en la cantidad y/o calidad de los datos que se reciben pueden alterar el funcionamiento de nuestro desarrollo. Y es por eso que en un modelo MLOPS, vamos a determinar un control para conseguir que nuestro pipeline siempre asegura la entrega de información de valor para el negocio.

Conclusión final

Para ejecutar un proyecto exitoso basado en ciencia de datos es imprescindible implementar MLOps y para ello se debe llevar a cabo una orquestación de las herramientas tecnológicas con las habilidades para integrarlas.

Consultas?

[popup_anything id=”2076″]
Categories
54cuatro

DevOps, DataOps… ¿Y ahora? GitOps

Ya hemos hablado de DevOps, de DataOps, y con el correr del tiempo se incorporan nuevos *Ops.

Mas adelante vamos a escribir de #MLOps, pero ahora vamos a ver de que se trata #GitOps.

¿De donde sale GitOps?

Weaveworks on Twitter: "Great article on #GitOps by @wbiller: "GitOps –  Continuous Deployment für Kubernetes". #CICD #kubernetes #k8s  https://t.co/nUi05zj9DR… https://t.co/PH2fn1qZmc"

GitOps surge principalmente de la necesidad de administración de clústeres de Kubernetes y la entrega de aplicaciones. Para esto es necesario usar #Git, la herramienta numero 1 de #desarrollo. GitOps, se basada en usar Git como única fuente de verdad para aplicaciones e infraestructura declarativa, de esta manera, las herramientas de #GitOps como #ArgoCD (la cual pueden ver como funciona en este post) puede alertar sobre cualquier diferencia existente entre Git y lo que está configurado en K8s, y si hay una diferencia, los reconciliadores de Kubernetes actualizan o revierten automáticamente la configuración. El objetivo por cierto es acelerar y simplificar las implementaciones de aplicaciones como las tareas de operaciones en Kubernetes.

¿GitOps es un reemplazo de DevOps?

Nos suelen hacer esta pregunta cuando hablamos de DevOps. Y la respuesta es: NO!

DevOps es una practica que tiene en cuenta factores culturales, de procesos y de tecnología. En DevOps, la cultura es parte fundamental para asegurarse de que las personas se alineen y trabajen de forma fluida. Pero GitOps incluye aquellas mejores prácticas que unifican la implementación, la gestión y la supervisión de aplicaciones, y la administración de clústeres de #containers.

GitOps por tanto, es un complemento de DevOps, con mayor orientación al desarrollo Cloud Native, Container First, o Serverless.

Además del repositorio de codigo, GitOps hace uso de herramientas de IaC (infrastructure as code) con el fin de administrar los despliegues de infraestructura con un control de versionado de la misma. Herramientas como #Puppet, #Ansible o #Terraform, permiten desplegar servidores y orquestar su implementación, pero el crecimiento exponencial del uso de contenedores junto al despliegue de las aplicaciones que corren sobre ellos potenció la necesidad de contar con herramientas que además de la infra puedan orquestar el despliegue aplicativo.

De esta manera, “recetas” de despliegue de infraestructura pueden ser respaldadas en Git para que sus archivos de configuración puedan ser “mergeados” con flujos de trabajo GitOps. Esto genera una super receta que al ejecutarse permitirá desplegar un servidor junto con su aplicación, con un control exacto de versiones.

¿Cuál son sus beneficios?

  • El principal es el de simplificar las administraciones de las implementaciones. La configuración de las aplicaciones y sus entornos de implementación son realizadas de manera declarativas (yaml/json).
  • Existe un control de versiones tanto de la infra como de las apps. Cualquier desviación de la configuración de versión es detectada y corregida de inmediato.
  • Todos los despliegues permiten una rápida vuelta atrás, además de dejar un registro de auditoria de sus ejecuciones.
  • Las implementaciones de aplicaciones son rápidas y confiables.

[popup_anything id=”2076″]