Categories
54cuatro

Comparando plataformas de datos en la nube: Databricks vs Snowflake

La adopción de soluciones de datos en la nube ha estado en aumento en los últimos años y dos de las principales opciones son Databricks y Snowflake. Ambas ofrecen servicios en la nube, de hecho pueden ser instaladas tanto en AWS como en Azure. Pero cada una tiene sus propias fortalezas y debilidades. En este artículo, se comparan ambas plataformas en términos de su arquitectura, capacidad de procesamiento y herramientas de análisis.

Snowflake vs Databricks — Datagrom | Data Science Consulting

Ambas plataformas son muy eficientes en el procesamiento y análisis de datos a gran escala, pero tienen diferencias significativas en cuanto a su funcionalidad y enfoque. #Databricks se enfoca en el procesamiento de datos y el análisis de datos en tiempo real, mientras que #Snowflake se centra en la gestión de datos y el almacenamiento de datos en la nube. Ambas plataformas son muy utilizadas en la industria y son una buena opción para cualquier empresa que busque procesar y analizar grandes cantidades de datos.

In Snowflake vs. Databricks Feud, the Only Conclusion Is: DataOps Needs All  the Help It Can Get

Veamos algunos puntos particulares. Empecemos con:

Arquitectura

Databricks se basa en Apache Spark y tiene una arquitectura abierta y flexible que permite a los usuarios integrar diversas fuentes de datos y herramientas de análisis. También tiene integración nativa con Microsoft Azure y Amazon Web Services (AWS).

Snowflake utiliza un enfoque basado en la nube y se centra en el almacenamiento de datos. Tiene una arquitectura de tres capas y utiliza una base de datos columnar.

Capacidad de procesamiento

Databricks tiene la capacidad de procesar grandes volúmenes de datos y realizar tareas de procesamiento en paralelo en múltiples nodos. Además, su capacidad de procesamiento se puede escalar según sea necesario para manejar grandes cargas de trabajo.

Snowflake también puede procesar grandes cantidades de datos, pero se enfoca en la velocidad y la eficiencia. Además, su arquitectura basada en la nube permite a los usuarios escalar fácilmente el procesamiento según sea necesario.

Herramientas de análisis

Databricks tiene una variedad de herramientas de análisis, incluyendo librerías de ciencia de datos y herramientas de visualización. También tiene integración con herramientas de terceros, como Tableau y Power BI.

Snowflake se centra en el almacenamiento de datos y la consulta de datos. Tiene una interfaz de usuario sencilla que permite a los usuarios consultar los datos y crear informes.

Finalizando, nos llama mucho la atención que Snowflake y Databricks, dos empresas que inicialmente tenían objetivos muy diferentes, han estado compitiendo en un mercado cada vez más convergente. Snowflake se enfocó en equipos de BI mientras que Databricks se enfocó en equipos de ciencia de datos, pero ahora ambos están expandiéndose a los dominios del otro, creando una verdadera batalla por la “Plataforma de Datos en la Nube”. La propiedad de los datos es esencial en esta competencia, y ambas empresas comenzaron con sistemas de almacenamiento cerrados. Pero, para sorpresa de muchos, Databricks sorprendió a Snowflake al abrir partes de Delta Lake, lo que provocó que Snowflake siguiera el ejemplo adoptando Apache Iceberg. En respuesta, Databricks tomó medidas drásticas y donó todo Delta Lake a la Fundación Linux con el lanzamiento de Delta Lake 2.0, dejando en claro su compromiso con un estándar abierto para el almacenamiento de datos.

Ambas plataformas ofrecen soluciones de datos en la nube y tienen sus propias fortalezas y debilidades. Databricks es ideal para usuarios que requieren una plataforma de análisis de datos altamente personalizable, mientras que Snowflake es ideal para usuarios que necesitan una plataforma de almacenamiento de datos rápida y eficiente.

Alternativas a estas plataformas

