Ir al contenido

El contrato de datos de la integración

También en 19 idiomas

English · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Українська · Español (México) · Français (Canada) · Deutsch (Schweiz)

A locomotive and a freight car a foot apart on the same track, their couplers lined up and the brake hoses hanging below.
Imagen generada con IA

Módulo 4 de 4 del capítulo Integración y movimiento de datos, capítulo 9 del curso Data Architect. Cada módulo se sostiene por sí solo. Anterior: Prueba de entrega · Siguiente: el próximo capítulo, Migración y sincronización

La pregunta que responde este módulo: ¿cómo dejas por escrito lo que cada integración puede hacerles a los datos?

A estas alturas le hemos hecho muchas preguntas a una flecha: quién la inicia, hacia dónde se mueven los datos, con qué frescura, cuánto, qué clave, quién es dueño de cada campo, qué patrón, qué mecanismo, quién demuestra que llegó. Esas decisiones no deberían vivir solo en la cabeza del arquitecto, ni dispersas entre un diagrama, una historia en el backlog, una especificación de API, una hoja de cálculo, tres hilos de chat y la memoria de quien lo construyó. Quiero un pequeño contrato de arquitectura para cada flecha importante: el contrato de datos de la integración.

Aquí está el panorama de Steve Trucking una vez más, en los mismos lugares que en el módulo 1. En el capítulo 4 aprendimos a ver las flechas. En este capítulo hemos aprendido a preguntar qué significa cada una. Ahora dale un número a cada flecha importante.

Cada flecha importante recibe un contrato El panorama de Steve Trucking en los mismos lugares que antes, con cada flecha importante numerada como un contrato. C1, los manifiestos de Redrock que entran, con upsert en Salesforce por la clave del socio, en ámbar; C2, el estado de salida hacia Redrock; C3 y C4, los manifiestos de entrada y el estado de salida de Keystone; C5 y C6, los de Brightwave; C7, los eventos de estado de Salesforce, a través de la capa de integración, hacia Snowflake; C8, la última posición de los camiones de FleetLink; C9, los recuentos de entregas de Salesforce, a través de la capa de integración, hacia el ERP de finanzas. Debajo: nueve flechas importantes, nueve contratos; el panorama es el índice; cada número abre un contrato. ARRIBA: IDENTIDAD, APPEXCHANGE, WEB PERSONAS DERECHA: SISTEMAS INTERNOS ABAJO: CANALES DE CLIENTES ABAJO A LA DERECHA: SOCIOS Y PROVEEDORES Coordinadores de despacho 45, en 9 centros de distribución de socios Equipos de entrega ~700 en 330 camiones Atención al cliente y oficina 100: servicio, operaciones, finanzas Usuarios de socios minoristas ~300 en 3 socios Destinatarios ~1 millón al año IdP corporativo SSO solo para el personal de oficina Portal de socios minoristas Página de seguimiento INTEGRACIÓN Snowflake historial de estados, análisis FleetLink el GPS en bruto se queda aquí ERP de finanzas factura a los socios, paga a los equipos Almacenamiento de fotos 4–5 millones al año, fuera del núcleo Archivo de RouteDesk retirado; 8 años de historial Teléfono agentes de atención al cliente Correo electrónico email-to-case Proveedor de SMS y correo electrónico mensaje del día anterior, con un enlace Redrock API REST, webhooks Keystone CSV por SFTP Brightwave EDI a través de una red de terceros Salesforce Field Service, una org en EE. UU. un enlace, sin inicio de sesión solo el personal de oficina llamadas casos que entran C1 manifiestos de entrada C2 estado de salida C3 manifiestos de entrada C4 estado de salida C5 manifiestos de entrada C6 estado de salida C1 upserts, clave del socio C7 eventos de estado C7 eventos de estado C8 última posición C9 recuentos de entregas C9 recuentos de entregas fotos, desde la app de los equipos día anterior, con un enlace Salesforce una comunidad personas identidad, apps, web un sistema interno un canal de clientes la capa de integración parte del sistema que abre la conexión; la etiqueta dice qué se mueve un certificado compartido: confianza, sin llamada directa C1, el contrato que abrimos a continuación Nueve flechas importantes, nueve contratos. El panorama es el índice; cada número abre un contrato. © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

El panorama es el índice. Cada número abre un contrato.

Nueve flechas, nueve contratos. Fíjate en que cada socio tiene dos: los manifiestos de entrada y el estado de salida son integraciones distintas, con distintos iniciadores, tiempos, claves, campos y gestión de fallos. Una flecha de doble punta etiquetada “sincronización con el socio” lo escondería todo. Prefiero dos contratos claros que uno “bidireccional” vago.

