Herramientas
Adoptar
-
Great Expectations se ha convertido en una prácticas por default para nuestros equipos en el ámbito de la calidad de datos, es por esto que recomendamos su adopción, no sólo por la falta de mejores alternativas, sino también porque nuestros equipos han obtenido grandes resultados en varios proyectos de clientes. Great Expectations es un framework que permite elaborar controles integrados para identificar anomalías o problemas de calidad en los pipelines de datos. Al igual que las pruebas unitarias que se ejecutan en un pipeline de construcción, Great Expectations realiza validaciones durante la ejecución de un proceso de datos. Nos gusta su simplicidad y facilidad de uso — las reglas almacenadas en JSON pueden ser modificadas por nuestros expertos en el dominio de datos sin necesidad de tener conocimientos en ingeniería de datos.
-
Desde que lo mencionamos por primera vez en el Radar, k6 se ha convertido en una herramienta de referencia para las pruebas de rendimiento. Seguimos siendo fanáticos de lo fácil que es escribir código JavaScript para pruebas, pero k6 también tiene un creador de pruebas low-code para que jugar con la herramienta sea aún más fácil. La documentación describe lo fácil que es agregar pruebas de rendimiento a una pipeline a través de múltiples herramientas de CI/CD. A nuestros equipos les resulta fácil integrar herramientas de visualización como Grafana y New Relic, que les ayudan a poner a punto tanto la infraestructura como las aplicaciones. La facilidad de uso para los desarrolladores y su ecosistema hacen de k6 una opción convincente para investigar el comportamiento de un sistema bajo una carga elevada.
Probar
-
Apache Superset es una gran herramienta de inteligencia de negocio (BI) para la exploración y visualización de datos para trabajar con grandes configuraciones de lagos de datos y almacenes de datos. Admite varias fuentes de datos — incluyendo AWS Redshift, BigQuery, Azure MS SQL, Snowflake y ClickHouse. Además, no es necesario ser un ingeniero de datos para usarlo; está destinado a beneficiar a todos los ingenieros que exploran datos en su trabajo diario. Para casos de uso exigentes, nos resultó fácil escalar Superset al implementarlo en un clúster de Kubernetes. Desde la última vez que hablamos de ello en el Radar, Superset se ha graduado como un producto de Apache y hemos visto un gran éxito en varios proyectos.
-
Al implementar una recuperación de desastres robusta, segura y confiable, es necesario asegurarse que los respaldos (backups) no puedan ser eliminados o modificados antes que caduquen, ya sea de manera malintencionada o accidental. Anteriormente, con AWS Backup, estas políticas y garantías tenían que ser implementadas a mano. Recientemente, AWS añadió la funcionalidad de Vault Lock para garantizar que los respaldos (backups) sean inmutables e inviolables. AWS Backup Vault Lock aplica políticas de retención y eliminación, y evita que aún aquellos con privilegios de administrador puedan modificar o eliminar archivos de respaldos (backups). Esto ha demostrado tener un valor adicional y cubre una brecha existente.
-
La gestión de cuentas de varios equipos es un desafío en AWS, especialmente en la configuración y la gobernanza; AWS Control Tower intenta abordar este desafío. Nuestro equipo ha reportado buenos resultados al utilizarla para gestionar las cuentas y el control de acceso de varios equipos de la organización a través de un lugar único y centralizado.
-
Tuvimos éxito con Clumio Protect para realizar respaldos de datos de AWS, en particular S3. Clumio Protect, una solución SaaS comercial, también puede realizar copias de seguridad de una variedad de otros servicios de AWS y almacenar los datos offline donde no se puede acceder a ellos a través de Internet. Nuestros equipos responsables de manejar la protección y la recuperación de datos a gran escala descubrieron que Clumio Protect es fácil de configurar y mantener y supera con creces al servicio nativo de respaldos de AWS cuando los repositorios S3 son particularmente grandes.
-
Llevamos hablando de plantillas de servicio a medida desde que identificamos por primera vez el concepto de los microservicios. Si una organización se propone crear una colección de pequeños servicios que se pueden desarrollar, construir, implementar y operar de forma independiente pero consistente, tiene sentido brindar a los equipos un punto de partida sólido que se alinee con el estándar. Sin embargo, uno de los problemas persistentes con ese enfoque es que, a medida que la plantilla evoluciona con el tiempo en respuesta a los cambiantes requisitos técnicos y comerciales, los proyectos basados en versiones anteriores de la plantilla quedan obsoletos. Aplicar retroactivamente las mejoras de la plantilla a un proyecto ya establecido se convierte en un reto. Cruft intenta abordar este problema proporcionando herramientas para identificar y parchear las diferencias entre un proyecto local y el estado actual de un repositorio de plantillas maestras. Combina el motor de plantillas Cookiecutter con los hashes de git para identificar y aplicar cambios a las plantillas. Piense en ello como un administrador de paquetes para un modelo de proyecto tipo. Mantener las plantillas actualizadas es un problema notoriamente difícil y persistente en el tiempo, por lo que para nosotros la solución que ofrece Cruft parece casi demasiado buena para ser verdad. Según los primeros comentarios de nuestro equipo, Cruft realmente funciona y facilita la vida tanto de las personas que desarrollan como de las que mantienen los servicios. Estamos impacientes por ver cómo funciona a largo plazo, pero por ahora vale la pena echarle un vistazo a esta herramienta potencialmente útil.
-
Seguimos recibiendo de nuestros equipos informes entusiastas sobre Excalidraw, pero nuestra advertencia anterior sobre la seguridad sigue latente. Excalidraw es una herramienta en línea para dibujar, simple pero potente. A veces los equipos solo necesitan una imagen rápida en lugar de un diagrama formal; para equipos remotos, Excalidraw provee una forma rápida de crear y compartir diagramas. A nuestro equipos también les agrada el aspecto “lo-fi” ("baja-fidelidad") de los diagramas que se pueden hacer. Una reminiscencia de los diagramas que hubieran hecho en una pizarra si estuvieran trabajando en el mismo lugar físico. Respecto a la seguridad, en el momento de escribir este blip, cualquier persona que tenga el enlace puede ver los diagramas; cabe recalcar, sin embargo, que la versión de pago de Excalidraw provee más autenticación y opciones para ejecutarse en un servidor local si es necesario.
-
Nos gusta correr la voz acerca de las herramientas de linting que realmente ayudan a encontrar problemas en lugar de solo disputas de estilo abreviado en el equipo. Hadolint es una de esas herramientas: ayuda a encontrar problemas comunes en Dockerfiles. Creemos que es rápido, preciso y con buena documentación. Explica ambos, cómo solucionar un problema y por qué es un problema en primer lugar, empujando así a los autores de Dockerfile hacia las buenas prácticas. De paso, Hadolint está construido sobre ShellCheck, que recomendamos por derecho propio para verificar sus shell scripts.
-
La mayoría de las herramientas y plataformas actuales para pipelines CI/CD están construidas sobre contenedores como entorno de ejecución. Varios de nuestros equipos están usando Kaniko para construir imágenes de contenedores desde dentro de esas pipelines basadas en contenedores. Esto forma parte de una tendencia de dejar atrás Docker como el estándar de facto para los entornos de ejecución de contenedores. Con Kaniko puedes construir tus imágenes sin usar un demonio Docker. Esto ayuda a evitar problemas de seguridad del modo “privilegiado” de Docker, que sería necesario para cualquier actividad “Docker-en-Docker”. Además, no tienes que asumir a priori que tu pipeline tiene acceso al demonio de Docker, lo cual ya no puede darse por sentado y a menudo requiere configuración extra.
-
A medida que trabajar con datos se vuelve cada vez más común, seguimos viendo herramientas que intentan potenciar el lenguaje SQL; Kusto Query Language (KQL) es una de ellas. KQL fue creado por Azure, y viene a aportar modularidad, encapsulamiento, componibilidad, reusabilidad, extensibilidad y dinamismo a las consultas relacionales. Nuestros equipos aprecian bastante su interactividad: puedes unir una consulta al operador de renderizado y ver un gráfico de manera instantánea. Puedes también agrupar estos gráficos en tableros y, a partir de los registros, obtener información para los ejecutivos en minutos. Aunque el lenguaje KQL actualmente está limitado al Explorador de datos de Azure, anticipamos que la tendencia de potenciar SQL para lograr una mejor operabilidad de datos no se detendrá.
-
Spectral es un linter de JSON/YAML con énfasis en las especificaciones OpenAPI y AsyncAPI. Incluye un amplio conjunto de reglas para dichas especificaciones, que pueden evitar dolores de cabeza a los desarrolladores al diseñar e implementar APIs o colaboración orientada a eventos. Estas reglas comprueban que las especificaciones de los parámetros de la API sean correctas o la existencia de una declaración de licencia en la especificación, entre otras cosas. El CLI facilita incorporar Spectral tanto en el desarrollo local como en los pipelines de CI/CD y la API JavaScript soporta casos de uso más avanzados. El sitio de GitHub enlaza a conjuntos de reglas del mundo real disponibles de manera pública por compañías como Adidas, ayudando a que los equipos puedan adoptar sus propias reglas de linting.
-
Servicio de autorización declarativa de Styra (DAS) es una herramienta de governanza y automatización para gestionar Open Policy Agent (OPA) a escala. Creado por los fundadores de OPA, esta herramienta nos permite desplegar políticas a través de “sistemas” incluyendo clusters de Kubernetes, repositorios de código de infraestructura, namespaces y más. No obstante, lo más importante es que nos permite hacer un análisis en tiempo real de las decisiones hechas por un agente OPA, junto con funcionalidades para reproducir cambios en las políticas con fines de depuración e investigación de escenarios de tipo “what-if”. También cuenta con un registro de auditoría que ayuda a los equipos de seguridad con informes históricos.
-
En equipos remotos, existe una dolorosa carencia de monitores de compilación dedicados. Desafortunadamente, las nuevas herramientas de integración continua (CI) carecen de soporte para el viejo formato de CCTray. Como consecuencia, las compilaciones fallidas no siempre se identifican tan rápido como nos gustaría. Para resolver el problema, muchos de nuestros equipos han comenzado a usar xbar para monitorizar compilaciones. Con xbar, se puede ejecutar un script para conocer el estado de la compilación, mostrándolo en la barra de menú. Además se puede programar para realizar un seguimiento de otras métricas del equipo como credenciales pendientes de expirar o cuánto se retrasa la publicación de una versión en producción respecto a la de pruebas de aceptación. Por supuesto, xbar tiene un propósito más general, pero resuelve un problema inmediato y emergente causado por el trabajo en remoto. Rumps, entre otras herramientas, puede resolver el mismo problema.
Evaluar
-
Desafortunadamente, una gran parte del mundo sigue utilizando hojas de cálculo y lo continuará haciendo. Estas son ideales ya que permiten a cualquier persona construir esas pequeñas herramientas adaptadas a sus necesidades más particulares. Sin embargo, cuando se quiere mejorarlas aplicando cierto nivel de lógica entonces necesitan código “real”, y el que las hojas de cálculo sean por naturaleza de bajo código se transforma en una limitante. Si eres parte de una empresa que, como Thouhgtworks, que utiliza la G-Suite de Google, Clasp te permite implementar al menos algunas prácticas de Entrega Continua (CD) en los scripts de estas aplicaciones. También puedes escribir el código fuera de tu proyecto, te permite crear opciones para realizar pruebas, control de código fuente y construir pipelines, e incluso permite el uso de TypeScript. Clasp tiene algún tiempo entre nosotros, y aunque no debes esperar que sea un ambiente de programación con todas las comodidades que usualmente tenemos, ciertamente puede ayudar de forma muy grata a mejorar la experiencia de uso de la secuencia de comandos de estas aplicaciones.
-
Databricks Overwatch es un proyecto de Databricks Labs que habilita a los equipos a analizar varias métricas operacionales de cargas de trabajo de Databricks en relación al costo, gobierno y desempeño, soportados por la posibilidad de ejecutar experimentos del tipo qué pasa si. Esencialmente es un conjunto de pipelines de datos que pueblan tablas en Databricks, que luego puede ser analizado utilizando herramientas como notebooks. Overwatch es una herramienta muy fuerte, sin embargo, está aún en sus primeras fases por lo que puede tomar cierto esfuerzo para configurarla — nuestro uso de esta herramienta requirió de arquitectos de solución de Databricks para ayudarnos a configurar y poblar una tabla de referencia de precios para cálculos de costos — esperamos, sin embargo, que su adopción se vuelva más fácil en el tiempo. El nivel de análisis que Overwatch hace posible, es más profundo que el permitido por las herramientas de análisis de costo por proveedores de nube. Por ejemplo, pudimos analizar el costo de fallas de jobs — reconociendo que fallar tempranamente ahorra dinero , comparado con los jobs que fallan sólo cerca de los pasos finales — así como descomponer el costo en varios tipos de agrupamientos
-
Data Vault 2.0 es una metodología de modelado de datos y un patrón de diseño cuya intención es mejorar la flexibilidad de los almacenes de datos (data warehouses), comparado con otros enfoques de modelado populares. Data Vault 2.0 se puede aplicar a cualquier almacén de datos como Snowflake o Databricks. Al implementar almacenes de Data Vault, hemos descubierto que el paquete dbtvault es una herramienta muy útil para dbt. dbtvault proporciona un conjunto de plantillas jinja que generan y ejecutan los scripts ETL necesarios para poblar un almacén de Data Vault. Aunque dbtvault tiene algunas mejoras pendientes — carece de soporte para forzar unicidad implícita o realizar cargas incrementales — en general, cubre un nicho de mercado y requiere una configuración mínima para comenzar.
-
Siempre estamos buscando maneras de eliminar fricciones cuando programamos en pares y es por eso que estamos muy emocionadas con git-together: una herramienta programada en Rust que simplifica la manera de atribuir un commit de git durante la programación en pares. Utilizando
git
como alias degit-together
, permitimos que esta herramienta pueda añadir extensiones agit config
que capturan la información de las personas que hacen commit utilizando las iniciales de éstas como alias. Para cambiar de par, o pasar a programar sola o a hacer mob programming, requiere que se utilice el comandogit with
seguido de las iniciales del par, por ejemplogit with bb cc
, permitiendo que después se pueda continuar con el flujo de trabajo habitual. Cada vez que se haga un commit, git-together hará rotación de la pareja designada como autora que git tiene guardada, y añadirá automáticamente a las otras autoras al final del mensaje que se hará commit. La configuración se puede añadir al repositorio, permitiendo de esta manera que git-together ya funcione después de haber clonado el repositorio. -
Harness Cloud Cost Management es una herramienta comercial que funciona con los tres proveedores de nube principales y sus clústeres de Kubernetes para ayudar a visualizar y gestionar costes de nube. Este producto calcula un indicador de eficiencia de costes en base a los recursos inactivos y aquellos que no tienen ninguna carga de trabajo asignada, y usa tendencias históricas para ayudar a optimizar la asignación de recursos. Los paneles de control resaltan picos de coste y permiten al usuario registrar anomalías inesperadas, que posteriormente alimentan el algoritmo de aprendizaje que mejora la detección de las mismas. El gestor de costes de nube puede recomendar ajustes a los límites de memoria y uso del CPU, con la opción de optimizar para coste o para rendimiento. Las “perspectivas” permiten agrupar costes basados en filtros definidos por la organización (que podrían ser unidades de negocio, equipos o productos) y automatizar el envío de informes para aumentar la visibilidad del gasto de la nube. Creemos que este gestor de costes de la nube ofrece una gama de funcionalidades interesantes para que las organizaciones maduren sus prácticas de FinOps.
-
Continuamos viendo organizaciones que se mueven a la nube sin comprender correctamente cómo van a realizar el seguimiento de los gastos en los que van a incurrir. Anteriormente mencionamos Coste de ejecución como fitness function de la arquitectura, e Infracost es una herramienta que tiene como objetivo mostrar las diferencias de coste de la nube en los pull request de Terraform. Es un software de código abierto y está disponible para macOS, Linux, Windows y Docker. Soporta de forma nativa los precios de AWS, GCP y Microsoft Azure. También proporciona una API pública en la que se pueden consultar los datos actuales de costes. Seguimos entusiasmados con su potencial, especialmente cuando se trata de obtener una mejor visibilidad de costes en el IDE.
-
Una de las características fundamentales de Kubernetes es su habilidad para lanzar automáticamente nuevos pods cuando se necesita capacidad adicional y apagarlos cuando las cargas disminuyen. Este autoescalado horizontal es una característica muy útil, pero solo puede funcionar si los nodos necesarios para alojar los pods ya existen. Mientras que Cluster Autoscaler puede realizar una expansión rudimentaria de clusters desencadenada por fallos de pods, este tiene una flexibilidad limitada. Sin embargo, es un autoescalador de código abierto Kubernetes Operator con más inteligencia incorporada: Analiza las cargas de trabajo actuales y las restricciones de programación de los pods para seleccionar automáticamente un tipo de instancia adecuada para luego iniciarla o detenerla según sea necesario. Karpenter es un operador en el alma de herramientas como Crossplane que puede aprovisionar recursos en la nube fuera del clúster. Karpenter es un atractivo compañero para el servicio de autoescalado automático en la nube, que los proveedores de servicios en la nube proporcionan de forma nativa en sus Kubernetes gestionados. Por ejemplo, AWS ahora soporta Karpenter como una alternativa de primera clase en su servicio EKS Cluster Autoscaler.
-
Mizu Es una API de visualización de tráfico para Kubernetes. A diferencia de otras herramientas, Mizu no requiere de instrumentación o modificación de código. Funciona como un DaemonSet que inyecta un contenedor a nivel de nodo de tu clúster de Kubernetes y ejecuta operaciones del tipo tcpdump. Encontramos esta herramienta muy útil como depurador, ya que puede observar todas las comunicaciones de API a través de múltiples protocolos (REST, gRPC, Kafka, AMQP y Redis) en tiempo real.
-
Soda Core es una herramienta open-source de observabilidad y calidad de datos. Hemos hablado sobre Great Expectations previamente en el Radar, y Soda Core es una alternativa con una diferencia clave — las validaciones de datos se definen en un DSL llamado SodaCL (previamente conocido como Soda SQL) en contraposición a las funciones de Python. Una vez las validaciones han sido escritas, pueden ejecutarse como parte de un data pipeline o ser planificadas para ejecutarse programáticamente. Dada la tendencia actual de la orientación al dato, mantener la calidad de los mismos es una tarea crítica, por lo que les animamos a evaluar Soda Core.
-
Teller es un administrador universal de secretos de código abierto para desarrolladores que garantiza que se establezcan las variables de entorno correctas al iniciar una aplicación. No obstante, no es un vault en sí: es una herramienta CLI que se integra con diversas fuentes, que van desde proveedores de secretos en la nube hasta soluciones de terceros como HashiCorp Vault, pasando por archivos de entorno locales. Teller tiene funcionalidades adicionales para escanear tu código en busca de secretos presentes en tus vaults, para limpiar de secretos tus logs, para detectar desviaciones entre proveedores de secretos y para sincronizarlos entre ellos. Dada la sensibilidad de acceder a secretos, no podemos enfatizar lo suficiente la necesidad de securizar la cadena de suministro para dependencias de código abierto, así como valoramos lo fácil que es usar la CLI en entornos de desarrollo locales, pipelines de CI/CD y automatización de despliegues.
-
Xcode Cloud es una herramienta de CI/CD integrada en Xcode y utilizada para desarrollar, probar y desplegar aplicaciones de Apple. Proporciona una experiencia integrada con herramientas familiares para los desarrolladores de Apple como Xcode, App Store Connect y TestFlight. Según la experiencia de nuestros equipos, hace un buen trabajo a la hora de simplificar la configuración del pipeline y el aprovisionamiento de perfiles y certificados. Esta herramienta es bastante reciente y la mayoría de nuestros equipos de desarrollo móvil siguen utilizando la más madura Bitrise. Aun así, creemos que merece la pena evaluarla y seguir su evolución.
Resistir
-
Anteriormente nos hemos referido a los datos de producción en entornos de prueba y ahora queremos señalar otra práctica común que debe ser abordada con cuidado o incluso detenida por completo: Servicios en línea para formatear o analizar el código. Hay muchos sitios útiles para formatear o analizar formatos como JSON y YAML, así como sitios que evalúan tutoriales de código o producen métricas de código en línea. Se debe tener extremo cuidado al utilizarlos. Pegar un bloque de JavaScript, JSON o similar en un sitio web desconocido puede fácilmente crear incidentes de seguridad o privacidad, y podría exportar, sin que uno lo sepa, datos personales a una jurisdicción diferente. Estos sitios nunca deben ser utilizados con datos en producción y deben ser abordados con precaución en cualquier otra circunstancia.
- Nuevo
- Modificado
- Ningún cambio
¿No encontraste algo que esperabas ver?
Cada edición del Radar presenta noticias que reflejan lo que hemos encontrado durante los seis meses anteriores. Es posible que ya hayamos cubierto lo que busca en un Radar anterior. A veces seleccionamos cosas simplemente porque hay demasiadas de las que hablar. También es posible que falte algún dato porque el Radar refleja nuestra experiencia, no se basa en un análisis exhaustivo del mercado.
¿No encontraste algo que esperabas ver?
Cada edición del Radar presenta noticias que reflejan lo que hemos encontrado durante los seis meses anteriores. Es posible que ya hayamos cubierto lo que busca en un Radar anterior. A veces seleccionamos cosas simplemente porque hay demasiadas de las que hablar. También es posible que falte algún dato porque el Radar refleja nuestra experiencia, no se basa en un análisis exhaustivo del mercado.