Existen varias alternativas a Snowflake y Databricks en el mercado, dependiendo de las necesidades y requisitos de la empresa. Algunas de estas alternativas incluyen:

  • Almacenes de datos en la nube: otras opciones populares incluyen Amazon #Redshift, Google #BigQuery, Microsoft Azure #Synapse Analytics y #Oracle Autonomous Data Warehouse.
  • Plataformas de análisis unificado: hay varias opciones, como Google Cloud Dataproc, Apache Flink, Apache Beam y Apache Storm.
  • Plataformas de ciencia de datos: algunas opciones incluyen Google Cloud AI Platform, Microsoft Azure Machine Learning, IBM Watson Studio y Amazon SageMaker.

Cada una de estas opciones tiene sus propias ventajas y desventajas, y la elección dependerá de los requisitos específicos de la empresa. Es importante hacer una investigación exhaustiva y evaluar las diferentes opciones antes de tomar una decisión.

Si estás buscando alternativas a Snowflake y Databricks para la gestión de tus datos en la nube, te recomendamos considerar Redshift de #AWS y Synapse de #Azure. Ambas plataformas ofrecen soluciones de almacenamiento y procesamiento de datos escalables y seguras.

AWS se destaca por su proceso constante de innovación y la incorporación de nuevas funciones y aplicaciones a su ecosistema de datos. Con Redshift, los usuarios pueden almacenar y analizar grandes cantidades de datos utilizando herramientas de análisis de datos de código abierto, como #SQL y #Python. Además, Redshift es altamente escalable y puede manejar desde pequeñas cargas de trabajo hasta grandes conjuntos de datos.

Por otro lado, Synapse de Azure se distingue por su simplicidad y robustez. La plataforma ofrece una amplia gama de herramientas integradas para el procesamiento de datos, desde la ingestión hasta el análisis. Además, la adopción de tecnología de Azure es fácil y rápida, lo que permite a los usuarios obtener resultados inmediatos.

#BigQuery es una solución de almacenamiento y análisis de datos en la nube altamente escalable y eficiente que se ha vuelto muy popular entre los usuarios de #GCP. Ofrece una variedad de características avanzadas, como la capacidad de analizar datos en tiempo real y la integración con otras herramientas de Google, como #DataStudio y #TensorFlow.

Sin embargo, a nosotros no nos resulta efectiva la calidad de su soporte técnico. En comparación con AWS y Microsoft, el soporte proporcionado por Google aún tiene mucho por mejorar.

En resumen, tanto Redshift de AWS como Synapse de Azure son excelentes alternativas a considerar si estás buscando una plataforma de gestión de datos en la nube segura, escalable y eficiente.

Categories
54cuatro

Sea en la nube o localmente, comercial u open source, pero avance

Este post trata sobre la demora en la toma de decisiones y esta dedicado a directores y gerentes.Diferencia entre gerente y director de una empresa | OBS Business School

 

Muchas veces nos encontramos hablando con potenciales clientes que se encuentran analizando si implementar en la nube, on premise, una solución comercial o una solución open source.

Cuando se trata de elegir una plataforma para su negocio, hay muchas opciones disponibles. Una de las decisiones más importantes que deben tomar los usuarios es si elegir una plataforma cloud o una plataforma on premise. Ambas opciones tienen sus pros y sus contras, por lo que es importante considerarlos cuidadosamente antes de tomar una decisión.

Pero este analisis, no puede ser eterno. No siempre es posible tomar la decisión correcta, pero es importante recordar que es mejor tomar una decisión y actuar, incluso si resulta ser incorrecta, en lugar de no hacer nada en absoluto. Para eso estamos los proveedores, justamente para arrojar claridad, dar recomendaciones y poder plantear desafíos a las ideas establecidas e incluso presentar nuevas ideas.

No te cierres a nuevas ideas y perspectivas. Mantén una mente abierta y está dispuesto a considerar nuevas opciones y perspectivas antes de tomar una decisión.

Si usted está pensando en migrar a la #nube, todas las nubes populares tienen servicios similares. Algunas nubes tienen ventajas en algunos servicios, y otras en otros. Algunos tienen mejores costos en algunos servicios, y otras en otros.

Si usted opta por quedarse en su #datacenter puede usar #hyperV o #vmware, y ambas son soluciones valiosas. Quizás crea que no puede generar un #datalake en el on-premise, y esto es incorrecto. Cloudera es una solución que da soporte comercial a plataformas de código abierto.

