Kitbet API - qrat XML (tnejn)

L-ewwel MySklad API deher 10 snin ilu. Dan iż-żmien kollu konna naħdmu fuq verżjonijiet eżistenti tal-API u niżviluppaw oħrajn ġodda. U diversi verżjonijiet tal-API diġà ġew midfuna.

Dan l-artikolu se jkun fih ħafna affarijiet: kif inħoloq l-API, għaliex is-servizz tal-cloud jeħtieġha, x'jagħti lill-utenti, liema żbalji irnexxielna ngħaddu fuqhom u x'rridu nagħmlu wara.

Jisimni Oleg Alekseev oalexeev, Jiena d-direttur tekniku u l-ko-fundatur ta' MySklad.

Għaliex tagħmel API għal servizz

Il-klijenti tagħna, li huma għexieren ta 'eluf ta' intraprendituri, jużaw b'mod attiv soluzzjonijiet cloud: bankarji, ħwienet online, kontabilità tal-komoditajiet, CRM. Ladarba tikkonnettja ma 'wieħed, huwa diffiċli li tieqaf. U issa l-ħames, it-tmien, l-għaxar servizz jagħmel ix-xogħol tal-intraprenditur aktar faċli, iżda l-utenti jittrasferixxu data bejn dawn is-servizzi tal-cloud manwalment. Ix-xogħol jinbidel f’ħmar il-lejl.

Is-soluzzjoni ovvja hija li tagħti lill-utenti l-abbiltà li jittrasferixxu data bejn is-servizzi tal-cloud. Per eżempju, importazzjoni u esportazzjoni tad-dejta bħala fajls, li mbagħad jistgħu jittellgħu fis-servizz mixtieq. Il-fajls huma normalment mibdula biex ikunu adattati għall-format ta 'kull servizz. Dan huwa xogħol manwali ftit jew wisq sempliċi, iżda biż-żieda fin-numru ta 'dawn is-servizzi, isir aktar u aktar diffiċli biex jitwettaq.

Għalhekk, il-pass li jmiss huwa l-API. Magħha, is-servizz tal-cloud jibbenefika mill-fatt li jgħaqqad diversi servizzi f'punt wieħed. L-emerġenza ta 'ekosistema bħal din tattira klijenti ġodda minħabba opportunitajiet addizzjonali. Prodott b'funzjonalità ġdida jsir aktar profittabbli u utli.

Jekk toħloq l-interfaces tal-ipprogrammar tiegħek stess, dan jattira nies tal-bejgħ ta 'partijiet terzi fil-forma ta' programmaturi li jafu dwar il-prodott tiegħek grazzi għall-API. Jibdew jibnu soluzzjonijiet ibbażati fuq l-API proposta u jagħmlu l-flus billi awtomatizzaw il-kompiti tal-klijenti tagħhom.

Is-sistema tal-kontabilità MySklad hija bbażata fuq proċessi sempliċi. Il-ħaġa prinċipali hija li taħdem ma 'dokumenti primarji, il-ħila li taċċetta u tibgħat merkanzija, u tirċievi rapporti tan-negozju bbażati fuq dokumenti primarji. Hemm ukoll it-trasferiment tad-dejta, pereżempju għal cloud accounting, u l-irċevuta tagħha minn sistemi bankarji jew ħwienet tal-bejgħ bl-imnut. Naħdmu wkoll ma 'ħwienet online: nirċievu informazzjoni dwar prodotti u nibagħtu informazzjoni dwar bilanċi.

Kitbet API - qrat XML (tnejn)

L-ewwel API ta' MySklad

Matul l-10 snin ta’ MySklad taħdem mal-API, akkwistajna kull xorta ta’ integrazzjoni li jippermettulna niskambjaw data, naħdmu mal-banek, nagħmlu pagamenti u nużaw telefonija esterna.

Fl-ewwel sena, għamilna possibbli li tniżżel kwalunkwe data f'format XML. Dakinhar, kien ħafna aktar ċar u aktar komuni għall-utenti li jżommu d-data offline, u mhux f'xi sħaba, u tajna lilhom. It-tlugħ inbeda b'esportazzjoni manwali mill-interface. Jiġifieri, għadha ma setgħetx tissejjaħ API.

