Herramientas
Adoptar
-
dbtcontinúa siendo nuestra herramienta preferida para transformación de datos en flujos de trabajo ELT. Nos gusta que se presta al rigor de la ingeniería y habilita prácticas como modularidad, testabilidad y reusabilidad de transformaciones SQL. dbt está disponible en ambos formatos, como código libre y como software como servicio, y tiene un ecosistema sano, incluyendo un repositorio con paquetes para pruebas unitarias, calidad de datos y observabilidad de datos, por nombrar unos cuantos. Algunos paquetes que merece la pena mencionar son dbt-expectations y dbt-unit-testing que facilitan las verificaciones de la calidad de los datos y las pruebas unitarias de las transformaciones, respectivamente. dbt se integra bien con una variedad de almacenes de datos en la nube, lakehouses y bases de datos como Snowflake, BigQuery, Redshift, Databricks y Postgres. Cuando trabajamos con datos estructurados en los que es posible establecer transformaciones en SQL, nuestros equipos prefieren dbt — que es el motivo por el que lo movemos a Adopt.
-
Mermaid te permite generar diagramas a partir de un lenguaje de marcado similar a Markdown. Desde la última vez que lo presentamos en el Radar, Mermaid ha agregado soporte para muchos más diagramas e integraciones con repositorios de código fuente, entornos de desarrollo integrado (IDE por sus siglas en inglés) y herramientas de gestión del conocimiento. Es importante destacar que está integrado de forma nativa en repositorios populares como GitHub y GitLab, permitiendo la inserción y actualizaciones fáciles de los diagramas de Mermaid en medio de documentación en Markdown. Muchos de nuestros equipos se decantan hacia Mermaid como su herramienta de referencia para diagramas como código debido a su facilidad de uso, multitud de integraciones y amplia variedad de tipos de diagramas soportados y que continúan en aumento.
-
Ruff es un linter relativamente nuevo para Python. Cuando se trata de linters, para nosotros la pregunta no es cuándo usar un linter sino cual linter usar. Ruff se destaca por la mejor experiencia de uso y su velocidad. Tiene más de 500 reglas integradas y reemplaza fácilmente a Flake8, incluyendo muchos de los plugins de linter. Las afirmaciones del equipo de Ruff sobre su desempeño están confirmadas por nuestra experiencia; realmente es al menos un orden de magnitud más rápido que otros linters, lo cual es un gran beneficio, porque ayuda a reducir los tiempos de compilación en grandes bases de código. Por estas razones, Ruff se ha convertido en nuestra opción predeterminada como linter de Python.
-
Snyk ofrece tanto pruebas estáticas de seguridad de aplicaciones (SAST) como análisis de componentes de software (SCA) para ayudarte a encontrar, resolver y monitorizar problemas de seguridad durante todo el ciclo de vida del desarrollo de software. Su amplia gama de funcionalidades está diseñada para acelerar el ciclo de feedback, favoreciendo el enfoque de desplazar las pruebas hacia la izquierda (shift-left) en lugar del anti-patrón sándwich de seguridad. Snyk destaca por ser una de las mejores plataformas de seguridad disponibles al día de hoy, siendo capaz de identificar un número importante de problemas de seguridad, gracias a un equipo dedicado a la investigación y actualización de su base de datos de vulnerabilidades. Aun así, hay puntos de mejora en la plataforma, por ejemplo el panel actualmente no proporciona una manera fácil de filtrar información específica para generar accionables; dependiendo del ecosistema del lenguaje usado, las integraciones basadas en SCA pueden producir falsos positivos en comparación con las integraciones basadas en pipelines, ya que Snyk tiene que adivinar cuáles fueron las dependencias resueltas; la resolución automatizada no es exitosa de forma consistente; y se requiere invertir tiempo en la integración para alcanzar una protección adecuada o definir una SBOM en entornos altamente regulados. A pesar de estas deficiencias, muchos de nuestros clientes empresariales han adoptado Snyk; nosotros también lo estamos usando para nuestro uso en TI.
Probar
-
La gestión de cuentas multi-equipo es un desafío en AWS, especialmente en la configuración y gobierno. AWS Control Tower aborda este desafío simplificando la configuración y automatizando la gobernanza; trata los requerimientos regulatorios con barreras de borde. AWS Control Tower tiene una Account Factory incluída que ayuda a automatizar el flujo de trabajo de aprovisionamiento de cuentas. Entre otras cosas, puedes actualizar, dejar de gestionar o cerrar cuentas que creó y aprovisionó a través de Account Factory. Debido a la falta de automatización y customización, Amazon introdujo la AWS Control Tower Account Factory para Terraform (AFT). AFT te permite aprovisionar personalizaciones para mandar webhooks o tomar acciones específicas que permitan una integración con otras herramientas para iniciar tareas como parte del proceso de creación de cuenta. Uno de los casos de uso aprovechados por nuestro equipo fue gestionar un conjunto de elementos desde el primer momento para cuentas con configuraciones de un solo uso para establecer una base y crear acceso para roles para GitHub Actions. Esto dió como resultado darles a los desarrolladores una cuenta con seguridad basada en una VPC totalmente integrada, lista para recibir carga de trabajo a través de GitHub Actions. Nuestro equipo ha conseguido excelentes resultados al utilizar AWS Control Tower para gestionar cuentas, como un control de acceso único para varios equipos y al aprovechar AFT en sus cargas de trabajo.
-
Bloc es una librería de gestión de estados reactiva para Flutter. Entre todas las opciones de gestión de estados disponibles para Flutter, destacamos Bloc porque nuestros equipos han tenido una buena experiencia con ella a la hora de construir aplicaciones móviles complejas. Estructurar el código siguiendo el patrón BLoC tuvo como resultado una separación clara entre la lógica de negocio y la capa de presentación dado que los widget UI se comunican con dicha lógica via streams y event sinks. Bloc también ofrece un buen soporte mediante plugins para los IDEs IntelliJ y VSCode.
-
cdk-nag identifica y reporta problemas de seguridad y cumplimiento regulatorio en aplicaciones AWS CDK o plantillas de CloudFormation. Viene con varios de los llamados paquetes de reglas: un paquete general de AWS que incluye comprobaciones de lo que AWS considera buenas prácticas, además de paquetes para el cumplimiento de HIPAA, NIST y PCI. Se pueden añadir reglas adicionales según sea necesario. Las reglas pueden resultar en errores o advertencias, y ambas son incluidas en reportes generados por la herramienta. Cuando se presentan errores, el comando
cdk deploy
no hará despliegues. Si la causa del error no puede ser arreglada a tiempo, aún se puede desplegar con el error presente pero suprimido. Obviamente, esto solo debe hacerse en casos excepcionales. -
Checkov es un scanner estático de seguridad para infraestructura como código (IaC). Soporta múltiples lenguajes de infraestructura, entre ellos Kubernetes manifests, Helm charts, CloudFormation templates y Terraform. Fácil de desplegar en pipelines de CI/CD, protege de posibles brechas de seguridad en diversas configuraciones de infraestructura cloud. Aprovechando un conjunto de reglas predeterminadas, identifica escenarios de seguridad comunes con consejos de solución detallados disponibles en su sitio web. Checkov admite reglas personalizadas, y utiliza YAML para definir directivas simples o Python para directivas complejas. Nuestros equipos han utilizado Checkov con éxito para mejorar la seguridad durante las implementaciones de infraestructura, teniendo en cuenta las advertencias tempranas que proporciona sobre posibles problemas antes del despliegue.
-
Chromatic es una herramienta visual de pruebas de regresión para interfaces de usuario de aplicaciones web. Funciona tomando pantallazos de los componentes de la interfaz y comparándolos contra pantallazos anteriores, cuando estos cambian. Es un servicio alojado que se integra con servicios populares de hosting de código en la nube. Construido sobre Storybook, realiza pruebas de regresión visual a nivel de componentes. Puede renderizar los componentes en distintos anchos de ventanas del navegador para pruebas de responsividad e integrarse con flujos de trabajo de CI, generando un conjunto de cambios de la interfaz por cada commit, lo que facilita su revisión. En el ámbito visual, nuestros equipos encuentran que Chromatic es mejor que otras herramientas. La capacidad de destacar visualmente los cambios la hace particularmente útil.
-
eBPF es famoso por su transparencia, alto rendimiento y baja sobrecarga. Por esta razón la comunidad de nube nativa ha estado explorando su uso para malla de servicios sin sidecar. Cilium es un proyecto de código abierto que provee interconexión de redes, seguridad y observabilidad para entornos de nube nativa como clusters de Kubernetes y otras plataformas de orquestación de contenedores. Proporciona una red simple de capa 3 para enrutamiento o superposición y admite el protocolo L7. Desacoplando la seguridad del direccionamiento, Cilium puede jugar un rol significativo como una nueva capa de protección. Hemos visto la adopción de Cilium en algunos proveedores de computación en la nube y también ha sido utilizado en proyectos en Thoughtworks. La comunidad todavía está debatiendo si eBPF puede reemplazar el uso del patrón sidecar, pero parece haber consenso en que algunas características de las mallas de servicios no pueden o no deben ser ejecutadas en el kernel. Además, aplicar Cilium también requiere experiencia previa relacionada con eBPF. Basándonos en los resultados positivos en nuestro proyecto, te recomendamos utilizar esta tecnología.
-
Cloud Carbon Footprint (CCF) es una herramienta de código abierto que estima las emisiones de carbono para las cargas de trabajo en la nube en los principales proveedores de servicios de nube. Consulta las API de la nube para obtener datos sobre el uso de recursos y utiliza múltiples fuentes para rastrear las emisiones de carbono. Siguiendo una metodología publicada, CCF los combina en estimaciones de emisiones y proporciona una visualización de los datos a lo largo del tiempo. Los proveedores de nube han comenzado a agregar ofertas similares a sus plataformas, pero las organizaciones aún están implementando CCF porque reúne las características siguientes: es de código abierto, está diseñado para ampliarse, funciona en múltiples nubes y tiene una metodología publicada transparente. Adicionalmente, incluye estimaciones de emisiones de alcance 2 y alcance 3 — para el uso de electricidad y la producción de hardware, respectivamente. En nuestros experimentos, las estimaciones entre diferentes herramientas han variado, lo cual no es una gran sorpresa dado que todas las herramientas en este espacio hacen estimaciones y multiplican números estimados. Sin embargo, decidirse por una herramienta, tomar una línea de base y mejorar a partir de esa línea de base es el escenario de uso clave que hemos encontrado, y herramientas como Kepler pueden reducir la necesidad de estimaciones en el futuro. CCF también ofrece recomendaciones de optimización obtenidas de GCP y AWS, que no solo ayudan a reducir su huella de carbono en la nube, sino que también pueden convertirse en parte de una estrategia más amplia de optimización de costos de la nube. Thoughtworks es un contribuyente significativo a CCF.
-
Pruebas de estructura de contenedor (CST) es una herramienta desarrollada por Google para probar la estructura de una imagen de contenedor. Se puede utilizar CST para verificar la existencia o ausencia de un determinado archivo en el sistema de archivos de la imagen, para verificar el contenido de un archivo, para verificar la salida o los errores dentro de un comando específico emitido en el contenedor y para verificar los metadatos de imagen del contenedor (por ejemplo, etiquetas, punto de entrada y comando) que ayuda a garantizar el cumplimiento de CIS Docker Benchmark. Hemos tenido buenas experiencias con CST y te recomendamos que puedas probarlo. Además de prevenir vulnerabilidades — verificar si el contenedor está exponiendo puertos innecesarios — también lo usamos para validar que cada contenedor Docker cumpla con todos los requisitos necesarios para su despliegue y ejecución de una aplicación en la plataforma empresarial. Uno de estos requisitos era tener instalado un agente de observabilidad en la imagen. Es importante tener en cuenta que Google no admite oficialmente CST, lo que podría afectar el mantenimiento.
-
Devbox es una herramienta basada en terminal que provee una interfaz accesible para crear entornos de desarrollo reproducibles por proyecto, aprovechando el administrador de paquetes Nix sin usar máquinas virtuales o contenedores. Nuestros equipos la utilizan para eliminar la discordancia en la versión y configuración de las herramientas de CLI y scripts personalizados en sus entornos de desarrollo por proyecto, además de la estandarización que proveen los administradores de paquetes de cada lenguaje. Descubrieron que agiliza notablemente su flujo de trabajo de onboarding ya que una vez que ha sido configurado para una base de código, solo toma un comando del CLI (
devbox shell
) para levantar una nueva máquina. Devbox soporta hooks de terminal, scripts personalizados y generación de devcontainer.json para la integración con VSCode. -
DX DevEx 360 es una plataforma de encuestas que ayuda a buscar los principales indicadores de la productividad de las desarrolladoras, enfocándose en las fricciones de su trabajo diario, como procesos de revisión de código, calidad de código, concentración profunda y más. La plataforma está diseñada por Nicole Forsgren y Margaret-Anne Storey, que lideraron trabajos anteriores en DORA y SPACE, entre otras expertas.
Nuestros equipos de ingeniería de plataforma han usado DX DevEx 360 satisfactoriamente para comprender el sentimiento de las desarrolladoras e identificar puntos de fricción para hacerlos constar en la hoja de ruta de la plataforma. Comparado con usar herramientas similares, con DX DevEx 360 recibimos una respuesta de 90% o más, a menudo detallada con comentarios de desarrolladoras sobre problemas e ideas de mejora. También apreciamos que la herramienta da transparencia de los resultados a las ingenieras de la compañía en vez de solo mostrarlo a las personas encargadas del equipo y permite desglosar equipo por equipo, permitiendo obtener una mejora continua teniendo en cuenta el contexto de cada equipo.
-
GitHub Copilot es utilizado por muchos de nuestros equipos para ayudarles a escribir código más rápido. En general, a la mayoría de nuestros desarrolladores les parece muy útil y se molestarían si se lo quitáramos. Hemos estado recopilando y compartiendo muchas de nuestras experiencias con Copilot a través de una serie sobre la IA generativa y una guía sobre cómo comenzar con Copilot. Tenga en cuenta que GitHub Copilot se puede usar con cualquier base de código, no solo con bases de código alojadas en GitHub.
También estamos emocionados de que la función de chat de Copilot de la hoja de ruta de Copilot X se ha vuelto más ampliamente disponible desde la última vez que la presentamos en el Radar. Es una poderosa adición a la funcionalidad de asistencia en línea de Copilot. La disponibilidad de una interfaz de chat dentro del entorno de desarrollo integrado (IDE) mejora la facilidad de descubrimiento de información comúnmente buscada y la integración con el editor abierto facilita la exploración de errores o solicitar ayuda al chat con tareas relacionadas con el código actualmente en foco.
-
Desde que Postman anunció en Mayo de 2023 que comenzaría a retirar el modo Scratch Pad con sus capacidades offline, los equipos que necesitan mantener la información de sus worspaces de APIs fuera de servidores de terceros han tenido que buscar alternativas. Insomnia es una de estas alternativas: es una aplicación de escritorio gratuita y de código abierto diseñada para probar, desarrollar y depurar APIs. Aunque Insomnia permite sincronización online, también permite mantener la información de los workspaces de APIs offline. Nuestros equipos no han encontrado problemas al migrar desde Postman para las pruebas manuales de APIs ya que las funcionalidades son similares se pueden importar las colecciones de Postman. Pese a las positivas experiencias de nuestros equipos con Insomnia, seguimos vigilando otras alternativas en desarrollo — desde herramientas de interfaz gráfica de usuario como Insomnia que son alternativas de reemplazo inmediato, a herramientas de linea de comandos como HTTPie, o extensiones para entornos de desarrollo integrados como IntelliJ HTTP client plugin.
-
El Plugin de cliente HTTP para IntelliJ permite a desarrolladores crear, editar y ejecutar peticiones HTTP desde el propio editor de código, simplificando el proceso de desarrollo cuando se están construyendo y consumiendo APIs. Este plugin es cada vez más popular entre nuestros equipos, quienes consideran sus funcionalidades prácticas y fáciles de usar. Las funciones más destacadas incluyen soporte para el uso de archivos privados que protegen claves sensibles al excluirlas de Git automáticamente, control de versiones y la capacidad de usar variables, lo que mejora notablemente la experiencia de desarrollo. Recomendamos probar esta herramienta por la capacidad que tiene de optimizar los flujos de trabajo de los desarrolladores y su capacidad para reforzar las medidas de seguridad.
-
KEDA, cuyo nombre se puede traducir al español como “escalador automático basado en eventos de Kubernetes”, hace exactamente lo que su nombre sugiere: permite el escalado de un clúster de Kubernetes en función de la cantidad de eventos que deben ser procesados. En nuestra experiencia, es preferible usar indicadores adelantados como el tamaño de la cola, en lugar de indicadores retrasados como el uso de CPU. KEDA soporta diferentes fuentes de eventos e incorpora un catálogo de más de 50 escaladores para varias plataformas en la nube, bases de datos, sistemas de mensajería, sistemas de telemetría, integración/despliegue continuo y más. Nuestros equipos reportan que la facilidad con la que KEDA se integra les ha permitido mantener funcionalidad en micro servicios en Kubernetes para los que en otros casos habrían considerado migrar parte del código de gestión de eventos a funciones serverless.
-
Kubeconform es una herramienta simplificada para validar manifiestos de Kubernetes y definiciones de recursos personalizados (CRD en inglés). Fácilmente desplegable en pipelines de CI/CD o máquinas locales, fomenta la confianza al validar los recursos antes del despliegue, mitigando así potenciales errores. Dado su historial mejorando el aseguramiento operacional, especialmente en recursos con plantillas compartidas entre equipos, recomendamos probar Kubeconform para reforzar la seguridad y eficiencia de sus procesos de validación de recursos.
-
mob es una herramienta de línea de comandos que, de manera transparente, facilita el git handover en pairing remoto o programación en grupo. Oculta toda la parafernalia del control de versiones detrás de una interfaz de línea de comandos, lo que simplifica las sesiones de programación en grupo. También proporciona consejos específicos sobre cómo participar de forma remota, por ejemplo, “tomar control de la pantalla” en Zoom en lugar de terminar el compartir pantalla, asegurando que la disposición en el monitor no cambie para los participantes. Varios de nuestros equipos recomiendan encarecidamente mob, y se ha convertido en una parte integral de nuestra cadena de herramientas en pair programming remoto o programación en grupo.
-
MobSF es una herramienta de pruebas automatizadas de seguridad estática y dinámica de código abierto diseñada para detectar vulnerabilidades de seguridad en aplicaciones móviles iOS y Android. Escanea tanto el código fuente como los archivos binarios de la aplicación y proporciona informes detallados sobre las vulnerabilidades encontradas. MobSF se distribuye en forma de imágenes Docker e incorpora una APIs REST de fácil uso. Además, a través de mobsfscan, puede integrarse en flujos de trabajo de CI/CD. Nuestra experiencia utilizando MobSF para la prueba de seguridad en aplicaciones Android ha sido positiva; recomendamos probarlo para sus necesidades de pruebas de seguridad en aplicaciones móviles.
-
Mocks Server es una herramienta de simulación de API basada en node.js valorada por nuestros equipos por su capacidad para replicar complejas respuestas API, encabezados y códigos de estado. La generación de respuesta dinámica admite la simulación de diversos escenarios, lo que permite realizar pruebas rigurosas de las interacciones con las API. Los simulacros (mocks) pueden describirse como YAML o JSON y administrarse a través de CLI, API REST o código JavaScript. Las características de Mocks Server incluyen funciones de coincidencia de solicitudes, proxy y grabación-reproducción, que facilitan la emulación de interacciones API realistas. Nos gusta especialmente la integración con contenedores Docker, lo que hace que sea más fácil el despliegue del servidor de manera consistente entre entornos para que pueda ser versionado y mantenido como otro artefacto del ecosistema. Su enfoque sencillo se alinea con nuestro énfasis en la simplicidad y eficiencia en los procesos de desarrollo. Esperamos utilizar Mocks Server más ampliamente a medida que nuestra estrategia de prueba evolucione junto con nuestras soluciones.
-
Prisma runtime defense, que es una parte de la suite de Prisma Cloud, ofrece un nuevo enfoque a la seguridad de contenedores. Emplea un mecanismo para construir un modelo del comportamiento esperado de un contenedor y luego detecta y bloquea las actividades anómalas cuando se encuentra una variación durante el tiempo de ejecución. Monitorea los procesos del contenedor, actividades de la red y sistemas de archivos para encontrar patrones y cambios que indiquen que un ataque podría estar en proceso y realiza bloqueos de acuerdo a las reglas configuradas. Los modelos que aprenden lo que se identifica como comportamientos “normales” son construidos tanto por el análisis estático de imágenes de docker, como por análisis del comportamiento dinámico por un periodo preconfigurado. Nuestros equipos han encontrado prometedores los resultados en su uso.
-
Terratest continues to be an interesting option for infrastructure testing. It is a Golang library that makes it easier to write automated tests. Using infrastructure-as-code tools such as Terraform, you can create real infrastructure components (such as servers, firewalls or load balancers) to deploy applications on them and then validate the expected behavior using Terratest. At the end of the test, Terratest can undeploy the apps and clean up resources. Our teams report that this approach of testing deployed infrastructure components fosters confidence in the infrastructure as code. We see our teams writing a variety of infra security tests for application components and their integrations. For example, detecting misconfigurations, verifying access control (e.g., to check whether certain IAM roles or permissions are correctly configured or to ensure only authorized users have access to specific resources) and network security tests to verify prevention of unauthorized traffic to sensitive resources to name a few. This allows security testing to be shifted left and provides feedback during development itself.
-
A pesar de que Prometheus continúa siendo una opción sólida como heramienta autogestionada de observabilidad, muchos equipos que manejan sistemas distribuidos nativos en cloud se encuentran con sus limitaciones por soportar un único nodo a medida que crecen sus metricas en cardinalidad y volumen total, así como cuando empiezan a necesitar una configuración con alta disponibilidad. Thanos complementa a Prometheus al añadir funcionalidades que le vuelven apto para monitorización a gran escala, largo plazo y alta disponibilidad. Hace esto por ejemplo, al introducir componentes que leen datos desde instancias de Prometheus y los guardarán en almacenes de objetos, manejan retención y compactación en el almacenamiento de objetos y federan las búsquedas a través de múltiples instancias de Prometheus. Nuestros equipos han notado que la migración desde Prometheus es descomplicada, debido a que Thanos mantiene compatibilidad con la API de consultas de Prometheus. Esto significa que pueden seguir utilizando los tableros existentes, herramientas de alertas y otras herramientas que se integran con la API de consultas de Prometheus. A pesar de que nuestros equipos han tenido éxito con Thanos, también recomendamos tener en consideración Cortex, como otra opción para extender las funcionalidades de Prometheus.
-
Yalc es un sencillo repositorio local de paquetes JavaScript y una herramienta para publicar y utilizar paquetes en un entorno de desarrollo local. Es una alternativa más fiable que el comando npm link, que tiene algunas limitaciones. Yalc es útil cuando se trabaja con múltiples paquetes, especialmente cuando algunos utilizan yarn y otros npm. También es útil para probar los paquetes localmente antes de publicarlos en un registro remoto. Según nuestra experiencia, Yalc es valioso en una configuración multi-paquete y acelera flujos de trabajo en el front-end y de otras aplicaciones basadas en JavaScript.
Evaluar
-
ChatGPT sigue captando atención. Imaginativos casos de uso y enfoques innovadores de prompting están expandiendo su utilidad con el paso del tiempo. GPT4, el modelo de lenguaje grande (LLM) que impulsa ChatGPT, ahora también tiene la capacidad de integrarse con herramientas externas como repositorios de gestión de conocimientos, entornos de codificación en sandbox o búsquedas web. La reciente introducción de ChatGPT Enterprise puede ayudar a disminuir la preocupación sobre temas de propiedad intelectual, a la vez que proporciona característicasempresariales como el seguimiento de uso y una mejor gestión de usuarios mediante SSO.
Aunque la capacidad de ChatGPT paraescribir código ha sido muy elogiada, creemos que las organizaciones deberían considerar usarlo en todo el ciclo de vida del software para mejorar la eficiencia y reducir errores. Por ejemplo, ChatGPT podría proporcionar nuevas perspectivas o dar sugerencias adicionales para tareas tan diversas como el análisis de requisitos, diseño arquitectónico o ingeniería inversa de sistemas legacy. Creemos no obstante que ChatGPT es más adecuado para ser usado como entrada a procesos — como ayuda para un primer borrador de historias o una plantilla para tareas de codificación — en lugar de una herramienta que produzca resultadostotalmente elaborados. Dicho esto, y con sus capacidades mejorando cada semana, algunas tareas de programación ahora pueden ser completamente posibles mediante preguntas cuidadosamente formuladas, lo cual es un arte en sí mismo.
-
En el ámbito de asistentes de código potenciados por IA, Codeium es uno de los productos más prometedores. De manera similar a Tabnine, Codeium intenta abordar algunas de las más grandes preocupaciones que las compañías tienen con respecto a los asistentes de código: Reducen un poco la angustia acerca del uso de licencias de código abierto, ya que no entrenan a sus modelos con código de repositorios con licencia no permisiva. También ofrecen auto hospedado de la herramienta de manera tal que no tengas que enviar fragmentos de código a un servicio de terceros. Codeium se destaca por su amplio soporte en entornos de desarrollo integrado (IDE en inglés) y servicios para notebooks, y aunque no ha estado en el mercado tanto tiempo como GitHub Copilot o Tabnine, nuestras primeras impresiones del producto han sido positivas.
-
Hace tiempo que somos defensores de ramas de desarrollo de corta duración que son integradas frecuentemente en la rama principal del código, preparada para ser desplegada en cualquier momento. Esta práctica de desarrollo basada en trunk-based development va muy de la mano con integración continua y, cuando las condiciones lo permiten, se obtienen ciclos de feedback más rápidos y un flujo de desarrollo más eficiente. Sin embargo, no todo el mundo está a favor de este enfoque, y muchas veces tenemos que adaptar nuestro estilo a las prácticas de nuestros clientes. Esto incluye crear ramas de larga duración junto con pull requests que se deben revisar y aprobar manualmente antes de ser fusionados en la rama principal. En estas situaciones, utilizamos la nueva funcionalidad GitHub merge queueque nos permite encolar pull requests e integrarlos en una rama especial en el orden en que se recibieron. También tenemos la opción de automatizar nuestros propios merge checks para evitar commits incompatibles. Básicamente simula trunk-based development (aunque las PR no se hayan fusionado aún en la rama principal del código) y permite al equipo probar sus cambios junto con su contexto sin tener que esperar a que se apruebe ese pull request. Con GitHub merge queue, obtienes los beneficios del trunk-based development incluso cuando no puedes practicarlo por completo.
-
Google Bard es un chatbot de IA generativa desarrollado por Google AI. Similar a ChatGPT, es conversacional y capaz de comunicarse y generar texto similar a como lo haría un humano en respuesta a una amplia variedad de directrices y preguntas. Bard funciona con el Modelo de Lenguaje Pathways (PaLM 2) de Google, que es un amplio modelo de lenguaje (LLM) entrenado en un conjunto de datos masivo de texto y de código. Bard es capaz de generar texto, traducir idiomas, escribir diferentes tipos de contenido creativo y responder preguntas de manera informativa.
Bard también puede ser utilizado como herramienta de guía para el desarrollo de software. A veces, a nuestros desarrolladores les ha resultado útil obtener algunas sugerencias de código o buenas prácticas y configuraciones de infraestructura para diferentes escenarios. También experimentamos con Bard para las traducciones de idiomas del Radar y obtuvimos resultados decentes para crear el primer borrador del texto. Aunque la herramienta aún está en desarrollo, por lo que puede ser un poco más lenta aún en comparación con ChatGPT, animamos a los desarrolladores a explorar la herramienta y evaluar sus potenciales beneficios.
-
Google Cloud Workstations es la oferta de entorno de desarrollo en la nube (CDE por sus siglas en inglés) de GCP. Ofrece entornos de desarrollo en contenedores totalmente gestionados a los que se puede acceder a través de SSH, HTTPS, VS Code y Jetbrains, entre otros, brindando a los desarrolladores la ilusión de conectarse a un entorno local. Google Cloud Workstations permite a los administradores hacer que los entornos de desarrollo en contenedores formen parte de una red privada y que sean accesibles de forma pública o privada. Esta capacidad de modificar las configuraciones de red, junto con el soporte para crear entornos con imágenes personalizadas o predefinidas, hace que, en nuestra opinión, valga la pena evaluar Google Cloud Workstations para las organizaciones que buscan una solución CDE segura dentro de su propio entorno de GCP. Si está considerando Google Cloud Workstations, le recomendamos que pruebe su configuración de red antes de implementarla ampliamente, ya que la alta latencia puede convertirse en una fricción real para la experiencia del desarrollador de estos contenedores.
-
Gradio es una biblioteca de código abierto de Python que permite la creación rápida y sencilla de interfaces interactivas basadas en web para modelos de aprendizaje automático. Una interfaz gráfica de usuario sobre modelos de aprendizaje automático permite a audiencias no técnicas una mejor comprensión de las entradas, restricciones y resultados. Gradio admite muchos tipos de entradas y salidas — desde texto e imágenes hasta voz — y se ha convertido en una herramienta de referencia para la creación rápida de prototipos y la evaluación de modelos. Gradio te permite alojar fácilmente tus demos en Hugging Face o ejecutarlas localmente y permitir que otros accedan a tu demo de forma remota mediante una URLXXXXX.gradio.app. Por ejemplo, el famoso experimento DALL-E mini utiliza Gradio y está alojado en Hugging Face Spaces. Nuestros equipos han estado utilizando con éxito esta biblioteca para experimentación y prototipado, por eso la incluimos en Assess.
-
KWOK (Kubernetes WithOut Kubelet) es una herramienta para simular el ciclo de vida de nodos y cápsulas (pods) falsos para probar el plano de control (control plane) de un clúster de Kubernetes. Es difícil realizar una prueba de estrés en controladores y operadores personalizados de Kubernetes sin tener un clúster considerablemente grande. Sin embargo, con KWOK puedes establecer de forma sencilla un clúster con miles de nodos en una portátil sin que este consuma altos recursos de procesador o de memoria. Esta simulación permite distintas configuraciones de tipos de nodos y de cápsulas para probar una variedad de escenarios y casos extremos. Si necesitas un clúster real para probar tus operadores y Custom Resource Definitions (CRDs), recomendamos kind o k3s; pero si solo necesitas simular un alto número de nodos falsos, entonces te animamos a considerar KWOK.
-
Llama 2, de Meta, es un potente modelo de lenguaje gratuito tanto para investigación como para uso comercial. Está disponible como modelo pre entrenado en bruto y, perfeccionado, como Llama-2-chat para conversación y Code Llama para completar código. Dado que está disponible en varios tamaños — 7B, 13B, y 70B — Llama 2 es una buena opción para un LLM auto-gestionado, si quiere controlar sus datos.
Meta describe Llama 2 comoopen source, una afirmación que ha suscitado algunas críticas. La licencia y la política de uso aceptable de Meta imponen restricciones al uso comercial para algunos usuarios y también restringen el uso del modelo y el software para determinados fines. Los datos de entrenamiento de Llama 2 no son abiertos, lo que puede dificultar la comprensión y modificación del modelo. Dicho esto, se agradece la disponibilidad de un modelo potente y capaz, al menos de formasemiabierta.
-
Maestro es una nueva herramienta multi-plataforma de automatización de test UI con tolerancia integrada a la inestabilidad y variancia en tiempos de carga en aplicación debido a la conexión y a factores externos. Con una sintaxis YAML declarativa, hace más fácil escribir y mantener los test automatizados para aplicaciones móviles. Soporta aplicaciones navitas iOS y Android, aplicaciones React Native y Flutter, así como una variedad de herramientas para automatizar interacciones complejas de UI mobile, como tapping, scrolling o swipping. Maestro se distribuye como un único binario para un fácil uso, corre en modo interpretado y facilita autorizar tests nuevos gracias a herramientas como el modo continuo. A Maestro todavía le faltan herramientas específicas como soporte para dispositivos iOS, pero la herramienta está evolucionando rápidamente.
-
Github Copilot es una herramienta muy útil para ayudar con la codificación durante el desarrollo de software. Debajo del capó, los LLM pueden potenciar experiencias perfectas para los desarrolladores a través de asistencia de código en línea, refinamiento de código, soporte conversacional en el IDE y mucho más. La mayoría de estos modelos son propietarios y sólo se pueden utilizar mediante servicios de suscripción. La buena noticia es que puedes utilizar varios LLM de código abierto para codificar. Si se encuentra en un entorno donde necesita crear su propio servicio de asistencia a la codificación (como en una industria altamente regulada), considere modelos como StarCoder y WizardCoder. StarCoder se entrena con un gran conjunto de datos mantenido por BigCode, y Wizardcoder es un modelo StarCoder refinado con Evol-Instruct.
Hemos usado StarCoder en nuestros experimentos y lo encontramos útil para generar elementos estructurados de ingeniería de software como código, YAML, SQL y JSON. Según nuestros experimentos, encontramos que ambos modelos son receptivos al aprendizaje en contexto usando ejemplos de few-shot en el mensaje. No obstante, para tareas específicas (como la generación de SQL para una base de datos específica como Postgres), los modelos necesitaban ajustes. Recientemente, Meta dio a conocer su Code Llama, una versión especializada en código de Llama 2. Asegúrese de proceder con precaución al utilizar estos modelos de código abierto. Considere su licencia, la licencia del código y del conjunto de datos utilizados para entrenar el modelo. Evalúe cuidadosamente estos aspectos antes de elegir cualquiera de estos LLM de codificación para su organización.
-
OpenCost s un proyecto de código abierto para monitorizar los costes de infraestructura desglosados con granularidad a nivel de objetos Kubernetes (pods, contenedores, clústers, etc.), incluyendo diversos recursos dentro del clúster (CPU, GPU, RAM, almacenamiento, redes). Obtiene los datos de facturación gracias a las integraciones con múltiples APIs de proveedores cloud pudiendo ser también configurado para clústeres de Kubernetes en local. OpenCost es el motor de asignación de costes originalmente construido y aún utilizado por Kubecost, pero también se puede usar de manera independiente. Los datos de asignación de costes se pueden exportar en archivos CSV o Prometheus para un análisis y visualización adicionales. Nuestros equipos están observando de cerca el desarrollo de herramientas como OpenCost y Kubecost para que los equipos de producto y plataforma tengan acceso a los costes en organizaciones que han adoptado Kubernetes. En estas etapas iniciales, encuentran que OpenCost aún no funciona bien con ciertas cargas de trabajo como instancias puntuales de corta duración que se utilizan a menudo en pipeline de datos.
-
Hemos visto varios casos de uso para herramientas de inteligencia de código: migrar a una nueva versión de API de una librería ampliamente utilizada, comprender el impacto en una empresa de una vulnerabilidad recién descubierta en dicha librería o aplicar actualizaciones a muchos servicios creados a partir de la misma plantilla. Sourcegraph sigue siendo una herramienta popular en este espacio, y OpenRewrite es otra herramienta que queremos destacar. Aunque nuestros equipos la han utilizado sobre todo en Java para problemas limitados, como la actualización de servicios creados a través de un kit de inicio, sigue ampliando su cobertura de lenguajes y casos de uso. Nos gusta que venga con un catálogo de recetas incluido, que describen los cambios que se deben realizar, por ejemplo, para migrar versiones de frameworks comúnmente utilizados. El motor de refactorización, las recetas incluidas y los plugins de herramientas de construcción son software de código abierto, lo que facilita que los equipos usen OpenRewrite solo cuando lo necesiten. Queda por ver cómo el espacio en proceso de maduración de las herramientas de inteligencia de código, que se basan en analizar el código fuente y representarlo con un árbol de sintaxis abstracta (AST, por sus siglas en inglés), se verá afectado por los rápidos desarrollos en el espacio de los LLMs.
-
OrbStack es una forma de ejecutar contenedores de Docker en macOS; a nuestras desarrolladoras les ha parecido más ligera, rápida y fácil de configurar y usar que Docker Desktop y Colima. La herramienta está aún en desarrollo y por ello tiene menos funcionalidades, pero ya muestra un gran potencial con su simplicidad y velocidad. También puedes usar OrbStack para crear y administrar MVs de Linux en macOS.
-
Pixie es una herramienta de observabilidad para aplicaciones nativas de Kubernetes. Toma un enfoque interesante hacia la observabilidad al aprovechar eBPF para recolectar automáticamente datos de telemetría de múltiples fuentes de datos. Los datos de telemetría recolectados son guardados localmente en cada nodo y procesados de forma centralizada a través de su API de nivel de control. En general, dentro del ecosistema de Kubernetes, consideramos que merece la pena evaluar Pixie como herramienta de observabilidad.
-
Tabnine es un contendiente en el espacio agitado espacio de los asistentes de codificación. Proporciona sugerencias en línea de código y un chat directamente en el IDE. Similar a GitHub Copilot, Tabnine existe desde antes del actual auge de este tipo de herramientas y, por lo tanto, es uno de los productos más maduros de esate tipo. A diferencia de Copilot, utiliza un modelo que solo se entrena con código con licencia autorizado y ofrece una versión de hospedaje propio para organizaciones que se preocupan por enviar sus fragmentos de código a un servicio de terceros. Tabnine está disponible como versión gratuita limitada así como en versión de pago que tiene sugerencias más comprensibles y también ofrece un modo con un modelo local (aunque menos potente) que puedes usar sin conexión a Internet.
Resistir
- 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.