Cloudera ofrece una amplia gama de productos y soluciones, desde su plataforma de análisis de #BigData #Cloudera Enterprise hasta herramientas de ciencia de datos y aprendizaje automático. Todos estos productos están diseñados para ser escalables, seguros y de fácil uso, y están respaldados por un equipo de soporte y desarrollo altamente capacitado.

Si esta dudando o demorando una decisión, piense en término de portabilidad

La portabilidad se refiere a la capacidad de un sistema o aplicación para ser ejecutado en diferentes entornos o plataformas sin necesidad de realizar cambios significativos en su código o configuración.

Siguiendo el ejemplo anterior. Supongamos que va a implementar un lago de datos, pero no esta seguro si hacerlo en #AWS para no generar un vendor lockin, construya una arquitectura que use componentes standard y que eso le permita el día que quiera irse a #Azure.

El vendor lock-in es una situación en la que un cliente o usuario está atrapado o “bloqueado” con un proveedor o vendedor específico debido a la interdependencia entre el producto o servicio que el proveedor ofrece y la infraestructura tecnológica del cliente. En este escenario, el cliente puede tener dificultades para cambiar de proveedor o dejar de utilizar el producto o servicio sin sufrir costos significativos o interrupciones en su operación diaria.

Si usted utiliza un servicio 100% de propiedad intelectual de un vendor, claramente puede tener ventajas asociadas en cuanto a su rapidez en la implementación, performance, simplicidad, etc. Pero el lado B, suele ser que cualquier solución compleja montada sobre sistemas de este tipo, quedan cautivas. Por eso, un arquitecto empresarial debe considerar que tan complejo sería mover un software, una aplicación, una plataforma, un conjunto de datos, o lo que fuere, de una nube a otra, incluso que tan complejo sería que la operación fuera #multicloud.

Evitar el vendor lockin es parte de una buena arquitectura. En lugar de depender de un solo proveedor de nube, el multicloud permite a las organizaciones elegir los servicios que mejor se adapten a sus necesidades específicas y utilizarlos en conjunto para obtener la mejor solución para su negocio. Planear una plataforma multicloud, es una práctica que recomendamos. Las funciones de un Director de proyectos según la guía del PMBOK 6ta  edición - La Oficina de Proyectos de Informática

La idea de este post, es incentivarlo a que de una manera u otra, capitalice la experiencia de partners, de arquitectos y técnicos que sabrán indicarle que decisión tomar, y que junto a un buen diseño de la arquitectura, su decisión estará segura porque siempre podrá moverse, evolucionar, cambiar y mejorar.

Categories
54cuatro

Comparativa entre herramientas de ETL

ETL es un acrónimo que significa Extracción, Transformación y Carga. Es un proceso utilizado en la gestión de datos para recopilar datos de diferentes fuentes, limpiarlo y transformarlo en un formato adecuado para su análisis y utilización en un sistema de información. Luego se carga en una base de datos o sistema de almacenamiento para su uso futuro. Es una técnica comúnmente utilizada en la integración de datos.

Existen herramientas open source, comerciales e incluso serverless provistas por cloud providers.
ETL (Extraction, Transformation & Load) – La Taberna del BI

¿Que herramienta de #ETL usar?

Talend es una plataforma de integración de datos que permite la conexión, la transformación y la integración de datos entre diferentes sistemas. Utiliza una interfaz gráfica de usuario para diseñar flujos de trabajo de integración de datos, lo que facilita la creación de tareas de integración de datos para usuarios sin experiencia en programación. Además, #Talend ofrece una amplia gama de componentes preconstruidos que se pueden utilizar para conectarse a diferentes fuentes de datos, como bases Talend Data Fabric - Opiniones, precios y características - Capterra Colombia 2023de datos, aplicaciones empresariales y servicios web. Estos componentes se pueden personalizar y combinar para adaptarse a las necesidades específicas de cada proyecto.

 

______________

Pentaho Data Integration (PDI) es una herramienta de integración de datos open-source que permite la conexión, la transformación y la integración de datos entre diferentes sistemas. Utiliza una interfaz gráfica de usuario para diseñar flujos de trabajo de integración de datos, conocida como Spoon, que facilita la creación de tareas de integración de datos para usuarios sin experiencia en programación.Qué es Pentaho Data Integration (PDI) y para qué sirve?

