Este texto se tradujo utilizando el sistema de traducción automatizado de Salesforce. Realice nuestra encuesta para proporcionar comentarios sobre este contenido y díganos qué le gustaría ver a continuación.

Salesforce Customer 360 Platform proporciona una potente arquitectura multiusuario dirigida por metadatos a cada instancia de arrendatario de Salesforce individual (también conocida como “organización”). Este documento de conceptos básicos de arquitectura proporciona una descripción general de áreas donde la arquitectura subyacente de Salesforce Platform crea una consideración clave para las arquitecturas de soluciones creadas en la plataforma.

Existen tres áreas esenciales a comprender al diseñar arquitecturas en Salesforce Platform:

En Salesforce Platform, una transacción puede instanciarse mediante la ejecución de código y/o una operación de base de datos. Una competencia fundamental para diseñar en Salesforce es comprender cómo define y controla la plataforma las transacciones para arrendatarios. Para mantener los recursos para todos los arrendatarios, Salesforce impone límites a cada arrendatario, calculados por transacción y por organización.

A nivel transaccional, Salesforce establece límites reguladores y ejecución para garantizar que las instancias individuales de ejecución de código y transacciones de base de datos no monopolicen recursos de computación compartidos. A nivel de toda la organización, Salesforce establece límites basándose en edición y tipo de función. Los límites de toda la organización también incluyen un cálculo continuo del uso de API entre todas las transacciones en la organización, que están sujetas a límites de API.

Echemos un vistazo con más detalle a dos partes clave de las transacciones en Salesforce Platform: el contexto de ejecución y la manipulación de la base de datos.

Salesforce calcula los límites transaccionales basándose en un concepto de contexto de ejecución. Es importante comprender que para aplicaciones de Salesforce, esto no es exclusivo de ejecuciones de código personalizado en una única organización de Salesforce. El contexto de ejecución se basa en el motor de tiempo de ejecución de plataforma y todo el código disponible para el motor de tiempo de ejecución para un arrendatario concreto. Esto significa que el código personalizado definido dentro de la organización de un arrendatario, el código de paquetes instalados con esa organización, así como el código contenido en los servicios de plataforma de Salesforce pueden crear una instancia de una transacción. La plataforma distingue entre diferentes tipos de código Apex y calcula límites reguladores basándose en esas distinciones.

Consulte la guía del desarrollador de Apex para obtener más información sobre los límites de transacciones Apex.

Cuando una transacción implica manipulación de la base de datos, un orden de ejecución integrado prescribe cómo se comportarán las diferentes partes de la configuración y el código de su organización. Una clave para comprender cómo utilizar correctamente el orden de ejecución en sus aplicaciones de Salesforce es comprender la sólida integridad de datos que proporciona este comportamiento para sus aplicaciones de Salesforce.

Salesforce Order of Execution Diagram

La plataforma expone variables de contexto para el estado de operaciones de base de datos en forma de variables de contexto desencadenantes. Es importante comprender que estas variables de contexto de desencadenador describen estados de tiempo de ejecución para todas las transacciones de base de datos en la organización de Salesforce, independientemente de que se hayan definido o no desencadenadores Apex personalizados en esa organización. Están disponibles para herramientas declarativas como Salesforce Flow.

En Salesforce, los datos no se confirman (ni se finalizan las transacciones de datos) hasta que se completen correctamente los comportamientos finales después del desencadenador descritos en el orden de ejecución. Esto significa que cualquier error fatal o comportamiento de descalificación durante una transacción de datos que se produzca antes de contextos o después de contextos hará que la plataforma revierta todas las operaciones de datos dentro de la transacción. Los cambios solicitados en datos de registro no se confirman en la base de datos y no se ejecuta ninguna lógica posterior a la confirmación. (Apex expone métodos de base de datos para permitir un control más granular de los puntos de ahorro y el comportamiento de reversión.)

Un antipatrón clave a evitar en su arquitectura de Salesforce es intentar un acceso directo o sustituir el orden de ejecución integrado de la plataforma.

