Imaginar una nueva fuente de verdad
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Describir en qué difieren los modelos para el desarrollo de organizaciones y el enfoque modular de desarrollo de paquetes.
- Enumerar las ventajas del desarrollo de paquetes.
- Describir las características clave de un paquete.
Todo el mundo es una organización
Como alguna vez dijo el famoso dramaturgo (¿o quizás fue un visionario de Salesforce?): “Todo el mundo es una organización”. Tradicionalmente, el centro del mundo ha sido su organización de producción y desempeñó gran parte de su desarrollo dentro de los confines de un sandbox o una organización de producción. (Si es un socio de AppExchange, entonces su mundo es algo diferente. De todos modos, las herramientas que presentamos en esta unidad también están disponibles para usted, así que puede seguir leyendo).
Cómo gestionó los cambios tradicionalmente
Si completó el módulo El modelo de desarrollo de la organización, tal vez recuerde a Calvin Green, el administrador de Zephyrus Relocation Services. A medida que Zephyrus fue creciendo, también aumentó la complejidad de su organización de producción. Green empezó el camino de adoptar herramientas modernas de desarrollo de Salesforce para gestionar este cambio creciente y el ciclo de vida de las aplicaciones de su equipo.
Veamos de qué modo podría trabajar su equipo de desarrollo usando el modelo de desarrollo de la organización.
Usted es el prospecto de desarrollo de una compañía dinámica de alta tecnología. Para el lanzamiento, necesita personalizar la aplicación central de CRM y desarrollar una aplicación interna para su compañía. El primer paso de desarrollo es garantizar que cuenta con la instantánea más actualizada de su organización de producción. En el modelo basado en la organización, la fuente de verdad para el código, la configuración y la personalización es la organización de producción.
Sin importar qué esté desarrollando, en última instancia creará implementaciones dentro del ámbito de su organización de producción. Como se ve en el diagrama, incluso si hay varios equipos trabajando en diferentes proyectos de desarrollo, realizan las tareas de desarrollo y lanzamiento de las actualizaciones con la misma implementación. Todo se incluye en un solo archivo package.xml
.
Para el primer lanzamiento, supongamos que está trabajando en dos proyectos nuevos:
(1) Proyecto |
(1) Desarrollo |
(2) API de metadatos (package.xml) |
---|---|---|
Extensiones/personalizaciones de CRM (primer lanzamiento) |
Objeto personalizado (agregar) Campo personalizado (agregar) Formato de página (agregar) Flujo de trabajo (agregar) |
Clase de Apex: 1 Página de Visualforce: 1 Objeto personalizado: 2 Campo personalizado: 2 Formato de página: 1 Flujo de trabajo: 1 |
Aplicación Time-Off Manager (primer lanzamiento) |
Objeto personalizado (agregar) Campo personalizado (agregar) Clase de Apex (agregar) Página de Visualforce (agregar) |
(3) Se lanza todo junto en la organización de producción. |
Para el segundo lanzamiento, supongamos que está haciendo pequeñas actualizaciones. De cualquier modo, lanzará e implementará ambos proyectos al mismo tiempo en la organización de producción:
(1) Proyecto |
(1) Desarrollo |
(2) API de metadatos (package.xml) |
---|---|---|
Extensiones/personalizaciones de CRM (primer lanzamiento) |
Objeto personalizado (actualizar) Flujo de trabajo (actualizar) |
Página de Visualforce: 1 Objeto personalizado: 2 Flujo de trabajo: 1 |
Aplicación Time-Off Manager (primer lanzamiento) |
Objeto personalizado (actualizar) Página de Visualforce (actualizar) |
(3) Se lanza todo junto en la organización de producción. |
Los desarrolladores y administradores de lanzamientos visualizan la organización como un conjunto entremezclado de código y personalizaciones. Para que quede claro, veamos de nuevo el diagrama. La implementación final no está dentro del ámbito de la aplicación Time-Off Manager o solo de las extensiones de CRM: incluye todos los cambios hechos en la organización.
Durante el desarrollo, debe hacer un seguimiento de lo que va cambiando, para asegurarse de saber qué implementar en la organización de producción. Sus cambios se entremezclan con lo que otros ya cambiaron, por lo que este proceso puede ser complejo y algo manual. Si usa el control de orígenes en este proceso, la misma percepción de conjunto entremezclado de código y personalizaciones se refleja en el sistema de control de orígenes. Deberá alinear el repositorio de origen con la organización y no con parte de ella (por ejemplo, la aplicación Time-Off Manager).
Ahora bien, ¿qué ocurre si ese conjunto entremezclado se vuelve tan complejo que necesita una forma más efectiva de gestionar los cambios? ¿Seguirá un modelo de desarrollo más tradicional para ofrecer y lanzar las aplicaciones y soluciones?
Gestionar cambios con el desarrollo de paquetes
A medida que Zephyrus fue creciendo, sus lanzamientos se volvieron cada vez más complejos. Al contar con múltiples equipos de desarrollo y administradores de Salesforce, Calvin buscaba una forma de desacoplar los proyectos como vagones de un extenso tren de lanzamiento. El modelo de desarrollo de paquetes facilita el ciclo de vida completo de desarrollo y aporta estas ventajas:
- Mejorar el desarrollo y la colaboración de los equipos.
- Es un proceso de desarrollo modular con dependencias especificadas entre los paquetes.
- Se crean versiones para colaborar con la gestión de cambios.
- Facilita las pruebas automatizadas y la integración continua.
- El ciclo de lanzamiento se vuelve más eficiente y ágil.
- Mejora la sincronización del sistema de control de versiones (VCS) mediante el seguimiento de cambios en las funciones de configuración.
- Aporta una visibilidad y claridad más detalladas sobre la gestión de cambios de la organización de producción.
¿Qué significa esto? En lugar de código y personalizaciones para la organización, puede crear un paquete (un conjunto lógico de código). Un paquete es un artefacto de lanzamiento, conformado por un grupo de código y personalizaciones relacionados.
El agrupamiento de componentes en un paquete puede representar muchas cosas. El paquete puede ser un conjunto de personalizaciones creado para asistir a un equipo de ventas. Un paquete puede ser los componentes de Lightning, los objetos y los flujos de trabajo de una aplicación que se está desarrollando en la organización. Un paquete puede ser las extensiones que crea en torno a un paquete administrado que instaló desde AppExchange.
Con este nuevo proceso, podrá estructurar su organización en un conjunto de paquetes. Al organizar sus fuentes y metadatos en paquetes, comprenderá mejor las relaciones entre los componentes de metadatos de su organización. Cuanto más crezca su organización, más importante será este proceso, así que planifíquelo de antemano y siempre piense en cómo estructurar su organización.
Un VCS es el mejor amigo del desarrollador y desempeña una función integral en el ciclo de vida del desarrollo de paquetes. Se almacena toda la fuente de sus paquetes en un repositorio de control de orígenes, donde se conserva la fuente de verdad. Se crean organizaciones borrador (de desarrollo) a partir de esa fuente, para poder trabajar específicamente en su paquete. Ofrecemos funciones de seguimiento de los cambios para supervisar lo que creó, actualizó y eliminó en la organización de desarrollo. Puede extraer fácilmente la fuente modificada a su sistema de archivos y verificarla en el VCS.
El desarrollo de paquetes aporta flexibilidad en la gestión de sus equipos y lanzamientos. Puede asignar equipos que sean propietarios de un paquete especifico. Los equipos de desarrollo pueden trabajar por separado y crear hacia un lanzamiento del paquete, y no hacia un lanzamiento de actualizaciones para la organización. Con este modelo ágil, tiene lanzamientos más frecuentes e independientes, como puede ver en el flujo de desarrollo, creación e implementación.
Para nuestros clientes empresariales, contamos con un tipo de paquete especial, llamado paquete desbloqueado, que es especialmente apropiado para aplicaciones de negocio internas.
La flexibilidad de los paquetes desbloqueados
Veamos de qué modo los paquetes desbloqueados modifican la forma en que se lanzaría la personalización de CRM y la aplicación Time-Off Manager.
En este ejemplo, para el primer lanzamiento, vamos a generar dos proyectos nuevos. Ambos tienen la versión 1.0, y pueden crearse y luego implementarse en la organización de producción por separado mediante la API de metadatos.
(1) Desarrollo |
(2) Creación |
(3) Lanzamiento (package.xml) |
---|---|---|
Extensiones/personalizaciones de CRM v1.0 |
Objeto personalizado (agregar) Campo personalizado (agregar) Formato de página (agregar) Flujo de trabajo (agregar) |
Objeto personalizado: 1 Campo personalizado: 1 Formato de página: 1 Flujo de trabajo: 1 |
Aplicación Time-Off Manager v1.0 |
Objeto personalizado (agregar) Campo personalizado (agregar) Clase de Apex (agregar) Página de Apex (agregar) |
Clase de Apex: 1 Página de Apex: 1 Objeto personalizado: 1 Campo personalizado: 1 |
Para el próximo lanzamiento, puede crear e implementar una vez más cada versión de paquete de forma independiente en la organización de producción. De esta forma, puede mantener versiones únicas y diferentes para cada artefacto de lanzamiento (paquete).
(4) Desarrollo |
(5) Creación |
(6) Lanzamiento (package.xml) |
---|---|---|
Extensiones/personalizaciones de CRM v1.1 |
Objeto personalizado (actualizar) Flujo de trabajo (actualizar) |
Objeto personalizado: 1 Campo personalizado (sin cambios) Formato de página (sin cambios) Flujo de trabajo: 1 |
Aplicación Time-Off Manager v2.0 |
Objeto personalizado (actualizar) Página de Apex (actualizar) |
Clase de Apex (sin cambios) Página de Apex: 1 Objeto personalizado: 1 Campo personalizado (sin cambios) |
Este proceso también se extiende a la integración y la entrega continuas. La creación de paquetes permite generar planes de pruebas diseñados especialmente para ese proyecto en particular. Puede automatizar el plan de pruebas para garantizar un nivel continuo de calidad ejecutando pruebas en varios entornos a medida que se modifica la fuente a través del VCS.
Recursos
- Guía del desarrollador: Salesforce CLI Command Reference
- Guía del desarrollador: Guía del desarrollador de Salesforce DX
- Trailhead: Inicio rápido: Salesforce DX
- Trailhead: Paquetes desbloqueados para clientes