PDI tiene una amplia gama de componentes preconstruidos, llamados transformaciones y tareas, que se pueden utilizar para conectarse a diferentes fuentes de datos, como bases de datos, aplicaciones empresariales y servicios web. Estos componentes se pueden personalizar y combinar para adaptarse a las necesidades específicas de cada proyecto. También cuenta con herramientas para la limpieza y análisis de datos, así como para la generación de informes y la creación de dashboards.

PDI se utiliza en conjunto con el resto de herramientas de la suite Pentaho, como #Pentaho Report Designer y Pentaho Analyzer, para crear soluciones completas de Business Intelligence.

______________

Apache NiFi es una plataforma de flujo de datos open-source que permite la captura, flujo, transformación y distribución de datos a través de una interfaz gráfica de usuario fácil de usar. Es una herramienta altamente escalable y escalable que se puede utilizar para automatizar y optimizar los flujos de trabajo de datos en una variedad de entornos, desde pequeñas aplicaciones hasta implementaciones de gran escala.

Tus datos se cambian de casa? Apache NiFi te ayuda con la mudanza - Future Space S.A.

NiFi utiliza una arquitectura basada en flujos para organizar y controlar los datos, lo que permite a los usuarios crear flujos de trabajo de integración de datos mediante la arrastrado y soltado de componentes preconstruidos en una interfaz gráfica de usuario. Estos componentes, conocidos como procesadores, se pueden utilizar para realizar tareas como la captura de datos, la transformación de datos, la validación de datos y la distribución de datos a diferentes destinos.

#NiFi también cuenta con características avanzadas, como la capacidad de manejar y procesar datos en tiempo real, la seguridad y el control de acceso, y la monitorización y la gestión de flujos de trabajo. También tiene una integración con otras herramientas y tecnologías de big data, como Apache #Kafka, Apache #Storm y Apache #Hadoop.

Y que hay de los serverless, los que son ejecutados en las #cloud?

Azure Data Factory (ADF) es una plataforma de integración de datos en la nube de Microsoft que permite la conexión, la transformación y la integración de datos entre diferentes sistemas. Es un servicio en la nube que se ejecuta en Microsoft Azure y se utiliza para automatizar los flujos de trabajo de integración de datos.

ADF utiliza una interfaz gráfica de usuario para diseñar flujos de trabajo de integración de datos, llamados “pipelines”, que se componen de diferentes “actividades” que representan tareas específicas, como la copia de datos, la transformación y el procesamiento. Estas actividades se pueden utilizar para conectarse a diferentes fuentes de datos, como bases de datos, aplicaciones empresariales y servicios web, y para copiar y mover datos entre estos sistemas.

ADF también cuenta con herramientas para la automatización de tareas, como la planificación de trabajos y la generación de informes, y cuenta con integración con otras herramientas y tecnologías de Microsoft Azure, como #Azure Data Lake Storage, Azure SQL Data Warehouse y #PowerBI.

Ademas, ADF tiene la capacidad de escalar automáticamente para manejar grandes volúmenes de datos y también cuenta con una variedad de opciones de seguridad y cumplimiento.

______________

AWS Glue es una plataforma de integración de datos en la nube de Amazon Web Services (AWS) que permite la conexión, la transformación y la integración de datos entre diferentes sistemas. Es un servicio en la nube que se ejecuta en AWS y se utiliza para automatizar los flujos de trabajo de integración de datos.

AWS #Glue ofrece una interfaz gráfica de usuario para diseñar flujos de trabajo de integración de datos, llamados “jobs”, que se componen de diferentes “tareas” que representan tareas específicas, como la copia de datos, la transformación y el procesamiento. Estas tareas se pueden utilizar para conectarse a diferentes fuentes de datos, como bases de datos, aplicaciones empresariales y servicios web, y para copiar y mover datos entre estos sistemas.

AWS Glue también cuenta con herramientas para la automatización de tareas, como la planificación de trabajos y la generación de informes, y cuenta con integración con otras herramientas y tecnologías de AWS, como Amazon S3, Amazon Redshift y Amazon Athena.