Una etiqueta como “Sincronización de cuentas” no dice casi nada. ¿Envía el ERP o pregunta Salesforce? ¿Cada hora, cada noche, según ocurre? ¿Diez cuentas al día o diez millones? ¿Emparejadas por el ID de Salesforce, el número de cliente o el nombre? ¿Qué campos puede cambiar el ERP? ¿Y si falla el registro 4.291? La etiqueta esconde cada una de esas decisiones. El contrato las saca a la luz.

Las primeras líneas son las preguntas del módulo 1, ahora escritas como decisiones. Luego dos líneas que rellena el arquitecto de integración, y dos que añade la propia guía Well-Architected de Salesforce:

LíneaLa decisión
Iniciador¿Quién inicia la conversación?
Dirección de los datos¿Hacia dónde se mueven los datos de negocio?
Frescura¿Cuán actuales deben ser los datos, con una cifra?
Volumen y forma¿Cuánto, y uno a uno, por conjuntos o masivo?
Clave¿Cómo identificamos el mismo registro en los distintos sistemas?
Autoridad de escritura¿Qué sistema es dueño de qué campos, y puede escribirlos?
Patrón¿Solicitud y respuesta, disparar y olvidar, lote o eventos?
Mecanismo¿Qué lo implementa?
Prueba de entrega¿Quién demuestra que llegó, y es responsable de la recuperación?
Sensibilidad y recorrido¿Cuán sensibles son los datos, y por dónde pasan?
Cambio¿Cómo cambia el contrato sin romper el otro lado?

Amplía el inventario del panorama del capítulo 4, una fila por flecha. No es una especificación de API: los endpoints, las cargas útiles, los esquemas, la autenticación y los códigos de respuesta importan todos, más adelante. Primero quiero saber qué se supone que significa la integración para los datos de la empresa.

Las dos últimas líneas salen directamente del marco de Salesforce. Su guía de protección de datos espera “la clasificación de los datos preservada a través de las fronteras entre sistemas” y “las rutas de tránsito de los datos evaluadas para el cumplimiento de la residencia, no solo la ubicación de almacenamiento”; uno de sus antipatrones es un middleware de integración que se ejecuta en una región fuera de la frontera de cumplimiento (Data Protection Patterns (se abre en una pestaña nueva)). Y para los eventos dice que “los esquemas de eventos se convierten en contratos entre productores y consumidores”: añade campos nuevos en lugar de cambiar los existentes, y versiona de forma explícita cuando no se puede evitar un cambio incompatible (Operational Excellence (se abre en una pestaña nueva); ambas consultadas el 2026-10-27).

Ahora acércate a C1. En el módulo 1 le hicimos siete preguntas a la flecha de Redrock. Estas son las respuestas como contrato y, junto a cada línea, cómo sabremos que se cumple.