Para obtener un vistazo más detallado a la lógica detrás de estos comportamientos de integridad de datos integrados, consulte Por dentro y Por fuera: Transacciones en el blog de Ingeniería de Salesforce.

Al elegir cómo personalizar y ampliar dentro de una organización de Salesforce, es importante comprender qué se considerarán datos y qué se considerarán metadatos desde el punto de vista de Salesforce Platform. Para profundizar en la arquitectura subyacente detrás de esta distinción de datos/metadatos, en el documento Fundamentos de Arquitectura multiusuario de plataforma.

Esta distinción afectará a muchos aspectos del ciclo de vida de desarrollo para su aplicación, como: si un artefacto se copiará o no en entornos de desarrollo sandbox, cómo se puede migrar a otros entornos, si puede o no formar parte de un paquete.

La tabla siguiente ofrece una comparación rápida del rendimiento de los datos frente a los metadatos en lo que se refiere a partes clave del ciclo de vida de la aplicación:

Comportamiento Data Metadata
Copiado desde producción en entornos sandbox No*
API de migración por metadatos No Sí**
Migrar por carga de datos No
Puede incluirse en paquetes No Sí**
Cuenta en los límites de almacenamiento de datos No
* Los entornos sandbox de copia completa y copia parcial permiten la replicación de datos desde producción.
**Algunos tipos de metadatos no están disponibles para su uso con la API de metadatos y/o paquetes. Puede encontrar excepciones en el Informe de cobertura de metadatos.

A veces esta distinción es bastante obvia. Por ejemplo, los registros individuales en una organización de Salesforce son datos. Los diversos sObjects de una organización son metadatos.

Las distinciones pueden ser más complejas cuando se trata de funciones de configuración de organización. Un ejemplo clave es Configuración personalizada frente a Tipos de metadatos personalizados. Ambas funciones le permiten configurar información en una organización de modo que esté disponible fácilmente en tiempo de ejecución y se pueda manipular y gestionar de formas similares a registros de base de datos. Ambas funciones están pensadas para permitir patrones de diseño altamente flexibles y acoplados libremente en código y automatización. Sin embargo, Configuración personalizada se almacena en una organización como datos y Tipos de metadatos personalizados se almacenan como metadatos.

Puede determinar si algo son metadatos viendo si aparecen en el Informe de cobertura de metadatos. Este informe también le informará sobre los comportamientos clave de desarrollo e implementación para un tipo concreto de metadatos.

Existen muchas API de Salesforce Platform. Las API de Salesforce Platform admiten diferentes formatos y protocolos de datos, varios tipos de operaciones y tiempos. Algunas API le permiten interactuar con los datos en una organización de Salesforce, mientras que otras admiten interacciones con los metadatos en una organización concreta. Algunas API se crean específicamente para gestionar grandes volúmenes de transacciones, mientras que otras no. Salesforce actualiza el número de versión para todas las API de Salesforce Platform con cada versión.

Una parte clave de la arquitectura de aplicaciones sólida es asegurarse de que los desarrolladores de aplicaciones utilicen la API (y la versión de API) correctas para un caso de uso concreto. Deberá tener en cuenta los límites de API integrados para sus organizaciones de Salesforce, muchos de los cuales están determinados por la edición y la activación de funciones. Las API de Salesforce Platform admiten el uso retrocompatible, lo que significa que las implementaciones con una versión concreta deben funcionar con estabilidad y coherencia, incluso cuando se publiquen nuevas versiones de API. Si desea incorporar funciones nuevas o modificadas desde una nueva versión de API, es posible que tenga que volver a factorizar su aplicación antes de actualizar referencias a la nueva versión de API.

Las muchas API de Salesforce Platform diferentes, junto con la velocidad de las versiones de API de Salesforce, agrega una complejidad significativa al ciclo de vida de cualquier aplicación que utilice API de Salesforce. Tendrá que planificar evaluaciones regulares de las referencias de API de Salesforce Platform en sus aplicaciones y priorizar los ciclos de mantenimiento de API planificados para mantener las aplicaciones ejecutándose de forma predecible y apropiada.