Ademas, AWS Glue cuenta con un catálogo de metadatos, que permite a los usuarios registrar y gestionar información sobre sus datos, como estructura, relaciones y calidad de los datos. También tiene la capacidad de escalar automáticamente para manejar grandes volúmenes de datos y cuenta con opciones de seguridad y cumplimiento. Asimismo, AWS tiene otro servicio que se llama #DataPipeline.

AWS Data Pipeline es un servicio de #Amazon Web Services (#AWS) que permite automatizar la transferencia y la transformación de datos entre diferentes sistemas de almacenamiento y procesamiento de datos. Es un servicio en la nube que se ejecuta en AWS y se utiliza para crear flujos de trabajo de integración de datos y automatizar tareas relacionadas con la gestión de datos.

Con AWS Data Pipeline, los usuarios pueden crear flujos de trabajo de integración de datos mediante la definición de “tareas” y “relaciones” entre ellas. Cada tarea representa una actividad específica, como la copia de datos desde una fuente a un destino, la ejecución de una transformación o la ejecución de un script. Las relaciones entre las tareas definen el orden en que deben ejecutarse las tareas.

AWS Data Pipeline también cuenta con herramientas para la planificación automatizada de tareas, como la programación de trabajos y la generación de informes, y cuenta con integración con otras herramientas y tecnologías de AWS, como Amazon #S3, Amazon #RDS y Amazon EMR.

Ademas, AWS Data Pipeline tiene la capacidad de escalar automáticamente para manejar grandes volúmenes de datos y cuenta con opciones de seguridad y cumplimiento. También permite a los usuarios monitorear y supervisar el progreso de los flujos de trabajo y detectar y solucionar problemas de manera eficiente.

______________

Google Cloud Dataflow es una plataforma de procesamiento de datos en la nube de #Google Cloud Platform (#GCP) que permite la ejecución de tareas de procesamiento y transformación de datos a gran escala. Es un servicio en la nube que se ejecuta en GCP y se utiliza para crear flujos de trabajo de integración de datos y automatizar tareas relacionadas con la gestión de datos.

Con Cloud #Dataflow, los usuarios pueden crear flujos de trabajo de procesamiento de datos mediante la definición de “tareas” y “relaciones” entre ellas. Cada tarea representa una actividad específica, como la lectura de datos desde una fuente, la ejecución de una transformación, la escritura de datos en un destino. Las relaciones entre las tareas definen el orden en que deben ejecutarse las tareas.

Dataflow permite a los usuarios crear flujos de trabajo utilizando un lenguaje de programación #Java o #Python, y utiliza un modelo de programación de tuberías y filtros para procesar los datos. Ademas, Dataflow es escalable y maneja de manera automática la distribución y el balanceo de carga para procesar grandes volúmenes de datos.

Dataflow también cuenta con herramientas para la planificación automatizada de tareas, como la programación de trabajos y la generación de informes, y cuenta con integración con otras herramientas y tecnologías de GCP, como #BigQuery, Cloud Storage, Cloud Pub/Sub.

Esperamos que esta nota haya sido de interés, y si tienes dudas puedes ponerte en contacto con nosotros.

[popup_anything id=”2076″]

 

 

Categories
54cuatro

Manejar Synapse con Azure DevOps

Introducción

Synapse es una plataforma de #LakeHouse de #Azure. Permite armar un #datawarehouse, un #datalake e incluso correr scripts con desarrollos de #ML.

#AzureDevOps es un producto de Microsoft que proporciona funciones de control de versiones, informes, gestión de requisitos, gestión de proyectos, compilaciones automatizadas, pruebas y gestión de versiones.

Para la administración de los desarrollos que corren en la plataforma de #Synapse, es de vital importancia entender el enfoque CI/CD para un pipeline de data.

El enfoque sobre cómo manejar CI/CD con Azure Synapse difiere bastante de su enfoque de “desarrollo de software”. La única rama que puede usar para implementar su código es la rama de publicación (workspace_publish). Esta rama se creará/actualizará cuando presione publicar en su interfaz de usuario de Synapse, después de realizar cualquier cambio.

La rama de trabajo real, donde se integran todas las solicitudes de extracción para implementar nuevas funciones, es la rama de colaboración (rama principal). Esta es también la base para sus publicaciones automatizadas.

El pipeline CI