Contrato C1: los manifiestos de Redrock El contrato C1 visto de cerca: Redrock, el cliente, con su sistema de pedidos y su API REST, envía manifiestos a Salesforce, el servidor, con la capa de integración delante. Once líneas, cada una con lo que dice el contrato C1 y cómo lo comprobaremos. Iniciador: Redrock llama a través de la capa de integración; cada llamada está en el registro de integración con el ID de solicitud de Redrock. Dirección de los datos: de Redrock a Salesforce, con el estado volviendo como C2; ningún campo de estado en la carga útil de C1. Frescura: una revisión está en la orden de trabajo en 15 minutos; mide cada día el tiempo desde el envío de Redrock hasta la actualización. Volumen y forma: unas 1.100 entregas al día, un conjunto por centro de distribución cada tarde y luego revisiones sueltas, con un crecimiento del 30 % anual; recuentos diarios en un panel, con una alerta al doble. Clave: Partner_Delivery_Key__c, REDROCK-…, única, asignada por Redrock; el upsert nunca empareja dos veces, cero duplicados. Autoridad de escritura: Redrock es dueño de los artículos, la dirección y la fecha de entrega, Salesforce de la cita, el equipo y la ruta; una carga útil de prueba que cambia el equipo se rechaza. Patrón: solicitud y respuesta, por conjuntos; cada conjunto recibe resultados por registro. Mecanismo: la elección del arquitecto de integración, que encaje con las líneas anteriores; revisada contra este contrato. Prueba de entrega: Redrock, a partir de los resultados por registro, con los rechazos devueltos con sus motivos; enviados igual a aceptados más rechazados, cada tarde. Sensibilidad y recorrido: los nombres y direcciones de los destinatarios son confidenciales y se quedan en Estados Unidos; comprueba la región de la capa de integración y la conservación de los registros. Cambio: los campos nuevos se añaden, nunca se renombran, y los cambios incompatibles reciben una versión nueva; las cargas útiles antiguas siguen cargándose tras una versión. Debajo: una línea del contrato solo está terminada cuando la puedes comprobar. C1 manifiestos de entrada CLIENTE Redrock SERVIDOR Salesforce Sistema de pedidos, API REST Capa de integración delante EL CONTRATO C1 DICE CÓMO LO COMPROBAREMOS Iniciador Redrock llama, a través de la capa de integración. Cada llamada en el registro de integración, con el ID de solicitud de Redrock. Dirección de los datos De Redrock a Salesforce. El estado vuelve como C2. Ningún campo de estado en la carga útil de C1. Frescura Una revisión está en la orden de trabajo en 15 minutos. El tiempo desde el envío de Redrock hasta la actualización, cada día. Volumen y forma Unas 1.100 entregas al día: un conjunto por CD cada tarde, luego revisiones sueltas. Crece un 30 % al año. Recuentos diarios en un panel; alerta al doble. Clave Partner_Delivery_Key__c, REDROCK-…, única, asignada por Redrock. El upsert nunca empareja dos veces; cero duplicados. Autoridad de escritura Redrock: artículos, dirección, fecha de entrega. Salesforce: cita, equipo, ruta. Una carga útil de prueba que cambia el equipo se rechaza. Patrón Solicitud y respuesta, por conjuntos. Cada conjunto recibe resultados por registro. Mecanismo La elección del arquitecto de integración, que encaje con las líneas anteriores. Revisado contra este contrato. Prueba de entrega Redrock, con los resultados por registro; los rechazos vuelven con sus motivos. Enviados = aceptados + rechazados, cada tarde. Sensibilidad y recorrido Nombres y direcciones de los destinatarios: confidenciales. Se quedan en Estados Unidos. La región de la capa de integración; la conservación de los registros. Cambio Los campos nuevos se añaden, nunca se renombran. Los cambios incompatibles reciben una versión nueva. Las cargas útiles antiguas siguen cargándose tras una versión. Una línea del contrato solo está terminada cuando la puedes comprobar. © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

El contrato C1. Una línea solo está terminada cuando la puedes comprobar.

Fíjate en dos cosas. Primera, tomamos casi todas las decisiones de datos antes de elegir la tecnología. La línea del mecanismo dice “la elección del arquitecto de integración, que encaje con las líneas anteriores”, y eso es sano: qué, por qué, quién, cuánto, con qué frescura, de quién es el valor, quién demuestra que llegó. Luego el arquitecto de integración elige el mecanismo que cumple el contrato.

Segunda, mira la columna de la derecha. Cada línea tiene una prueba. “Una revisión está en la orden de trabajo en 15 minutos” se puede medir cada día. “Enviados igual a aceptados más rechazados” se puede comprobar cada tarde. Una línea del contrato que no puedes comprobar es una esperanza, no un requisito.

Primero los requisitos, luego el patrón, luego el mecanismo

Sección titulada «Primero los requisitos, luego el patrón, luego el mecanismo »

Cuando enseño integración, doy a la gente el orden en el que pensar. Primero los requisitos: la dirección de la acción, quién la inicia, que puede ser distinta de hacia dónde fluyen los datos; el origen y el destino; el tiempo, tiempo real, casi tiempo real o por lotes; y el volumen. Luego el patrón: disparar y olvidar, solicitud y respuesta, sincronización de datos por lotes, virtualización, llamada remota entrante, una actualización de la interfaz de usuario cuando cambian los datos. Luego el mecanismo. Y solo hay unas cuantas formas de entrar y salir de Salesforce: las API REST, SOAP, Bulk, Streaming y Pub/Sub, los eventos de plataforma, Change Data Capture, la mensajería saliente, las llamadas salientes desde Apex, Flow o External Services, Salesforce Connect, Heroku Connect. Esas son las puertas. Elige una solo cuando sepas qué tiene que pasar por ella.

Este es C1 recorrido en ese orden.

