El arte de gestionar versiones de Salesforce
Exploramos mejores formas de gestionar versiones de Salesforce
Por Randalyn Hill-Coffer·Revisado por el equipo de Blue Canvas··6 min de lectura
Este artículo explica cómo afrontar el desafío de lanzar actualizaciones de software rápidamente sin dejar de garantizar que el producto sea confiable y esté libre de errores. Exploraremos distintas estrategias para gestionar versiones de Salesforce, analizaremos el equilibrio entre la velocidad de implementación y la calidad, y veremos cómo implementar actualizaciones pequeñas de forma periódica puede mejorar las operaciones de tu empresa.
Estas son nuestras 5 conclusiones clave:
- Equilibrar la rapidez de implementación con la calidad del software es fundamental para gestionar versiones con éxito.
- Programar en producción puede parecer rápido, pero compromete considerablemente la calidad.
- Aunque son prácticos, los conjuntos de cambios pueden ser lentos y propensos a errores debido a su naturaleza manual.
- Los scripts de Ant ofrecen velocidad y calidad moderadas: permiten automatizar, pero aún requieren mantenimiento.
- Un enfoque basado en Git ofrece alta velocidad y calidad gracias al seguimiento automatizado, las implementaciones diferenciales y el control de versiones integrado.
Los equipos de software pueden comprender fácilmente la necesidad de tomar precauciones adicionales para limitar las interrupciones del servicio.
Pero Spolsky señala que también hay un costo asociado a tener demasiado inventario. Empresas como Toyota han hecho grandes esfuerzos para asegurarse de tener justo la cantidad necesaria de inventario y nada más. Tener demasiado inventario es problemático porque inmoviliza recursos de forma improductiva. Si tienes $100,000 en inventario, son $100,000 que no se destinan a algo útil. (Curiosamente, muchas empresas usan Salesforce y Force.com para gestionar su inventario).
Como dice Spolsky:
El «costo» del inventario de código es enorme. Puede equivaler a seis o doce meses de trabajo atascado en la línea de producción que todavía no llega a manos de los clientes. Esto podría marcar la diferencia entre tener un producto de vanguardia (iPhone) o intentar ponerse al día constantemente (Windows Phone).
¿Su sugerencia?
No dejes que las funcionalidades terminadas se acumulen sin generarte ingresos. Mejora tu proceso de implementación para entregar funcionalidades a tus clientes en meses, no en años. Si ya haces entregas mensuales, busca cómo hacerlas semanales. Sigue elevando el estándar con implementaciones cada vez más frecuentes de cambios cada vez más pequeños.

CALIDAD Y VELOCIDAD
Entregar el inventario rápidamente es una ventaja competitiva para los equipos. Las funcionalidades que se acumulan sin implementarse resultan costosas, al igual que el exceso de inventario. Sin embargo, hay otra prioridad que todo responsable de versiones conoce bien: la calidad. Quieres evitar que se acumule demasiado inventario, pero también quieres garantizar que tu producto sea de alta calidad. No puedes simplemente sacrificar la calidad en nombre de la velocidad. Lanzar rápido es una ventaja competitiva; ofrecer software lleno de errores, no. Este es un problema que la mayoría de los equipos de software sienten muy de cerca. Cualquiera que haya lanzado una versión con un error de cierta importancia sabe que los usuarios se harán oír con toda claridad si las cosas no funcionan como esperan.
Gestionar ambas prioridades es el arte de la gestión de versiones. Todo responsable de versiones debe lidiar con esto. Pero el desafío es especialmente grande en el ecosistema de Salesforce, donde una amplia variedad de participantes puede intervenir en el desarrollo y la gestión de versiones: administradores, desarrolladores, arquitectos, analistas de negocio, gerentes de producto, etc.
Entonces, ¿qué opciones tiene un responsable de versiones de Salesforce?
PROGRAMAR EN PRODUCCIÓN
Calidad: Muy bajo Velocidad: Rápido a corto plazo
A estas alturas, no hace falta convencerte de por qué esto no es una buena idea, ¿verdad?
CONJUNTOS DE CAMBIOS
Velocidad: Bajo Calidad: Bajo
Conjuntos de cambios son la opción de gestión de versiones incluida en Salesforce. Te permiten migrar código y cambios de configuración de un sandbox de Salesforce a otro mediante una interfaz gráfica de usuario proporcionada por Salesforce.
Los conjuntos de cambios son prácticos porque vienen incluidos en Salesforce. No tienes que configurar nada personalizado ni prever el mantenimiento de scripts propios. Puedes tener bastante confianza en que los conjuntos de cambios seguirán funcionando a medida que se publiquen nuevas versiones de Salesforce.
Pero, lamentablemente, los conjuntos de cambios obtienen una puntuación bastante baja en nuestras métricas de velocidad y calidad.
Los conjuntos de cambios son lentos porque requieren mucha intervención manual. Tienes que llevar un registro manual de todo lo que cambió en una versión determinada. (Vemos que muchos equipos usan hojas de cálculo para hacerlo). Esto consume tiempo y resulta poco eficaz, porque es muy fácil olvidar registrar algún cambio. Además, cualquier despliegue de Salesforce tiene un árbol de dependencias bastante complejo. Los conjuntos de cambios ofrecen algunas funciones para esto, pero no siempre son del todo precisas. Por eso, los despliegues no siempre se completan sin problemas y pueden requerir varios intentos. Por último, el proceso es lento porque exige muchos clics. Con los conjuntos de cambios, no existe una forma automatizada de simplemente pedir: “Muéstrame todas las diferencias entre mi organización de desarrollo y el entorno de UAT en el que quiero desplegar”. Automatizar solo esto ayudaría a acelerar considerablemente el proceso.
Pero los conjuntos de cambios también tienen deficiencias en cuanto a calidad. Los procesos manuales son propensos a errores humanos: a menudo se pasan por alto dependencias clave y el despliegue genera problemas inesperados. Además, los conjuntos de cambios no ofrecen control de versiones ni de código fuente. Esto dificulta la reversión de cambios. También complica la colaboración. Sin control de código fuente, no hay forma de garantizar que algunos desarrolladores o administradores no sobrescriban el código de otros.