Fl-istess ħin, bdejna nikkooperaw mal-kumpanija Rusagro - diġà kienu qed jużaw ERP "adulti" għall-ippjanar tal-produzzjoni u l-bejgħ, iżda awtomatizzati t-tagħbija tal-karozzi fil-fabbriki f'MySklad. Hekk ksibna l-ewwel rudimenti ta’ API reali: l-iskambju bejn is-servizz tagħna u l-ERP sar billi bagħat fajl kbir b’dejta dwar kull tip ta’ dokumenti.

Din hija għażla tajba għall-iskambju tad-dejta tal-lott, iżda flimkien mad-dokumenti kellna nittrasferixxu d-dipendenzi tagħhom: informazzjoni dwar oġġetti, kuntratturi u mħażen. Tali dump mhuwiex daqshekk diffiċli biex tiġġenera meta tesporta, iżda huwa pjuttost diffiċli li tisparsa meta timporta, peress li l-informazzjoni kollha tiġi f'pakkett wieħed: kemm dwar dokumenti ġodda kif ukoll dwar dawk eżistenti.

L-ewwel XML API ma damitx twil - sentejn wara bdejna nibnuha mill-ġdid. Anke fil-bidu tax-xogħol tagħha, għamilna diversi żbalji meta nibnu l-interface tas-softwer.

Kitbet API - qrat XML (tnejn)
Kif saret l-API XML: illustrazzjoni minn wieħed mill-periti tagħna. Mill-mod, ibqa' sintonizzat għall-artikoli tiegħu.

Hawn huma l-iżbalji ewlenin tagħna:

  1. Il-markup JAXB sar direttament fuq il-fażola tal-entità. Aħna nużaw Hibernate biex nikkomunikaw mad-database, u l-markup JAXB sar għall-istess fażola. Dan l-iżball deher kważi immedjatament: kwalunkwe aġġornament għall-istruttura tad-dejta wassal għall-ħtieġa li jinnotifika b'mod urġenti lil kull min juża l-API, jew li jinbnew krozzi li jiżguraw kompatibilità mal-istruttura tad-dejta preċedenti.
  2. L-API kiber bħala add-on, u inizjalment ma ddefinijniex liema parti tal-prodott kienet. Lanqas biss ħasbu dwar jekk l-API kinitx xi ħaġa importanti, jekk kienx meħtieġ li tinżamm il-kompatibilità b'lura għall-ewwel klijenti tagħha. F'punt wieħed, in-numru ta 'utenti tal-API kien ta' madwar 5% tan-numru żgħir, u ma ngħatat l-ebda attenzjoni għalihom. L-iffiltrar universali li sar f'ħin wieħed wassal biex intużaw bħala backend. Dan l-iffiltrar ma kienx GraphQL xejn, iżda xi ħaġa bħal dik - ħadem permezz ta 'ħafna parametri ta' sekwenza ta 'mistoqsijiet. B'għodda b'saħħitha bħal din, kien diffiċli għall-utenti li jirreżistu, u t-talbiet ġew trasferiti lilna sabiex jintbagħtu direttament mill-UI tal-ħwienet online tagħhom. Is-sitwazzjoni kienet sorpriża spjaċevoli, minħabba li l-provvista ta 'tali servizz għandha teħtieġ prezzijiet differenti u fehim ġeneralment differenti tal-API innifsu bħala prodott.
  3. Minħabba l-fatt li l-API ma ġietx żviluppata bħala prodott ewlieni, id-dokumentazzjoni tal-API ġiet prodotta u ppubblikata fuq bażi residwa - permezz ta 'inġinerija inversa. Din it-triq tidher pjuttost sempliċi u konvenjenti, iżda tikkontradixxi x-xogħol taħt kuntratt. Dan meta jkun hemm ċertu komponent bi skema operattiva ssettjata minn qabel. L-iżviluppatur jimplimentaha skont din l-iskema u l-kompitu, il-komponent jiġi ttestjat, u l-klijent jirċievi prodott li jaqbel mal-idea tal-analista. L-inġinerija inversa titfa’ fis-suq prodott li sempliċiment jeżisti: bi krozzi, soluzzjonijiet strambi u roti minflok il-funzjonalità meħtieġa.
  4. Il-fluss kollu ta 'talbiet li ġew permezz tal-API jista' jiġi analizzat bħala xejn aktar minn Nginx jew log tas-server tal-applikazzjoni. Dan ma ppermettiex nidentifikaw oqsma tas-suġġetti, ħlief forsi mill-utenti u l-abbonati. Jekk ma jkun hemm l-ebda mod biex tirregola l-applikazzjoni jew ir-reġistrazzjoni tal-klijenti, isir impossibbli li tiġi analizzata s-sitwazzjoni. Din il-problema kellha l-inqas impatt fuq l-iżvilupp tal-API; hija aktar dwar il-fehim tar-rilevanza u l-funzjonalità tagħha.