Del requisito al mecanismo Un embudo del requisito al mecanismo. Arriba, el requisito, el contrato C1: Redrock la inicia, revisiones en 15 minutos, unas 1.100 entregas al día, por conjuntos. Patrones descartados: disparar y olvidar y eventos, porque Redrock necesita un resultado por cada registro para demostrar la entrega, y un lote nocturno, porque las revisiones no pueden esperar. El patrón: solicitud y respuesta, por conjuntos. Mecanismos descartados: Bulk API, hecha para millones, no para 1.100; las llamadas salientes y los mensajes salientes, porque Salesforce no inicia esta flecha. Abajo, resaltado, el mecanismo: llamadas a Salesforce, un conjunto por llamada, con upsert por la clave del socio, la elección del arquitecto de integración. Debajo: requisito, patrón, mecanismo; empieza por el mecanismo y te habrás saltado la arquitectura. El requisito, contrato C1 Redrock la inicia · revisiones en 15 minutos · unas 1.100 al día, por conjuntos Set aside: Patrones disparar y olvidar y eventos: Redrock necesita un resultado por cada registro para demostrar la entrega; un lote nocturno: las revisiones no pueden esperar El patrón solicitud y respuesta, por conjuntos Set aside: Mecanismos Bulk API: hecha para millones, no para 1.100; llamadas salientes y mensajes salientes: Salesforce no inicia esta flecha El mecanismo llamadas a Salesforce, un conjunto por llamada, con upsert por la clave del socio: la elección del arquitecto de integración Requisito, patrón, mecanismo. Empieza por el mecanismo y te habrás saltado la arquitectura. © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

Requisito, patrón, mecanismo. Cada opción descartada tiene un motivo que puedes decir en voz alta.

Las dos cosas se confunden continuamente. “Usamos REST” no me dice la arquitectura: quién llama a quién, cuándo, con qué frecuencia, cuánto, qué pasa si falla. REST es un mecanismo; el contrato le da significado. Y no dejes que el mecanismo se convierta en el requisito. “Necesitamos una integración REST” probablemente no es el requisito. “Cuando se revisa una entrega, el coordinador lo ve en la orden de trabajo en 15 minutos” sí lo es. Ahora podemos diseñar: quizá REST, quizá eventos, quizá la plataforma de integración ya lo hace, quizá Salesforce debería ir a buscar el valor en lugar de guardarlo. Requisito, patrón, mecanismo. Empieza por el mecanismo y te habrás saltado la arquitectura.

Y construye para más de lo que se pide. Cada integración tiene requisitos implícitos que nadie escribe: habrá errores, los volúmenes crecerán, el negocio añadirá un segundo flujo el año que viene. Planifica para tres años, no solo para la puesta en producción. El contrato es donde esos requisitos implícitos se hacen explícitos.

Conocimiento para el examen. Separa el patrón (cómo interactúan los sistemas) del mecanismo (lo que lo implementa). Espera un escenario que describe requisitos (quién la inicia, hacia dónde se mueven los datos, con qué rapidez, cuánto) y pide el patrón o el mecanismo de Salesforce que encaja: por ejemplo, casi tiempo real desde Salesforce sin esperar respuesta apunta a los eventos de plataforma; millones de registros apunta a Bulk API.

El contrato no es solo entre sistemas. Es entre equipos. En un proyecto, el equipo de middleware construía las integraciones hacia Salesforce, y tuvimos que tomar una decisión en la primera o segunda semana: ¿llamarían a la API REST estándar de Salesforce, o a una API personalizada que construiríamos para ellos?

Con la API estándar, el equipo de middleware tiene que conocer Salesforce a fondo: tus objetos, tus campos, los valores de tus listas de selección, el orden en que hay que escribir los registros y qué significa cada error. Llaman a las API estándar, y ellos gestionan los problemas.

Un contrato entre equipos El equipo de middleware a la izquierda, Salesforce a la derecha con un objeto Work Order, un campo, Delivery_Window__c, y los valores de la lista de selección Status. Primero, con la API estándar, el equipo de middleware escribe el objeto, escribe el campo y usa directamente los valores de la lista de selección. Luego una versión renombra el campo a Arrival_Window__c, marcado "cambiado", y la flecha del equipo de middleware hacia él se vuelve roja con una X: se rompe. Por último, con una API personalizada, el equipo de middleware llama a un único endpoint, Manifest API v1, un endpoint Apex REST personalizado del que es dueño Salesforce y que registra cada llamada, marcado "el contrato"; dentro, orquesta las escrituras en el objeto, actualiza el campo renombrado y convierte los valores de la lista de selección, así que el cambio de nombre se absorbe dentro. Debajo: con la API estándar, el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia; con Apex REST personalizado, hay un solo endpoint, tu propio registro y orquestación, y código que mantienes; decide en las primeras semanas. EQUIPO DE MIDDLEWARE SALESFORCE Equipo de middleware construye la integración de Redrock Orden de trabajo el objeto Delivery_Window__c un campo Estado los valores de su lista de selección escribe el objeto escribe el campo usa los valores API estándar: el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia. Apex REST personalizado: un endpoint, tu propio registro y orquestación, y código que mantienes. Decide en las primeras semanas. CÓMO LEERLO el contrato del que es dueño Salesforce: un endpoint Apex REST personalizado © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

