Las herramientas que gestionan cambios en el código fuente, programas, documentos u otras colecciones de información se conocen con diversos nombres: control de versiones, control de revisiones, control de fuentes o gestión de código fuente son descriptores comunes. Independientemente de cómo los llamemos, estos sistemas se han vuelto cada vez más vitales en un mundo donde el software y los datos son productos esenciales.
Demanda de sistemas de control de versiones.
Los sistemas de control de versiones (VCS) se utilizan para rastrear cada cambio en el código fuente. Ayudan a los equipos de desarrollo y a otros a gestionar estos cambios a lo largo del tiempo. A medida que las presiones del mercado aceleran los esfuerzos de desarrollo para lanzar productos al mercado más rápidamente, el control de versiones se ha vuelto más importante que nunca.
«A medida que aumenta la demanda de más software, ya sea software tradicional o áreas de demanda emergentes y crecientes, como infraestructura como código, políticas como código y código generado con poco código, hay un impacto directo en la demanda de control de versiones». dice Christopher Condo, analista principal de Forrester Research.
«Dado que todo el código debe tener control de versión, cualquier aumento en la demanda [for] El software resultará en una mayor demanda de sistemas de control de versiones”, añade.
Un informe de la firma de investigación Acumen Research and Consulting espera que el mercado de sistemas de control de versiones crezca a medida que más organizaciones adopten Metodologías ágiles de desarrollo.y a medida que la colaboración y la gestión de códigos se vuelven más importantes.
Según el informe, el mercado de este tipo de productos se expandirá a una tasa de crecimiento anual compuesta estimada del 12 por ciento hasta alcanzar los 2.680 millones de dólares en 2030. La creciente adopción de sistemas de control de versiones basados en la nube también está impulsando el crecimiento del mercado, afirma.
“El control de versiones o gestión de control de fuente se diseñó originalmente para el código fuente del desarrollador”, dice Jim Mercer, vicepresidente del programa de desarrollo de software, DevOps y DevSecOps de International Data Corp.. «Pero a medida que hemos evolucionado hacia un enfoque de todo como código, con aspectos como la infraestructura como código, la seguridad como código, las redes como código, etc., hay más consumidores de control de versiones».
Con todo como código, «esto ha allanado el camino para GitOps, una metodología de desarrollo e implementación que utiliza el control de versiones de Git para gestionar toda la infraestructura de la aplicación y las configuraciones como código en el control de versiones», afirma Mercer. «Además, el código se ha convertido en la joya de la corona de las empresas digitales modernas y, por lo tanto, el control de versiones requiere más funcionalidad y rigor de seguridad para respaldar y proteger el código».
Qué buscar en un VCS
Los sistemas de control de versiones están evolucionando para satisfacer el cambiante panorama técnico y la demanda del mercado. En un nivel básico, un sistema de control de versiones permite a los desarrolladores gestionar diferentes versiones del código fuente, configuraciones y cualquier otro artefacto que cambie con el tiempo, afirma Condo. Los equipos también buscan una variedad de características clave adicionales según el tamaño y las prioridades de las organizaciones.
Una de esas características es la escalabilidad. Estos sistemas deberían poder gestionar código entre dominios y plataformas, permitiendo a los desarrolladores y otras personas dentro de una organización utilizar el mismo sistema de control de versiones, señala Mercer. La escalabilidad es especialmente importante para una empresa en crecimiento con iniciativas de desarrollo en expansión.
El rendimiento es otro punto de referencia importante. El software de control de versiones debería poder funcionar bien dondequiera que se utilice dentro de una organización, afirma Mercer.
Un sistema de control de versiones también debería tener capacidades de ramificación. Derivación permite duplicar un objeto bajo control de versión para que cada objeto pueda modificarse posteriormente por separado y en paralelo.
“A medida que se realiza el trabajo, es una práctica común crear [a] rama temporal para nuevos trabajos, para evitar interrumpir el trabajo en la rama principal”, dice Condo. «Del mismo modo, cuando un nuevo trabajo está listo para fusionarse nuevamente en una rama principal, la capacidad de fusionar una rama en una troncal es una capacidad crítica».
La colaboración también es esencial para los sistemas de control de versiones modernos. Los equipos de desarrollo a menudo trabajan en diferentes regiones y necesitan colaborar eficazmente en los proyectos. La colaboración garantiza que todos trabajen desde la misma fuente, ya sea con una única base de código o con varias ramas.
La extensibilidad a través de API seguras es otra característica a buscar. «Cada vez más, los sistemas de control de versiones son el sistema de registro para orquestar automatizaciones para activar la automatización de pruebas, implementación y lanzamiento en producción», dice Condo. «Por lo tanto, es necesario tener API seguras que puedan integrar el control de versiones con herramientas de implementación y gestión de lanzamientos para lograr una entrega continua».
Finalmente, estos sistemas deberían proporcionar integridad e historial de datos, afirma Mercer. Los usuarios deberían poder confiar en el historial de versiones del código para avanzar y retroceder según sea necesario.
Orientación sobre Git y Devops
Se han desarrollado muchos sistemas de control de versiones en los últimos 20 años, dice Mercer, incluidos Subversion, ClearCase, Mercurial y otros.
“Sin embargo, la mayoría de los equipos prefieren una solución basada en Git basada en el Proyecto de código abierto Git, por lo que las opciones principales son GitHub, GitLab y Bitbucket”, afirma Mercer. «La mayoría de los demás sistemas de control de versiones han creado puentes o integraciones con Git, dado su dominio».
La mayoría de los sistemas de control de versiones, incluidos GitLab y GitHub, han agregado funciones para evolucionar hacia plataformas devops con todas las funciones, dice Mercer. «Otros desarrollos tienden a tener que ver con la escalabilidad, el rendimiento, la seguridad y la capacidad de crear políticas para garantizar que el código fuente esté protegido contra cosas como la filtración de código, la aplicación de la procedencia digital, etc.», dice.
GitHub, GitLab y BitBucket “han evolucionado dramáticamente para convertirse más en el ‘entorno de desarrollo moderno’”, dice Thomas Murphy, director analista senior de la firma de investigación Gartner. «Ellos ejecutan la compilación, administran el proyecto, administran la documentación, pueden empaquetar, probar e implementar software».
IA generativa en el control de versiones
Murphy señala que estas plataformas ahora utilizan IA generativa asistentes para ayudar a crear y actualizar código y realizar otras tareas. Los asistentes con tecnología de inteligencia artificial ayudarán con tareas comunes, como crear mensajes de confirmación o ayudar con la ramificación y fusión, que a veces pueden volverse complicadas, dice Condo.
GitHub es uno de los líderes en lo que respecta a innovación en sistemas de control de versiones, afirma Condo. Copiloto de GitHub es una aplicación genAI que utiliza datos de GitHub para entrenar modelos de lenguaje grandes (LLM), que luego puede ayudar a los desarrolladores con sugerencias de codificación. GitLab está adoptando un enfoque similar con asistentes impulsados por IA y está trabajando arduamente para diferenciarse de GitHub, afirma.
Pero el surgimiento de genAI y cómo se capacitan los LLM es una preocupación particular para algunas organizaciones, dice Condo. “Es información pública que herramientas como GitHub Copilot utilizan código fuente de fuentes públicas. [version control] sistemas que alojan para entrenar su modelo”, dice. «Los compradores deben decidir si se sienten cómodos con eso o si preferirían que su código no se usara para ese propósito».
Las organizaciones con algoritmos sensibles o con preocupaciones de que se filtre propiedad intelectual (PI) deben buscar salvaguardas para evitar que su propiedad intelectual se utilice como datos de capacitación, dice Condo. «Si el objetivo es compartir la propiedad intelectual como un proyecto de código abierto, podría estar perfectamente bien, siempre y cuando el cliente pueda decidir», afirma.
Control de versiones basado en la nube
Otra tendencia es el cambio hacia sistemas de control de versiones basados en la nube en los últimos años, afirma Acumen. Estos servicios ofrecen beneficios como colaboración en tiempo real, accesibilidad desde cualquier lugar y costos iniciales más bajos en comparación con los sistemas locales, afirma la empresa.
GitHub, GitLab y otros repositorios en línea permiten a las organizaciones utilizar sus productos de software como servicio sin la molestia de operar un sistema de control de versiones autohospedado, afirma Condo. «Esto facilita que los equipos distribuidos colaboren en distintas geografías de formas que los sistemas autohospedados pueden encontrar más desafiantes», afirma.
Las organizaciones que optan por ejecutar su propio sistema de control de versiones local tienen sus propias preocupaciones y deben tener las habilidades y recursos necesarios para hacerlo de manera exitosa y segura, afirma Condo.
«Deben tener los recursos para operar eficazmente un VCS seguro y al mismo tiempo permitir el acceso y la colaboración con equipos en otras regiones», dice Condo. “Incluso las empresas con sede únicamente en EE. UU. y [that] hacer negocios en los EE. UU. debe tener esto en cuenta, ya que cada vez más utilizan desarrolladores remotos o aprovechan integradores de sistemas que tienen desarrolladores en otras regiones globales”.
Además de eso, ejecutar un sistema de control de versiones también significa mantenerse al día con los cambios, afirma Condo. Las plataformas de control de versiones “están en constante evolución y actualización”, afirma. «A una empresa no le servirá de nada si carece del ancho de banda o las habilidades para mantener las llaves de su reino».
Sistemas de control de versiones populares
¿Cuáles son los sistemas de control de versiones líderes en la actualidad y cómo se comparan? He aquí un vistazo rápido al campo.
Subversión Apache (SVN)
Un sistema de control de versiones y revisiones de software distribuido como código abierto bajo la licencia Apache. Los desarrolladores pueden utilizar SVN para mantener versiones actuales e históricas de archivos, incluido el código fuente, páginas web y documentación.
Bitbucket
Un servicio de colaboración y alojamiento de repositorios de código fuente basado en Git, propiedad de Atlassian. Bitbucket ofrece planes comerciales y cuentas gratuitas con una cantidad ilimitada de repositorios privados. Se utiliza principalmente para códigos y revisiones de códigos.
git
El sistema de control de versiones más utilizado. Git es una herramienta de desarrollo gratuita y de código abierto que se utiliza para la gestión del código fuente. Puede manejar proyectos de desarrollo desde pequeños hasta extremadamente grandes. El uso de Git para realizar un seguimiento de los cambios en el código fuente permite que varios desarrolladores colaboren en un proyecto de desarrollo no lineal.
GitHub
Una plataforma de GitHub de Microsoft que los desarrolladores utilizan para crear, administrar y compartir código. La plataforma utiliza el software Git, que ofrece control de versiones distribuidas de Git, así como control de acceso, seguimiento de errores, gestión de tareas y otras capacidades. La plataforma ofrece un gran repositorio de código abierto, tiene herramientas para gestionar el proyecto/comunidad de software y cuenta con un amplio conjunto de socios que lo respaldan con funciones complementarias.
GitLab
Basado en Git, GitLab es un administrador de repositorios de código abierto que se utiliza para la colaboración y el control de versiones. Los equipos pueden usarlo para gestionar proyectos, realizar un seguimiento de problemas y revisar código.
Mercurial
Una herramienta de gestión de control de código fuente distribuida y gratuita para desarrolladores de software que puede manejar proyectos de cualquier tamaño. Mercurial se creó pensando en la independencia de la plataforma.
Forzosamente
Admite Git pero ofrece un producto propietario, Helix Core. Perforce es una plataforma de control de versiones para desarrolladores que rastrea y gestiona cambios en el código fuente, activos digitales y archivos binarios de gran tamaño.
Control de versiones de Team Foundation (TFVC)
Esta plataforma de Microsoft es un sistema de control de versiones centralizado, a diferencia del control de versiones distribuido como Git. TFVC permite a los usuarios aplicar permisos granulares y restringir el acceso a un nivel de archivo.
Copyright © 2024 IDG Communications, Inc.