La construcción ya está prácticamente hecha, porque todo ya está preparado como una solución lista para la implementación. Esta es la razón por la que solo necesita empaquetar su código con fines de trazabilidad y reutilización.

El pipeline CD

Esta tarea también es bastante fácil, porque puede usar una tarea predefinida llamada “Implementación del espacio de trabajo de Synapse”. Aquí solo necesita insertar su Workspace de destino, autenticarse a través de Service Connection (Suscripción). Además, debe desactivar los disparadores para una compilación limpia, pero también hay una tarea previa a la compilación para usar en Azure DevOps llamada “toggle-triggers-dev”.

Azure Synapse Analytics Security, Governance, and CI / CD

CI/CD

Y ahora ambos juntos en una canalización yaml completamente funcional. El activador siempre se activa cuando se publica una nueva plantilla de Synapse en nuestra rama de publicación.

Categories
54cuatro

Herramientas para modelar Arquitecturas Empresariales

Quienes trabajamos como #EnterpriseArchitect sabemos de la necesidad de documentar lo que vamos creando. Necesitamos herramientas UML para poder bajar a detalle y crear un esquema visual de lo que luego se convertirá en un producto.

¿Qué es #UML?

Esquema de UML

UML es una técnica para la especificación sistemas en todas sus fases, un lenguaje para hacer modelos y es independiente de los métodos de análisis y diseño.

Nació en 1994 cubriendo los aspectos principales de todos los métodos de diseño antecesores y, precisamente, los padres de UML son Grady Booch, autor del método Booch; James Rumbaugh, autor del método OMT e Ivar Jacobson, autor de los métodos OOSE y Objectory.

¿Cuales son las herramientas de UML?

Existen algunas herramientas tradicionalmente usadas para este tipo de trabajos. Tradicionalmente el #Visio de #Microsoft es de las más referenciadas.

En la actualidad existen muchas nuevas herramientas, algunas web, algunas open source, que permiten realizar el modelo de Arquitecturas Aplicativas o de IT en general.

El gran auge de la #nube, creó un sinfín de nuevas herramientas de modelado, algunas específicas para cada nube, como el caso de Cloud Craft que permite crear modelos basados en tecnología #AWS, y que además permite conectarse a la calculadora de #Amazon para realizar el presupuesto de lo que está definiendo.

Visual cloud designer
Captura de Cloud Craft

Sin dudas es una herramienta súper potente. Siguiendo dentro de la misma familia, existen algunas como Cloud Skew o Hava que nos permiten realizar el diseño no solo para AWS sino también para #Azure o #GCP.

Modelando en la web

No podemos dejar pasar por alto herramientas de mucha utilidad como LucidChart o Draw.io (ahora renombrada como Diagrams.net), que no solo son de utilidad para Arquitectos, sino para generar todo tipo de gráficos anidados con cierta lógica como Flujos de Procesos u Organigramas, como para mencionar algunos ejemplos.

Nuestra preferida: Archimate

Nuestra preferida es sin dudas #Archimate. Es quizás la herramienta hecha por y para Arquitectos Empresariales o Enterprise Architects, bajo el estándar abierto propuesto por Open Group.

Archi
Captura de Archimate

Archimate es una herramienta #OpenSource, que puede ser usada en #Windows, #Linux y #Mac, y que puede ser descargada desde la web archimatetool.com. Permite a los usuarios de esta tool, crear modelos basados en frameworks de arquitectura como #TOGAF. Dentro de una misma aplicación se pueden crear flujos de negocios, modelos de planificación de tipo Mind Mapping, modelos de interrelación aplicativa, y hasta planificaciones basadas en #Agile.

Sin dudas es la elegida por nuestro equipo, y la que recomendamos para llevar a cabo las tareas de planificación inherentes a un arquitecto.

¿Y tu equipo, qué herramienta utiliza?


[popup_anything id=”2076″]
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

Desarrollando soluciones CV con Inteligencia Artificial en Azure

La visión por computadora, o #CV (Computer Vision) es un método exploratorio de imágenes por medio de la inteligencia artificial (#IA) que entrena a las computadoras para interpretar y comprender el mundo visual. Permite analizar fotos y/o vídeos con equipos tales como cámaras y que a partir de algoritmos de análisis pueden identificar y clasificar objetos que sirven para tareas tales como:

  • Reconocimiento de patrones/comportamientos
  • Procesamiento e interpretación de imágenes de video vigilancia
  • Análisis de imágenes multiespectrales
  • Modelado y reconstrucción 3D
  • Visión por computador en ciudades inteligentes para controles