La API estándar: el equipo de middleware trabaja directamente con tus objetos y campos.

Añade un objeto personalizado, renombra un campo, cambia un valor de una lista de selección, y la integración se rompe, salvo que estén en tus reuniones y cambien rápido su lado.

Un contrato entre equipos El equipo de middleware a la izquierda, Salesforce a la derecha con un objeto Work Order, un campo, Delivery_Window__c, y los valores de la lista de selección Status. Primero, con la API estándar, el equipo de middleware escribe el objeto, escribe el campo y usa directamente los valores de la lista de selección. Luego una versión renombra el campo a Arrival_Window__c, marcado "cambiado", y la flecha del equipo de middleware hacia él se vuelve roja con una X: se rompe. Por último, con una API personalizada, el equipo de middleware llama a un único endpoint, Manifest API v1, un endpoint Apex REST personalizado del que es dueño Salesforce y que registra cada llamada, marcado "el contrato"; dentro, orquesta las escrituras en el objeto, actualiza el campo renombrado y convierte los valores de la lista de selección, así que el cambio de nombre se absorbe dentro. Debajo: con la API estándar, el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia; con Apex REST personalizado, hay un solo endpoint, tu propio registro y orquestación, y código que mantienes; decide en las primeras semanas. EQUIPO DE MIDDLEWARE SALESFORCE Equipo de middleware construye la integración de Redrock Orden de trabajo el objeto Estado los valores de su lista de selección Arrival_Window__c renombrado en una versión changed escribe el objeto se rompe usa los valores API estándar: el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia. Apex REST personalizado: un endpoint, tu propio registro y orquestación, y código que mantienes. Decide en las primeras semanas. CÓMO LEERLO el contrato del que es dueño Salesforce: un endpoint Apex REST personalizado © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

Una versión renombra un campo, y la integración se rompe.

The other answer is a wrapper. In Salesforce that’s usually Apex: a class exposed as a REST resource, so external applications can call your code instead of your objects (Introduction to Apex REST (se abre en una pestaña nueva), Apex Developer Guide, Winter ‘27, API version 68.0, checked 2026-10-27). Now you write your own REST contract, and the middleware team gets a single endpoint. Three things come with it: ⟲

  • Tu propio registro. No dependes solo de los registros estándar. Cada llamada entrante puede llevar una marca de tiempo y guardar su carga útil, para que veas exactamente qué llegó y puedas reproducirlo (el registro de integración del módulo 3).
  • Tu propia orquestación. Una llamada puede escribir la orden de trabajo, sus artículos y su estado en el orden correcto, dentro de Salesforce, en lugar de que el equipo de middleware haga cinco llamadas y gestione cada fallo parcial.
  • Una puerta estable. Renombra un campo, añade un objeto, cambia un valor de una lista de selección: cambias el código detrás del endpoint, y el contrato sigue igual.

El coste es real. Es código, así que hay que construirlo, probarlo y mantenerlo con buenos desarrolladores de Apex en el lado de Salesforce, y sigue ejecutándose dentro de los límites de Salesforce: la guía de Salesforce dice que las llamadas a clases Apex REST cuentan para los límites de API de la organización y que se aplican todos los límites del regulador estándar de Apex. Ahora tu equipo es dueño de una parte de la integración.

Un contrato entre equipos El equipo de middleware a la izquierda, Salesforce a la derecha con un objeto Work Order, un campo, Delivery_Window__c, y los valores de la lista de selección Status. Primero, con la API estándar, el equipo de middleware escribe el objeto, escribe el campo y usa directamente los valores de la lista de selección. Luego una versión renombra el campo a Arrival_Window__c, marcado "cambiado", y la flecha del equipo de middleware hacia él se vuelve roja con una X: se rompe. Por último, con una API personalizada, el equipo de middleware llama a un único endpoint, Manifest API v1, un endpoint Apex REST personalizado del que es dueño Salesforce y que registra cada llamada, marcado "el contrato"; dentro, orquesta las escrituras en el objeto, actualiza el campo renombrado y convierte los valores de la lista de selección, así que el cambio de nombre se absorbe dentro. Debajo: con la API estándar, el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia; con Apex REST personalizado, hay un solo endpoint, tu propio registro y orquestación, y código que mantienes; decide en las primeras semanas. EQUIPO DE MIDDLEWARE SALESFORCE Equipo de middleware construye la integración de Redrock Orden de trabajo el objeto Estado los valores de su lista de selección Arrival_Window__c renombrado en una versión changed Manifest API v1 Apex REST personalizado; registra cada llamada the contract un endpoint orquesta dentro actualizado dentro convierte dentro API estándar: el otro equipo debe conocer tu modelo de datos y cambiar cuando cambia. Apex REST personalizado: un endpoint, tu propio registro y orquestación, y código que mantienes. Decide en las primeras semanas. CÓMO LEERLO el contrato del que es dueño Salesforce: un endpoint Apex REST personalizado © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