Tentattiv numru tnejn: REST API

Fl-2010, ippruvajna nibnu sistema ta 'skambju b'kontabilità onlajn - BukhSoft. Ma telaqx. Iżda matul il-proċess ta 'integrazzjoni, deher API sħiħ: servizz ta' skambju REST, fejn ma kien hemm l-ebda libertajiet bħall-aċċess għall-operazzjonijiet fil-forma ta 'sejħiet RPC. Il-komunikazzjoni kollha mal-API tressqet fil-modalità standard għall-mistrieħ: il-linja tal-mistoqsija fiha l-isem tal-entità, u l-operazzjoni li titwettaq magħha hija speċifikata bl-użu tal-metodu http. Żidna filtrazzjoni bbażata fuq meta ġew aġġornati l-entitajiet, u l-utenti issa għandhom l-opportunità li jibnu replikazzjoni bis-sistemi tagħhom.

Fl-istess sena, deher API għall-ħatt tal-bilanċi tal-maħżen u l-inventarju. L-aktar partijiet siewja tas-sistema saru disponibbli għall-utenti permezz tal-API - l-iskambju ta 'dokumenti primarji u data kkalkulata dwar il-bilanċi u l-ispiża tal-merkanzija.

F'Diċembru 2015, RetailCRM ippubblika l-ewwel librerija ta 'parti terza biex taċċessa l-API tagħna. Beda jintuża b'mod pjuttost attiv, filwaqt li l-popolarità tas-servizz kollu kibret, it-tagħbija fuq l-API kibret aktar malajr mit-tagħbija fuq l-interface tal-web. It-tkabbir ta 'ġurnata waħda nbidel f'żieda fit-tagħbija.

Kitbet API - qrat XML (tnejn)

Kitbet API - qrat XML (tnejn)

U din il-qabża, indikata bil-vleġġa fuq ix-xellug, stagħġbet kompletament lis-server li jservi l-API tagħna. Għamilna ġimgħa nifhmu x'kienet eżattament qed jiġġenera din it-tagħbija. Irriżulta li dawn huma l-istess talbiet trażmessi lill-API tagħna mill-faċċati tal-klijenti. Madwar 50 klijent kielu kollox. Kien imbagħad li rrealizzajna wieħed mill-iżbalji tagħna – nuqqas sħiħ ta’ limiti.

B'riżultat ta' dan, daħħalna limitu fuq in-numru ta' talbiet simultanji. Issa huwa possibbli li tiftaħ mhux aktar minn żewġ talbiet simultanjament minn kont wieħed. Dan huwa biżżejjed biex taħdem fil-mod ta 'replikazzjoni għall-iskambju tad-dejta fil-modalità tal-lott. U dawk li riedu jużawna bħala backend, minn dak il-mument 'il quddiem, kienu sfurzati jikkonformaw aħjar mat-tariffi, peress li introduċew xogħol fuq diversi kontijiet fis-softwer tagħhom.

Ejja npoġġuha fl-ordni