¿Como puedo usar Azure para realizar desarrollos de Inteligencia Artificial?

#Microsoft ofrece servicios cognitivos a través de su plataforma #Azure por medio de su suite “Azure Cognitive Services“, desde donde se pueden analizar imágenes por medio de tecnología de CV, como también trabajar con Lenguaje y Voz.

Los servicios que se ofrecen tienen SDK y API disponibles. Para el caso puntual de esta nota, la parte de visión, actualmente cuenta con tres servicios:

  • Azure Computer Vision : para usar algoritmos de análisis de imágenes avanzados preexistentes.
  • Azure Custom Vision para crear, mejorar e implementar sus propios clasificadores de imágenes.
  • Rostro : para utilizar algoritmos faciales avanzados preexistentes para detectar y reconocer rostros humanos.

Casos Prácticos

El uso típico de las herramientas de CV se basan en enviar una imagen y obtener información detallada sobre las diversas características visuales (y atributos) que se encuentran en ella. Pero estos son algunos usos interesantes que se le puede dar a la visión por computadora:

  • Etiquetar características visuales: obtenga atributos que puedan servir como metadatos para la imagen.
  • Detectar objetos: observar imágenes/vídeos y poder detectar objetos, un caso practico podría ser detectar un automóvil mal estacionado
  • Detectar marcas: observar imágenes/vídeos y poder detectar marcas comerciales, esto podría ser de utilidad para una empresa que desea comparar su posicionamiento en anaqueles de un supermercado respecto a su competencia
  • Detectar rostros: observar imágenes/vídeos y detectar a una persona, de gran utilidad para seguridad, controles de acceso o incluso para onboarding digital. En este punto es importante destacar que Azure posee un servicio mas complejo, llamado Face Service dentro Azure Cognitive Services que permite detectar emociones, poses de la cabeza o la presencia de máscaras faciales

En caso de que lo que esté desarrollando sea muy especifico, se provee una suite llamada Custom Vision. Este módulo se centra en la creación de modelos personalizados para la detección de objetos.