Un endpoint Apex REST personalizado: Salesforce es dueño de un contrato más pequeño, registra cada llamada, y el cambio de nombre se queda dentro. Elegimos el contrato personalizado en más de un proyecto, porque había mucho procesamiento interno que ocultar.

Así que la pregunta de la primera o segunda semana trata tanto de personas como de tecnología: ¿conocerá el equipo externo Salesforce a fondo, y cambiará rápido cuando cambie tu modelo de datos? ¿O pones un envoltorio delante, y te haces cargo de él? Las dos respuestas pueden ser correctas. Lo que no es correcto es no decidir.

Conocimiento para el examen. Sabe cuándo exponer un endpoint Apex REST personalizado en lugar de dejar que el otro sistema llame a las API estándar: para dar a un equipo externo una interfaz estable, para orquestar varias escrituras dentro de Salesforce o para registrar tú mismo cada llamada. Conoce también el coste: código que mantener, y los límites de API de la organización y del regulador de Apex se siguen aplicando. Escríbelo en el contrato: qué interfaz, quién es su dueño y a quién hay que avisar cuando algo cambia. Para eso está la línea de cambio.

Volumen: no “alto”. Alto para un equipo son 10.000 al día, para otro 100 millones. Pon cifras: 1.100 entregas al día, un conjunto por centro de distribución cada tarde, un 30 % de crecimiento anual. Esas cifras no solo eligen el mecanismo; dan forma al almacenamiento, la automatización, los bloqueos, el uso compartido, los índices, el archivado, la monitorización y la conservación. El contrato conecta el volumen de integración con la arquitectura de datos.

Frescura: no “tiempo real”. Escribe “una revisión está en la orden de trabajo en 15 minutos”, o “el manifiesto del socio está en Salesforce al menos un día antes de su fecha de entrega”, o “la conciliación de finanzas termina cada noche antes de que empiecen los informes”. Ahora se puede probar. “Tiempo real” es un adjetivo; “en 15 minutos” es un requisito.

Clave: no enterrada en el mapeo de campos. Escribe el campo de clave, si es único, quién lo asigna y si la relación es de verdad uno a uno. Si una cosa del negocio tiene varios registros externos, nombra el diseño: añade registros, no campos, como jerarquía, pares o un objeto hijo (módulo 2 y capítulo 6). Las claves no deberían ser una sorpresa de la implementación.

Autoridad de escritura: quizá la línea de datos más importante. No “objetos: Work Order”, sino “Redrock puede escribir los artículos, la dirección y la fecha de entrega; Salesforce es dueño de la cita, el equipo y la ruta”. Ahora la integración se puede probar contra el modelo de autoridad. Si alguien añade más tarde el equipo a la carga útil de Redrock, el contrato pregunta: ¿por qué? Se convierte en un control de gobierno.

“Pero el usuario de integración puede editarlo.” Me da igual. Un usuario de integración puede tener permisos amplios porque la implementación los necesita; eso no significa que cada integración que use esa identidad deba escribir todos los campos que puede. El permiso dice puede; la arquitectura dice debe. Los buenos sistemas necesitan ambos. Y leerlo todo también tiene una cara de rendimiento: el caso de estudio de la propia Salesforce sobre un usuario de integración lento está en el capítulo 8 (Cuando va lento).

Prueba de entrega: no “TI”. Nombra el lado que sabe lo que debería llegar, y que por tanto demuestra que llegó (módulo 3). Para C1 es Redrock, a partir de los resultados por registro de Salesforce. Para C2, el estado de salida, es Salesforce, con acuses de recibo. Para una extracción programada, es el cliente que pregunta. El contrato lo hace explícito para cada flecha.

Sensibilidad y recorrido: no “seguro”. Di qué hay en la carga útil y cuán sensible es (C1 lleva nombres, direcciones y números de teléfono de los destinatarios), y cada lugar por el que pasa: la capa de integración, sus registros, su cola de reintentos. Los datos que deben quedarse en un país también tienen que viajar por él.

