API integracije: povezivanje sistema i izrada API-ja

Kada dva sistema treba da razmene podatke bez čoveka između njih, piše se integracija. To se pojavljuje i na sajtu, i u Windows programu, i u Office dodatku — ali je svuda isti posao i nosi isti rizik: polovina koda zavisi od tuđeg sistema koji ne kontrolišete i koji se menja bez najave. Zato je izdvojen kao zasebna usluga, sa svojom analizom i svojom cenom.

Tuđa strana

Pola posla nije u vašim rukama

Kod koji ja pišem mogu da popravim za sat vremena. Servis sa druge strane ima svoja pravila, svoje kvote i svoje kvarove, i tamo se čeka. Sve što sledi na ovoj stranici napisano je zbog te jedne rečenice.

Svuda ista

Prolazi kroz sve ostalo što radim

Ista integracija se ugrađuje u sajt, u Windows program ili u Office dodatak. Menja se samo ekran oko nje, a težina posla ostaje ista.

Dokaz

Vidi se šta je poslato

Svaka integracija dobija evidenciju: šta je poslato, šta je vraćeno i kada. Bez toga se posle svake nesuglasice raspravlja bez dokaza, a sa njom se za minut vidi na čijoj strani je greška.

Šta radim

Šest vrsta posla. Prve tri su najčešće i najviše ih ima u portfelju.

Povezivanje sa tuđim servisom

Vaš softver zove tuđi: naplata karticom, knjigovodstveni servis, kurirska služba, dobavljačev cenovnik, SMS ili elektronska pošta. Piše se poziv, obrada odgovora, ponašanje kada odgovora nema i evidencija koja ostaje za proveru.

Dvosmerna sinhronizacija

Dva sistema drže iste podatke i oba ih menjaju — sajt i ERP, prodavnica i skladište, CRM i knjigovodstvo. Ovde se najviše posla krije u pitanju čija izmena je novija i šta se radi kada su obe strane menjale isti zapis.

Popravka integracije koja je stala

Radilo je godinama, pa je tuđa strana ugasila staru verziju, promenila način prijave ili uvela ograničenje broja poziva. Ulazim u zatečeni kôd, nalazim šta se promenilo i vraćam vezu u rad, bez obzira ko ju je pisao.

Vaš sopstveni API

Kada tuđi softver treba da uzima podatke od vas — partner, aplikacija, sajt ili klijentov sistem — pravi se vaš API: pristupni ključevi, prava, ograničenje broja poziva i uputstvo po kome tuđi programer radi bez zvanja telefonom.

Naplata i elektronske fakture

Plaćanje karticom, povraćaji i pretplate, kao i slanje na sistem elektronskih faktura. Ovo je poseban slučaj jer greška ne košta vreme nego novac, pa se radi sa ponovnim pokušajima koji ne mogu dvaput da naplate isti iznos.

Prenos i uvoz podataka

Jednokratno prebacivanje iz starog sistema u novi ili redovan uvoz cenovnika i stanja od dobavljača. Kada je posao pre svega u samoj bazi — šema, indeksi, čišćenje — to je rad nad bazom podataka.


Zašto je ovo poseban posao, a ne deo izrade

Kada pravim ekran, bazu ili izveštaj, znam sve učesnike i sve mogu da ispravim. Kod integracije to nije tačno, i zbog toga se drugačije procenjuje, drugačije testira i drugačije naplaćuje. Ovih šest stvari se pojavljuje skoro u svakom takvom poslu:

  • Dokumentacija ne odgovara stvarnosti. Polje koje po uputstvu uvek postoji ponekad stigne prazno, a primer iz dokumentacije vraća grešku. Prvi deo posla je da se utvrdi kako se servis zaista ponaša, a ne kako piše.
  • Prijava i ključevi. Lozinka, token koji ističe, OAuth prozor u kome neko mora da klikne, sertifikat sa rokom. Svaki od tih načina drugačije se obnavlja i svaki ume da obori vezu u tri ujutru.
  • Ograničenja broja poziva. Servisi računaju pozive i naplaćuju ih ili ih odbijaju. Zato se pravi red čekanja i pamti šta je već preuzeto, umesto da se svaki put povlači sve.
  • Tuđa strana se menja bez najave. Verzija se gasi, polje menja naziv, uslovi se pooštre. Integracija se piše tako da se to vidi odmah i na jednom mestu, a ne kroz tri meseca po pritužbi kupca.
  • Greške koje dolaze i prolaze. Servis padne na dva minuta. Posao ne sme ni da stane ni da se izvrši dvaput — zato ponovni pokušaji i pravilo da isti nalog ne može biti poslat dva puta.
  • Probno okruženje nije produkcija. Testni servis često prima ono što pravi odbija. Deo posla se zato može zatvoriti tek na vašim stvarnim podacima i vašim nalozima.

Zbog svega toga integracija i na drugim stranicama nosi svoju cenu — na primer kod Office dodataka odvojen je lokalni posao od onog sa vezom ka tuđem servisu. Ovde je taj deo posla opisan na jednom mestu, da se ne bi ponavljao pet puta. Integracija veštačke inteligencije je poseban slučaj iste priče: i to je veza sa tuđim servisom, samo što tamo odgovor na isto pitanje ne mora dvaput biti isti, pa ima svoju stranicu i svoju analizu.


Urađeno

