Pe această pagină
Două companii cliente au ambele un câmp numit „activ”. Pentru una, înseamnă că un client a cumpărat ceva în ultimul an. Pentru cealaltă, înseamnă că acordul de servicii este în vigoare. Un conector comun poate muta corect ambele câmpuri. O regulă comună care le tratează drept aceeași stare comercială poate fi greșită pentru una dintre ele. Este un exemplu ilustrativ, nu un raport dintr-o implementare.
O discuție despre platforme comune și implementări locale descrie o companie care reutilizează mult din infrastructură, dar lucrează substanțial și în mediul fiecărui client. Procentele ei sunt specifice acelei companii. Întrebarea arhitecturală generală este unde se opresc mecanismele comune și unde începe sensul local.
Separă contractul de transport de contractul comercial
Un contract de transport poate spune: autentifică-te la sursă, citește înregistrările schimbate, păstrează identificatorii, reîncearcă sigur și expune eșecurile. Aceste comportamente pot fi implementate o dată și testate repetat. Sunt valoroase fiindcă fiecare integrare are nevoie de un traseu de încredere pentru date.
Un contract comercial spune care înregistrare este autoritară, ce înseamnă o stare, când este permisă o acțiune și cine poate corecta o greșeală.
- Transport comun identitate · reîncercare · ID eveniment
livrează un eveniment valid
- Politică locală sens · consimțământ · timp
decide dacă acțiunea este permisă
- Acțiune autorizată scriere · audit
înregistrează rezultatul
Contractul comercial depinde de flux. Poate folosi aceeași sursă și destinație ca altă companie clientă și totuși poate cere alt răspuns.
Ia legătura dintre magazin și sistemul de email. Platforma poate oferi primirea evenimentelor, deduplicarea și un istoric de audit. Responsabilul de flux trebuie să definească dacă „abonat” înseamnă permisiune pentru un anumit scop de marketing, dacă o cumpărare oprește un mesaj despre coșul abandonat și cum afectează schimbarea consimțământului mesajele aflate deja în coadă. Acestea nu sunt funcții ale conectorului care pot fi ghicite din numele câmpurilor.
Maparea Tajo ilustrată mai jos copiază direct trei câmpuri. Observă decizia care lipsește: niciun rând nu definește permisiunea pentru marketing. Reutilizarea transportului economisește muncă, dar responsabilul fluxului trebuie să precizeze ce stare permite fiecare acțiune. O mapare ordonată arată golul fără să îl rezolve.
Verifică sincronizarea înainte de rulare
Sincronizează modificările clienților cu platforma mea de e-mail.
Sincronizarea clienților
| Câmp sursă | Câmp destinație | Regulă |
|---|---|---|
email | EMAIL | Direct |
first_name | FIRSTNAME | Direct |
last_name | LASTNAME | Direct |
Previzualizarea sintetică a reușit
3 câmpuri mapate · Nicio scriere în destinație
Aspect ilustrativ bazat pe instrumentele de mapare Tajo. Previzualizarea sintetică și ciorna salvată nu activează sincronizarea.
| Strat comun | Strat local |
|---|---|
| Autentificare și reîmprospătarea tokenului | Care persoană sau sistem poate accesa fluxul |
| Transportul evenimentelor și reîncercări | Ce eveniment reprezintă tranziția comercială |
| Identificatori stabili și deduplicare | Ce înregistrări desemnează același client real |
| Jurnalizare și căi de recuperare | Cine rezolvă o stare contestată și cum |
| Validarea contractului | Ce înseamnă valorile câmpurilor și când pot conduce la acțiune |
Tabelul este o limită de proiectare, nu afirmația că toate implementările pot fi împărțite atât de curat.
Reutilizarea se rupe când ascunde dezacordul
O platformă generică adaugă adesea un câmp de configurare pentru fiecare excepție. La început, asta pare să păstreze reutilizarea. Mai târziu, nimeni nu mai poate spune dacă o setare este o opțiune tehnică, o constrângere juridică sau o decizie comercială. Nucleul comun devine o telecomandă pentru alegeri care nu îi aparțin.
Caută un invariant stabil. „Nu aplica de două ori același eveniment sursă la aceeași înregistrare din destinație” poate trăi într-un motor comun. „Trimite o reducere când un client devine activ” nu poate fi comun până când „activ”, publicul permis și politica ofertei nu au responsabili. Motorul poate executa o politică aprobată, dar nu ar trebui să inventeze una.
Asta ajută și la întreținere. Dacă un API se schimbă, echipa platformei poate actualiza adaptorul și testele lui. Dacă se schimbă definiția clientului eligibil, responsabilul comercial poate actualiza politica și exemplele de test fără să aștepte rescrierea transportului. O limită clară duce fiecare schimbare la persoana care are autoritate asupra ei.
Reutilizează mecanisme fără să aplatizezi sensul
Unele reguli locale adaugă cost. O platformă fără contract reutilizabil devine o colecție de scripturi personalizate. Răspunsul este să identifici mecanismele repetate înainte de a abstractiza sensurile repetate. Un mecanism comun bine proiectat ar putea accepta o condiție tipizată, momentul evenimentului și o limită a acțiunii, lăsând definiția comercială a condiției în fluxul local.
Limita trebuie testată pe cazuri reale. Ia un eveniment normal, un duplicat, o corecție întârziată și o permisiune revocată. Întreabă ce strat răspunde pentru fiecare rezultat. Dacă un eșec nu poate fi atribuit, abstracția ascunde responsabilitatea. Dacă o companie clientă nouă obligă o enumerare comună „activ” să capete mai multe interpretări fără legătură, tipul comun este prea larg.
Articolul complementar despre implementare examinează dacă o capacitate funcționează într-un flux real. Acesta întreabă ce poate fi construit o singură dată fără a șterge sensul fluxului.
Interfața dintre straturi ar trebui să fie suficient de explicită ca să respingă o presupunere greșită. Un motor comun poate cere un ID de eveniment, timpul sursei, actorul și scopul declarat înainte de a accepta o cerere de acțiune. Fluxul local poate furniza politica ce decide dacă acțiunea este permisă. Dacă scopul lipsește, motorul ar trebui să respingă cererea; dacă politica este ambiguă, responsabilul local trebuie să o clarifice. Este o cale practică de a păstra reutilizarea fără a transfera autoritatea comercială către cod generic. Documentează contractul cu un exemplu acceptat și unul respins, apoi testează-le pe amândouă ori de câte ori se schimbă unul dintre straturi.
Un conector reutilizabil ar trebui să facă sensul local mai ușor de exprimat și mai sigur de executat. Nu ar trebui să facă două promisiuni diferite să pară identice doar fiindcă au câmpuri cu același nume.
Întrebări Frecvente
Ce ar trebui să reutilizeze de obicei o platformă de integrare?
Mecanisme stabile precum tipare de autentificare, transport, idempotentă, reîncercări, jurnalizare și verificări de contract pot fi adesea comune dacă cerințele de bază corespund.
Ce trebuie să rămână specific fiecărei afaceri?
Sensul câmpurilor, autoritatea sursei, regulile de consimțământ, cerințele de timp și dreptul de a acționa pe baza unei stări trebuie stabilite pentru afacerea și fluxul respectiv.
Cum pot echipele testa limita?
Încearcă să exprimi un flux nou prin mecanismele existente. Dacă asta schimbă sensul comercial sau ascunde excepții în configurări generice, păstrează logica locală și fă interfața explicită.