Por dónde viajan los datos El recorrido del contrato C1, con cada lugar donde reposan los datos de los destinatarios. En Estados Unidos: Redrock, con los nombres, direcciones y números de teléfono de los destinatarios, envía los manifiestos de C1 a la capa de integración, que procesa en Estados Unidos y hace upsert en Salesforce, una organización en Estados Unidos; la capa de integración guarda una copia de cada carga útil en su registro de integración durante 30 días. En otra región: la capa de integración aparca los fallos en una cola de reintentos alojada allí, en coral y marcada "fuera de la frontera". Debajo: cada lugar donde reposan los datos es una copia con una ubicación; los datos que deben quedarse en Estados Unidos también tienen que viajar por allí. EN ESTADOS UNIDOS OTRA REGIÓN Redrock nombres, direcciones y teléfonos de los destinatarios Capa de integración procesa en Estados Unidos Salesforce una organización en Estados Unidos Registro de integración cada carga útil, conservada 30 días Cola de reintentos cargas útiles fallidas, alojadas en otra región outside the boundary C1 manifiestos upserts una copia de cada carga útil aparca los fallos Cada lugar donde reposan los datos es una copia con una ubicación. Los datos que deben quedarse en Estados Unidos también tienen que viajar por allí. CÓMO LEERLO una copia fuera de la frontera © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

Cada lugar donde reposan los datos es una copia con una ubicación. Cuenta los registros y las colas.

Cambio: no “ya nos coordinaremos”. Di cómo evoluciona el contrato: los campos nuevos se añaden, nunca se renombran; un cambio incompatible recibe una versión nueva; el otro lado recibe un aviso. Un contrato que no puede cambiar con seguridad acabará rompiéndose en silencio.

La implementación también tendrá un mapeo de campos: el campo A de Redrock al campo B de Salesforce, transformaciones, tipos, valores por defecto. Útil. El contrato está un nivel por encima: por qué se mueven los datos, quién es su dueño, con qué frescura, cuánto, cómo se identifican, quién puede cambiarlos, qué forma tiene la interacción, quién demuestra que llegaron. Le da su contexto al mapeo.

El panorama tiene Salesforce Norteamérica, Salesforce Europa y la organización de una empresa adquirida. Quizá estemos consolidando, sincronizando registros seleccionados, manteniendo algunos datos en local o construyendo una capa común de clientes o de análisis. No empieces por “¿cómo sincronizamos tres organizaciones?”. Empieza por los contratos. Para cada movimiento: ¿qué datos, en qué dirección, qué organización tiene la autoridad, cuál es la clave de empresa, con qué frescura, qué volumen, por qué copiarlo, quién puede escribirlo, quién demuestra que llegó? Que todas las cajas tengan un logotipo de Salesforce no simplifica las preguntas sobre los datos. Siguen siendo sistemas separados. El capítulo 14 trata los patrones de varias organizaciones.

Y a veces el contrato correcto dice no lo muevas. ¿Un gran conjunto de datos externo que solo se necesita de vez en cuando, con la autoridad en otro sitio, caro de copiar, que cambia constantemente y que sobre todo se consulta? ¿Para qué sincronizar otra copia? La virtualización puede ser mejor (Parte 3). El contrato fuerza esa conversación porque pregunta por qué existe la copia. Recuerda FleetLink en el módulo 1: C8 lleva solo la última posición, porque el contrato preguntó por qué se iban a copiar 73 millones de lecturas al año.

El contrato también debería sobrevivir a la tecnología.

El contrato sobrevive a la tecnología Redrock a la izquierda, la capa de integración en el centro, las órdenes de trabajo de Salesforce a la derecha. Primero, los manifiestos de Redrock entran a través del Middleware A, elegido en la puesta en producción, y se hace upsert en Salesforce; bajo el middleware está el contrato C1: 15 minutos, la clave del socio, los campos de Redrock, la prueba de entrega. Tres años después, el Middleware B sustituye al Middleware A, marcado "sustituido", y lleva los mismos manifiestos y upserts; el contrato C1 está marcado "sin cambios". Debajo: el mecanismo cambia; el contrato sobrevive casi entero; esa es la señal de que separaste la arquitectura de la implementación. REDROCK CAPA DE INTEGRACIÓN SALESFORCE Redrock manifiestos, API REST Middleware A elegido en la puesta en producción Contrato C1 15 minutos · la clave del socio · los campos de Redrock · prueba de entrega Salesforce Órdenes de trabajo manifiestos entrantes upserts El mecanismo cambia; el contrato sobrevive casi entero. Esa es la señal de que separaste la arquitectura de la implementación. CÓMO LEERLO el contrato: la arquitectura © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