SCRIPTS DE ANT
Velocidad: Moderado Calidad: Moderado
El herramienta de migración de Force.com, también conocida coloquialmente como “scripts de Ant”, es otra opción a la que recurren muchos responsables de versiones. La herramienta de migración de Force.com se basa en Java/Ant y se puede ejecutar desde la línea de comandos. Permite que los desarrolladores de Salesforce interactúen con la API de metadatos de Salesforce para desplegar cambios. Es una gran herramienta.
Lo bueno de los scripts de Ant es que permiten mucha más automatización que los conjuntos de cambios. Incluso te permiten acercarte más a la integración continua para Salesforcegracias a este nivel de automatización.
El mayor desafío de los scripts de Ant es que todavía no alcanzan la máxima velocidad posible, porque se basan en Java y dependen en gran medida de consultas a las API de Salesforce, que no siempre ofrecen un buen rendimiento en organizaciones grandes. También es difícil realizar despliegues diferenciales que escriban únicamente los cambios realmente nuevos.
El flujo de trabajo de la herramienta de migración de Force.com suele favorecer versiones de mayor calidad porque presupone que usas algún tipo de herramienta de control de código fuente para gestionar las versiones. Los scripts de Ant también automatizan más tareas y eliminan la posibilidad de errores humanos. Sin embargo, siguen requiriendo bastante mantenimiento a medida que se publican nuevas versiones de la API y de la plataforma. Por eso, es posible que la automatización resulte menos confiable de lo que esperabas al principio.
La otra gran pregunta para los responsables de versiones es cómo capacitar a todo el equipo para usar el flujo de publicación de versiones con la herramienta de migración de Force.com. ¿Cuál es la mejor forma de garantizar que todo el equipo siga el proceso sin desviarse? Por ejemplo, si un administrador actúa por su cuenta y hace un cambio rápido directamente en una organización, puede interrumpir tu flujo de publicación de versiones. Por eso, debes tener esto en cuenta al evaluar la calidad.
Gestión de versiones de Salesforce con Blue Canvas
Velocidad: Alto Calidad: Alto
Sí, obviamente tenemos una preferencia, pero déjanos explicarte. Blue Canvas está diseñado para optimizar el equilibrio entre velocidad y calidad para los responsables de versiones de Salesforce. Como Blue Canvas se basa en Git desde su núcleo, ofrece varias ventajas. La primera es la velocidad. Git está escrito en C y, por lo tanto, es muy rápido. Blue Canvas también puede minimizar la cantidad de veces que necesitamos consultar directamente las API de Salesforce, lo que acelera aún más tu proceso de publicación de versiones. Por último, los despliegues con Git son incrementales, por lo que podemos desplegar solo los cambios que difieren en cada despliegue. Esto representa una mejora frente a los scripts de Ant, que requieren volver a cargar todo.
Blue Canvas también se destaca en calidad porque mantiene un alto nivel de automatización. Blue Canvas registra automáticamente todo lo que cambia en tu organización. Puedes consultar rápidamente qué cambió o comparar las diferencias entre entornos. No dependes de capacitar a tu equipo para usar un proceso nuevo. Además, como Blue Canvas se basa en Git, el control de versiones se integra automáticamente en tu flujo de gestión de versiones. Esto te ofrece copias de seguridad continuas y una resolución segura de conflictos de fusión. Si alguna vez necesitas revertir los cambios, puedes hacerlo. Y no tienes que preocuparte de que los desarrolladores o administradores sobrescriban el trabajo de otros sin posibilidad de recuperarlo. Todo se respalda automáticamente en Git.



