Integrare de sisteme

Programele pe care le plătești deja, făcute să lucreze împreună

Conectez sistemele pe care le folosești deja, ca datele să circule singure, fără copy-paste, și ca două programe să nu mai fie în dezacord despre care versiune e cea bună.

Magazin onlineREST
ERPSOAP
ContabilitateREST
Firmă de curieratREST
Procesator de plățiHOOK
O singură sursă de adevărNimic tastat de două oriNimic pierdut la cădereÎnlocuibil mai târziu
O singură versiuneacelași răspuns, oriunde te uiți
Preț per proiectstabilit după ce vedem ce permit sistemele tale
Construit să fie schimbatun furnizor poate fi schimbat fără rescriere

Recunoști situația

Ai nevoie de asta dacă

  • Aceleași date se introduc de două ori, în două sisteme, de doi oameni.
  • Cineva exportă dintr-un program și importă în altul, manual.
  • Două sisteme spun altceva și nimeni nu știe care are dreptate.
  • Un instrument pe care îl plătești e aproape nefolosit, pentru că nu ajunge nimic în el.
  • Afli că ceva nu a ajuns niciodată atunci când te întreabă un client.

Feluri de conexiune

Șase feluri în care datele pot trece dintr-un sistem în altul

Care e potrivit ține de ce permit sistemele tale și de cine trebuie să poată schimba ce. Asta se decide înainte să se construiască ceva, nu după.

Transferuri într-un sens

Datele trec dintr-un sistem în altul, după program sau la un eveniment.

Sincronizare în două sensuri

Ambele părți pot schimba, iar o regulă decide care câștigă.

Verificări pe loc

O valoare e verificată în celălalt sistem chiar în momentul în care e tastată.

Importuri în masă

Istoricul mutat o dată, curățat, fără să îl retasteze nimeni.

Notificări de eveniment

Celălalt sistem ne spune în clipa în care se întâmplă ceva, în loc să întrebăm noi.

Exporturi

Datele tale ies într-un format pe care alt sistem, sau alt dezvoltator, îl poate citi.

GET/orderslistează ce a intrat
POST/orderscreează una
PUT/stock/{sku}actualizează un stoc
POST/invoicesemite un document
GET/deliveries/{id}unde e coletul
POST/hooks/statuscealaltă parte ne anunță

Doar un exemplu. Ce expune o conexiune depinde de sistemele implicate.

O singură sursă de adevăr

Când două sisteme țin același fapt, unul dintre ele decide

Cele mai multe probleme de integrare nu sunt tehnice. Încep atunci când nimeni nu a spus care sistem are dreptate despre o adresă de client, un preț sau un stoc, iar amândouă continuă să îl schimbe.

  • Pentru fiecare fapt comun, un sistem e sursa și celelalte îl urmează
  • Conflictele se rezolvă după o regulă pe care ai convenit-o, nu după cine a salvat ultimul
  • Regula e scrisă, în cuvinte, înainte să se construiască ceva
  • Unde un fapt trebuie să fie editabil în două locuri, aceea e o decizie, nu un accident
Fapt comunDecis de
Datele clientuluiSursă
Prețuri și condițiiSursă
StocuriUrmează
Status comandăUrmează
Numere de facturăDoar citire

Verificat la introducere

Datele greșite sunt prinse în timp ce se tastează, nu peste luni

Un cod, un număr de înregistrare, o referință de client: pot fi verificate în sistemul care le deține chiar în momentul în care cineva le introduce, în loc să fie descoperite greșite când se întoarce o factură.

  • Verificat în timp ce se tastează, în sistemul care deține răspunsul
  • Un mesaj clar când nu se potrivește, în cuvinte, nu un cod
  • Nimic salvat pe jumătate corect, care să aștepte să fie găsit mai târziu
  • Dacă verificarea nu poate rula, omul e anunțat, nu lăsat să treacă în tăcere

O valoare, verificată

Tastatăde un om
Verificatăla cine o deține
Acceptatăsau explicată
S-a potrivit cu registrulAcceptată
Nu s-a potrivitExplicată
Registrul nu răspundeMarcată

Când cade cealaltă parte

Nu se pierde nimic pentru că altcineva a avut o cădere

Sistemele la care te conectezi vor fi uneori indisponibile. E normal. Ce nu e normal e să pierzi munca aflată în tranzit, sau să afli peste săptămâni că o zi de date nu a ajuns niciodată.

  • Ce nu poate fi livrat e ținut, în ordine, nu aruncat
  • Se trimite din nou când revine cealaltă parte, fără să retasteze nimeni
  • Un om e anunțat dacă rămâne căzută mai mult decât s-a convenit
  • Poți vedea ce așteaptă, și de când

La ce te poți uita când ceva merge prost

09:14:02INFOPOST /orders/sync 201 118ms

09:14:02INFOorder 4417 queued for accounting

09:14:03INFOaccounting accepted 4417 204 96ms

09:15:11WARNdelivery timeout after 5000ms, holding 3 items

09:15:11INFOretry 1/5 scheduled in 30s

09:15:41ERRretry 1/5 failed, connection refused, still holding

09:15:41INFOalert sent, queue depth 3

09:23:07INFOdelivery responding again 200 142ms

09:23:07INFO3 held items sent in order, 0 dropped

09:23:08INFOqueue empty, nothing retyped

Același lucru, de două ori

Un mesaj care ajunge de două ori nu creează două comenzi