Por lo general, esto requeriría un conocimiento avanzado de las técnicas de aprendizaje profundo (#deeplearning) y un gran conjunto de datos de entrenamiento, pero el uso de Custom Vision Service nos permite lograr esto con menos imágenes y sin experiencia en ciencia de datos (#datascience)

Lectura de Documentos

Otra gran funcionalidad que permite la visión por computadora, es la de reconocer textos. Como parte de la suite de Azure existe un modulo basado en #OCR (Reconocimiento óptico de caracteres) que permite leer texto impreso y escrito a mano desde imágenes y como complemento existe un servicio orientado puntualmente a la lectura de formularios llamado Form Recognizer. Esta herramienta no solo permite interpretar los datos de un formularios, sino que posibilita el procesamiento inteligente de formularios y la creación de los flujos de trabajo de automatización para documentos como recibos y facturas.

Es una herramienta de gran utilidad para la digitalización de procesos de empresas que aun dependen de la recepción de recibos de pagos de sus clientes en papel, de manera que el modelo puede reconocer formatos de los recibos, extraer los atributos (fecha y hora del pago, monto, impuestos, etc) y cargarlos en sus sistemas informáticos corporativos.

La visión por computadora es de gran utilidad para la digitialización de las compañías y organizaciones gubernamentales, ya que permiten realizar tareas repetitivas y monótonas a un ritmo más rápido y con menos errores, lo que simplifica el trabajo de los humanos.


Categories
54cuatro

El testing dentro de CI/CD

Desde antes de la fiebre #DevOps que sabemos que había que automatizar las pruebas de software, pero no se hizo. Los equipos de desarrollo fueron haciendo mayor énfasis en las pruebas de interfaz de usuario que en pruebas unitarias, y por consiguiente se fue deformando el enfoque propuesto por Mike Cohn, denominada ‘Pirámide Ágil de Automatización de Testing’.

test automation strategy
Agile test automation pyramid – Mike Cohn

Esta pirámide es quizás la mejor definición de como deberíamos ejecutar las pruebas, y concentrarnos en la interfaz de usuario genera un patrón basado en Detectar Errores, cuando lo que debiéramos hacer es Prevenir Errores.

Pruebas unitarias

Esto tipo de testing es el que se realiza en la etapa de desarrollo, ejecutando pruebas unitarias después de cada compilación se consiguen datos específicos para un programador; ej: hay un error y está en la línea 1143.

Además habitualmente las pruebas unitarias se realizan en el mismo lenguaje que la pieza de software de manera que los programadores suelen mantener una cierta comodidad escribiendo pruebas.  

Capa de Integración

En esta capa, se suele probar la integración de todos los componentes. Es donde se controla que todos los componentes funcionen correctamente y donde se busca comprobar que la lógica del software se encuentra alineada al requerimiento. Estas pruebas no solo aplicación a arquitecturas orientadas a servicios (SOA) sino también a variantes modernas de microservicios. En el caso de pruebas de API, necesita saber cuándo fallan sus API, por qué fallaron y necesita un circuito de retroalimentación ajustado para alertarlo lo antes posible. Es importante el testing en esta capa ya que si bien el end-to-end de las aplicaciones están compuestas de varios servicios que se concatenan entre si, hay muchos casos de prueba que deben invocarse de manera individual dado que no todos pueden ser ejecutados a través de la interfaz de usuario.

Pruebas de Interfaz de Usuario

Llegamos al tope de la pirámide. Y es justamente el tope de la pirámide porque este tipo de pruebas deben realizarse lo menos posible. Por motivos varios, son costosas, difíciles de preparar y requieren mucho tiempo. Ademas de que suelen salir muchos falsos negativos y falsos positivos. Pero de todas modas no debe evitarse esta etapa, dado que probando la interfaz de usuario se logra una prueba de extremo a extremo, para verificar el sistema en su totalidad. 

El equipo de desarrollo de Google sugiere que las pruebas deben ser realizadas 70% de pruebas unitarias, 20% de pruebas de integración y 10% en la capa superior.

Integrando el testing en un modelo CI/CD

Which one is right for you: Waterfall or Agile? |

Recordemos que CI/CD es un pilar de #DevOps que busca desplegar aplicaciones de software por medio de la automatización; y como es bien sabido que el #testing es parte de todo esto, debemos tener integradas las pruebas para poder seguir con el circulo virtuoso que propone DevOps.

Integrar el testing bajo el concepto de “Testing Continuo” permite detectar errores de forma temprana y por ende resolverlos con gran rapidez.

Algunos test que son potencialmente automatizables son las pruebas de regresión, funcionales, de integración y de rendimiento. Algunas herramientas nos permiten facilitar las tareas de automatización de testing, aunque no menos importante es encontrar que será automatizado, y también orquestar inteligentemente las pruebas.

Herramientas para Pruebas Continuas

  • #Katalon. Esta herramienta ofrece una plataforma integral para realizar pruebas automatizadas para interfaz de usuario web, servicios web, servicios API y dispositivos móviles.
  • #Travis CI. Travis CI es un servicio de integración continua alojado que se utiliza para crear y probar proyectos de software alojados en GitHub y Bitbucket.
  • #Selenium es una herramienta de prueba compatible con la mayoría de los navegadores convencionales, como Chrome, Firefox, Safari e Internet Explorer.
  • #Azure Test Plan. En lo que refiere a ambientes #cloud, #Microsoft tiene una gran oferta de soluciones dentro de su suite Azure DevOps, y en este caso un kit de herramientas de pruebas exploratorias y manuales con una interfaz intuitiva e integrada.

Conclusión

Este tema da para largo y en próximas entradas seguiremos explorando el testing en el marco de DevOps, haciendo foco en Microservicios, API e incluso en Data.

El testing como parte de una cadena CI/CD es muy beneficioso, pero también pueden muy desafiante. Es necesario tener un buen plan de testing tradicional antes de incorporar este procedimiento de prueba.

Posterior a tener un buen marco de pruebas es recomendable trabajar en las estrategias de incorporación del flujo de pruebas al pipeline.

Gracias por leernos!


[popup_anything id=”2076″]