Diġà mill-2014, id-domanda għall-API eżistenti saret parti importanti tan-negozju, u l-API innifsu jiġġenera l-akbar volum ta 'data fl-iskambju ta' data mal-klijenti. Fl-2015, nedejna proġett biex inaddfu l-API. Aħna għażilna JSON minflok XML bħala l-format u bdejna nibnuh ibbażat fuq il-karatteristiċi li ġew identifikati waqt l-implimentazzjoni tal-verżjoni preċedenti:

  1. Kapaċità li timmaniġġja l-verżjonijiet. Verżjoni jippermettilek tiżviluppa verżjoni ġdida mingħajr ma taffettwa l-applikazzjoni eżistenti jew tfixkel l-esperjenza tal-utent.
  2. Il-ħila għall-utent li jara l-metadejta fir-rispons innifsu li jirċievi.
  3. Kapaċità li jiskambjaw dokumenti kbar. Jekk nipproċessaw dokument b'aktar minn 4-5 elf pożizzjoni, din issir problema għas-server: transazzjoni twila, talba http twila. Bnejna mekkaniżmu speċjali li jippermettilek taġġorna dokument f'partijiet u timmaniġġja pożizzjonijiet individwali ta 'dan id-dokument billi tibgħathom lis-server.
  4. Għodod għar-replikazzjoni kienu wkoll preżenti fil-verżjoni preċedenti.
  5. Il-limiti tat-tagħbija huma bħal wirt tar-rake li kien imħolli fuqu fil-verżjoni preċedenti. Introduċejna limiti fuq in-numru ta’ talbiet f’perjodu ta’ żmien, in-numru ta’ talbiet paralleli u talbiet minn indirizz IP wieħed.

Minn dakinhar, ħarġna żewġ verżjonijiet minuri tal-API u nedejna diversi APIs speċjalizzati, iżda l-approċċ ġenerali baqa' ma nbidilx. Il-format tal-iskambju aġġornat u l-arkitettura ġdida għamluha possibbli li jiġu kkoreġuti d-difetti fl-API ħafna aktar malajr.

MySklad API illum

Illum, l-API MySklad issolvi ħafna problemi:

  • Skambju ta' dejta ma' ħwienet onlajn, sistemi ta' kontabilità, banek;
  • Il-ksib ta' data u rapporti kkalkulati;
  • uża bħala backend għall-applikazzjonijiet tal-klijenti - l-applikazzjonijiet mobbli tagħna u l-cash register tad-desktop jaħdmu permezz tal-API
  • tibgħat notifiki dwar bidliet fid-dejta f'MySklad - webhooks;
  • telefonija;
  • sistemi ta' lealtà.

Ibbażat fuq l-API, il-Kap Eżekuttiv tagħna Askar Rakhimberdiev rhino f'erba 'sigħat ktibt telegram bot li jiġbed il-fdal permezz tal-API: github.com/arahimberdiev/com-lognex-telegram-moysklad-stock

Issa numri niexfa.

Hawn huma l-istatistika tagħna għall-API REST l-antika:

  • 400 kumpanija;
  • 600 utent;
  • 2 miljun talba kuljum;
  • 200 GB / jum ta 'traffiku ħerġin.

U hawn dak li ħriġna għall-APIs kollha MySklad:

  • aktar minn 70 integrazzjoni (uħud minnhom jistgħu jarawhom hawn www.moysklad.ru/integratsii);
  • 8500 kumpanija;
  • 12 utent;
  • 46 miljun talba kuljum;
  • 2 TB/jum ta' traffiku ħerġin.

X'hemm Li jmiss

Il-pjanijiet ta' żvilupp tal-API huma taħt diskussjoni attiva. Nippruvaw nqisu l-esperjenza operattiva li l-utenti jipprovdulna. Mhux dejjem possibbli li tagħmel kollox f'daqqa, iżda verżjoni ġdida tal-API tinsab fil-kantuniera b'metadejta aktar konvenjenti u struttura inqas fluffy, OAuth għall-awtentikazzjoni, u API għall-applikazzjonijiet mibnija fl-interface.

Tista' ssegwi l-aħbarijiet fuq websajt speċjali għall-iżviluppaturi ta' integrazzjoni ma' MySklad: dev.moysklad.ru.

Sors: www.habr.com

Żid kumment