Sistemele se repetă. O notificare pornește din nou, o reluare reușește totuși, cineva apasă de două ori. Dacă nu e tratat, așa ajunge un client cu două facturi pentru o singură livrare.

  • Același eveniment, primit de două ori, are efectul unuia singur
  • Fiecare mesaj poartă o identitate, ca o repetare să fie recunoscută
  • Semnăturile sunt verificate, ca să fie crezut doar expeditorul real
  • Duplicatul e înregistrat, nu aruncat în tăcere

Evenimentul, prima dată

{

"event_id": "evt_8f21c4",

"type": "order.confirmed",

"order_id": 4417,

"signature": "verified",

"applied": true

}

Același eveniment, din nou

{

"event_id": "evt_8f21c4",

"applied": false,

"reason": "already applied",

"orders_created": 1

}

Se poate pleca

O conexiune de care te poți desprinde

Furnizorii se schimbă: prețurile cresc, un serviciu se închide, găsești unul mai bun. Fiecare conexiune se construiește în spatele graniței ei, așa că înlocuirea ei e o bucată de muncă, nu o rescriere a felului în care merge afacerea ta.

  • Regulile de business stau în sistemul tău, nu în interiorul conexiunii
  • Un furnizor poate fi înlocuit fără să se atingă restul
  • Ce e conectat, și cum, e scris undeva
  • Datele de acces sunt ale tale, în conturile tale, din prima zi

Ce rămâne al tău

Conexiunea

Un furnizor, o graniță

Înlocuibilă singură

Fără reguli de business în ea

Documentată, nu ținută minte

Al tău oricum

Regulile afacerii tale

Datele de pe ambele părți

Conturile și datele de acces

Codul sursă

Cum decurge

De la două sisteme care se ignoră la unul care e de acord

  1. Vedem ce e permis

    Ce expune fiecare sistem, ce refuză și ce acces ai efectiv.

  2. Stabilim regulile

    Care parte are dreptate despre ce, și ce se întâmplă când se contrazic.

  3. Construim și testăm

    Întâi pe mediul de test al celeilalte părți, niciodată direct pe date reale. Legătura însăși trece printr-un middleware propriu, cu straturi de securitate, pe un VPS cu tunel VPN.

  4. Urmărim, apoi lăsăm

    Merge pe trafic real cât timp încă se uită cineva, înainte să capete încredere.

Cât costă

Ce stabilește prețul

Preț per proiectstabilit după ce am văzut ce permit sistemele tale. O conexiune care citește o valoare și o sincronizare în două sensuri între trei sisteme nu sunt aceeași muncă.
Trei lucruri îl mișcăcâte sisteme sunt implicate, dacă au o cale de intrare utilizabilă și cât istoric trebuie mutat la început.

Întrebări

Întrebări frecvente

Ce sisteme poți conecta?

În principiu, orice sistem care oferă o cale de intrare: ERP, CRM, magazin online, contabilitate și facturare, curieri, procesatori de plăți, email. Dintre cele pe care le-am conectat deja în producție: SmartBill, Netopia și Stripe. Care dintre ale tale se califică e printre primele lucruri pe care le aflăm, pentru că decide și ce e posibil, și cât costă.

Faci integrare cu e-Factura?

Da, și rulează deja în producție la un client: factura pleacă în XML către SPV, iar clientul o primește și în PDF, pe mail. Facturarea e locul unde se vede cel mai repede la ce e bună o conexiune, pentru că documentul se emite o dată, în sistemul care îl deține, și ajunge singur și la stat, și la clientul tău.

Ce fac dacă sistemul meu nu are cale de intrare?

Atunci ne uităm la ce altceva oferă: un export programat, o bază de date pe care avem voie să o citim, un fișier pe care îl poate lăsa undeva. Dacă nu există nici asta, îți spun, în loc să construiesc ceva fragil care se rupe prima dată când cealaltă parte schimbă un ecran.

Cât costă?

Prețul se stabilește per proiect, după ce am văzut ce permit sistemele tale. Trei lucruri mișcă cifra: câte sisteme sunt implicate, dacă au o cale de intrare utilizabilă și cât istoric trebuie mutat la început.

Ce fac dacă datele nu se potrivesc azi?

Acela e punctul normal de plecare, și e mai bine să știi înainte decât după. O parte din muncă e să decidem ce se întâmplă cu înregistrările care se contrazic: care versiune câștigă, ce se corectează și ce se lasă în pace pentru că e istorie.

Ce se întâmplă când cade cealaltă parte?

Ce nu poate fi livrat e ținut în ordine și trimis din nou când revine cealaltă parte. Un om e anunțat dacă indisponibilitatea ține mai mult decât s-a convenit. Poți vedea ce așteaptă și de când, ca să nu ghicească nimeni.

Cine primește acces la sistemele mele, și în ce condiții?

Acordul de confidențialitate se semnează înainte să primesc vreun acces, nu după. Ordinea asta e deliberată: cine lasă pe cineva în sistemele lui își asumă ceva, iar semnătura vine prima tocmai ca să nu fie nevoie să te bazezi pe cuvântul meu. Accesul e cât îmi trebuie ca să văd ce e acolo, ține cât lucrăm împreună, și îl poți revoca oricând.

Cine deține conexiunea dacă plec?

Tu. Conturile și datele de acces sunt ale tale din prima zi, codul sursă e al tău, iar felul în care e conectat totul e scris undeva, nu ținut în capul cuiva. Fiecare conexiune stă în spatele graniței ei, așa că alt dezvoltator poate înlocui una fără să atingă restul.