Integracije su prisutne kroz ceo portfelj, jer se pojavljuju u svakoj vrsti softvera koju radim.

  • Sve integracije — petnaestak radova, od razmene sa knjigovodstvom do preuzimanja podataka od dobavljača.
  • Naplata i e-trgovina — Stripe Checkout, naplata na sajtu i u prodavnici.
  • Poslovni servisi — Xero za knjigovodstvo, Dropbox za razmenu datoteka.
  • Automatizacija — poslovi koji se izvršavaju sami, noću, bez otvorenog prozora.

Dva gotova proizvoda su nastala baš iz ovakvog posla: SEF dodatak za Excel i Word-GPT VSTO dodatak.


Kako posao ide

  • Kažete koja dva sistema treba povezati i šta bi trebalo da se dešava — na primer „kada kupac plati na sajtu, faktura da uđe u knjigovodstvo".
  • Analiza tuđeg API-ja. Čitam dokumentaciju, pravim probne pozive vašim nalogom i utvrđujem šta je uopšte moguće. Ovo je jedini deo koji se ne može preskočiti, jer se bez njega ne zna ni cena ni da li posao ima rešenje.
  • Ponuda za dogovoreni obim. Posle analize dobijate fiksnu cenu i spisak slučajeva koji su pokriveni, uključujući i ono što se radi kada tuđa strana ne odgovori.
  • Rad na probnim nalozima gde god ih tuđi servis nudi, pa provera na vašim podacima pre puštanja u rad.
  • Predaja. Dobijate kôd, ključeve na svoje ime, evidenciju poziva i kratko uputstvo šta da uradite kada tuđa strana promeni pravila.

Cene

Isti raspored kao kod ostalih usluga: prvo analiza, zatim zahvat sa poznatom ulaznom cenom, a sitne dorade po satu.

Prvi korak

Analiza se plaća i poručuje prva, a odbija se od cene posla ako nastavimo. Ako se ispostavi da tuđi servis ne dozvoljava ono što vam treba, to ćete saznati posle analize, a ne posle plaćenog razvoja.

Zahvati

Manje izmene na integraciji koja već radi ne moraju da idu kroz zahvat: za njih postoji rad po satu, gde se plaća utrošeno vreme. Ceo cenovnik stoji na stranici cena.


Na šta se obavezujem


Šta nije obuhvaćeno cenom

Pišem ovo da biste cenu razumeli pre porudžbine, a ne posle. Sve sa spiska mogu da uradim, ali se dogovara i naplaćuje posebno.


Šta da pripremite pre početka


Vlasništvo i izlaz

  • Nalozi i ključevi glase na vaše ime. Pristup tuđem servisu otvarate vi, pa veza nastavlja da radi i ako se nikada više ne čujemo.
  • Izvorni kôd je vaš, zajedno sa opisom svih poziva koji se koriste.
  • Evidencija ostaje kod vas. Zapisi o poslatom i primljenom čuvaju se na vašem serveru, a ne kod mene.
  • Bez posrednika u sredini. Vaš softver zove tuđi servis neposredno; ne uvodim svoj server kroz koji bi vaši podaci morali da prolaze.

Često postavljana pitanja

Zato što je najveći deo neizvesnosti baš tu. Da li tuđi servis uopšte daje podatak koji vam treba, pod kojim uslovima i uz koje ograničenje — to se utvrđuje probnim pozivima, a ne čitanjem. Iznos se odbija od cene posla ako nastavimo, a ako ne nastavimo, ostaje vam pisano šta je moguće i sa tim možete kod bilo kog izvođača.

To se dešava i nije greška u isporučenom poslu. Integracija se piše tako da se takva promena vidi odmah, na jednom mestu i uz jasnu poruku u evidenciji. Sama prilagodba se naplaćuje kao nova izmena, najčešće po satu, jer zavisi od toga šta je druga strana promenila.

Ponekad ima, kroz izvoz i uvoz datoteka, elektronsku poštu ili zajedničku bazu. To je sporije i krhkije od pravog API-ja i tako ću vam i reći, sa procenom koliko takvo rešenje traje pre nego što počne da smeta. Kada ni to nije moguće, bolje je da ne počinjemo.

Vi, i nalog glasi na vas. Mnogi servisi naplaćuju po pozivu ili po mesecu, pa u analizi stoji i procena tog troška — jer ume da bude veći od same izrade ako se podaci povlače češće nego što je potrebno.

Možete, i tako se najčešće i radi. Ali se vodi kao zasebna stavka sa svojom cenom, jer nosi rizik koji ostatak posla nema. Tako i vi vidite koliko vas tačno košta veza sa tuđim sistemom, umesto da bude skrivena u zbirnoj ceni.

Svaka integracija dobija evidenciju poziva i, kada tako dogovorimo, obaveštenje poštom kada nešto zapne. Tihi kvar je najgori slučaj: podaci prestanu da stižu, a niko ne primeti dok se ne pojavi manjak u izveštaju.

Koja dva sistema treba da razgovaraju?

Napišite koji su to sistemi i šta bi trebalo da se dešava. Ako je veza moguća, reći ću vam kako se radi i koliko otprilike košta; ako nije, reći ću i to, pre nego što bilo šta platite.

Pošaljite upit

Uglavnom odgovaram isti dan.

API integracija i povezivanje poslovnih sistema