En la puesta en producción: el Middleware A y el contrato C1.

Sustituye el middleware dentro de tres años, y Redrock sigue siendo dueño de los artículos, el coordinador sigue necesitando las revisiones en 15 minutos, la clave es la misma, el volumen se conoce, la prueba de entrega sigue importando.

El contrato sobrevive a la tecnología Redrock a la izquierda, la capa de integración en el centro, las órdenes de trabajo de Salesforce a la derecha. Primero, los manifiestos de Redrock entran a través del Middleware A, elegido en la puesta en producción, y se hace upsert en Salesforce; bajo el middleware está el contrato C1: 15 minutos, la clave del socio, los campos de Redrock, la prueba de entrega. Tres años después, el Middleware B sustituye al Middleware A, marcado "sustituido", y lleva los mismos manifiestos y upserts; el contrato C1 está marcado "sin cambios". Debajo: el mecanismo cambia; el contrato sobrevive casi entero; esa es la señal de que separaste la arquitectura de la implementación. REDROCK CAPA DE INTEGRACIÓN SALESFORCE Redrock manifiestos, API REST Middleware B tres años después replaced Contrato C1 15 minutos · la clave del socio · los campos de Redrock · prueba de entrega unchanged Salesforce Órdenes de trabajo manifiestos entrantes upserts El mecanismo cambia; el contrato sobrevive casi entero. Esa es la señal de que separaste la arquitectura de la implementación. CÓMO LEERLO el contrato: la arquitectura © 2026 Twinshark LLC · stevetecharc.com
Clic para ampliar

Tres años después: un middleware nuevo, el mismo contrato.

El mecanismo cambia; el contrato sobrevive casi entero. Esa es la señal de que separaste la arquitectura de la implementación.

Podríamos rellenar ahora de C2 a C9: el estado de vuelta a cada socio, los archivos de Keystone, el EDI de Brightwave, FleetLink, Snowflake, el ERP de finanzas. Los dejo a propósito para el Checkpoint 2, donde tomamos el panorama de la Parte 1 y le aplicamos cada capítulo de diseño de la Parte 2. Por ahora, tienes la herramienta y un ejemplo terminado.

Más allá del examen: lo que cambia la IA. No documentes un agente como “el agente tiene herramientas”. Cada acción importante es un contrato de integración: a qué sistema llama, qué clave identifica el registro, qué puede leer y escribir, quién es dueño de esos campos, el volumen esperado, qué pasa al reintentar o ante un fallo parcial, qué evidencia se guarda, cuán sensibles son los datos y adónde van. Quien llama es probabilístico e invoca operaciones empresariales deterministas, así que mantén la identificación de los registros, la autoridad de escritura, la gestión de fallos y la observabilidad fuera de la discreción del modelo.

El contrato se convierte en una herramienta de revisión

Sección titulada «El contrato se convierte en una herramienta de revisión »

Cuando cada flecha importante tiene un contrato, una revisión deja de ser “¿el diagrama se ve bien?” y pasa a ser: ¿conocemos el iniciador y la dirección de los datos?, ¿la frescura es medible?, ¿conocemos los ceros?, ¿hay una clave estable?, ¿la autoridad es explícita?, ¿el patrón encaja con el requisito y el mecanismo con el patrón?, ¿quién demuestra que llegó?, ¿por dónde viajan los datos?, ¿cómo cambiará? Si la respuesta a alguna es “no lo hemos decidido”, bien: has encontrado trabajo de arquitectura antes de que producción lo encontrara por ti.

  • Qué integraciones son lo bastante importantes para necesitar un contrato explícito, y sus números en el panorama.
  • El iniciador, la dirección de los datos, la frescura medible y el Número de Ceros de cada una, antes de elegir la tecnología.
  • La clave entre sistemas y la autoridad de escritura a nivel de campo que preservan la identidad y la gestión como maestro.
  • El patrón, el mecanismo y quién demuestra la entrega en cada dirección.
  • Cuán sensibles son los datos, por dónde viajan y cómo cambia el contrato sin romper el otro lado.
  • Si los datos deberían moverse en absoluto, y si el contrato sobrevive a un cambio de tecnología.

Un panorama simplifica la complejidad, lo cual es útil, hasta que una flecha esconde las decisiones que mantienen la confianza en los datos. Así que dibuja la flecha, numérala y dale un contrato que puedas comprobar. Ahora significa algo, y cuando cambia la implementación, la arquitectura no desaparece con ella. Esa es la diferencia entre documentar una integración y diseñar el movimiento de los datos de la empresa.