Scríobh API - sháraigh XML (dhá cheann)

Tháinig an chéad MySklad API le feiceáil 10 mbliana ó shin. An t-am seo ar fad bhíomar ag obair ar leaganacha reatha den API agus ag forbairt cinn nua. Agus tá leaganacha éagsúla den API curtha cheana féin.

Beidh go leor rudaí san alt seo: conas a cruthaíodh an API, cén fáth a bhfuil gá leis an tseirbhís scamall, cad a thugann sé d'úsáideoirí, cad iad na botúin a d'éirigh linn céim a dhéanamh orthu agus cad ba mhaith linn a dhéanamh ina dhiaidh sin.

Меня зовут Олег Алексеев oalexeev, я технический директор и сооснователь МоегоСклада.

Зачем делать API для сервиса

Úsáideann ár gcliaint, atá ina mílte fiontraithe, réitigh scamall go gníomhach: baincéireacht, siopaí ar líne, cuntasaíocht tráchtearraí, CRM. Nuair a nascann tú le ceann amháin, tá sé deacair stop a chur leis. Agus anois déanann an cúigiú, an t-ochtú, an deichiú seirbhís obair an fhiontraí níos éasca, ach aistríonn úsáideoirí sonraí idir na seirbhísí scamall seo de láimh. Éiríonn an obair ina tromluí.

Is é an réiteach soiléir ná cumas a thabhairt d'úsáideoirí sonraí a aistriú idir seirbhísí scamall. Mar shampla, sonraí a allmhairiú agus a onnmhairiú mar chomhaid, ar féidir iad a uaslódáil ansin chuig an tseirbhís atá ag teastáil. De ghnáth athraítear comhaid chun freastal ar fhormáid gach seirbhíse. Is obair láimhe simplí é seo níos mó nó níos lú, ach leis an méadú ar líon na seirbhísí seo, bíonn sé níos deacra é a dhéanamh.

Поэтому следующий шаг — API. С ним облачный сервис выигрывает от того, что связывает несколько сервисов в одной точке. Появление такой экосистемы притягивает новых клиентов за счет дополнительных возможностей. Продукт с новым функционалом становится более выгодным и полезным.

Если создавать собственные программные интерфейсы, это привлекает сторонних продажников в виде программистов, которые знают о вашем продукте благодаря API. Они начинают строить решения на основе предложенного API и зарабатывают деньги на автоматизации задач своих заказчиков.

Учетная система МоегоСклада строится на простых процессах. Главное — работа с первичными документами, возможность проводить приемку и отгрузку товара, получать на основе первички отчеты для бизнеса. Также есть передача данных, например в облачную бухгалтерию, и их получение из банковских систем или розничных точек. Еще мы работаем с интернет-магазинами: получаем сведения о товарах и отправляем данные об остатках.

Scríobh API - sháraigh XML (dhá cheann)

An chéad API de MySklad

Thar na 10 mbliana d’obair MySklad le API, tá gach cineál comhtháthaithe faighte againn a ligeann dúinn sonraí a mhalartú, oibriú le bainc, íocaíochtaí a dhéanamh agus teileafónaíocht sheachtrach a úsáid.

В первый год мы сделали возможность выгружать любые данные в формате XML. Тогда пользователям было куда понятнее и привычнее держать данные в офлайне, а не в каком-то там облаке, и мы дали им это. Выгрузка запускалась ручным экспортом из интерфейса. То есть API это еще нельзя было назвать.

Ag an am céanna, thosaigh muid ag comhoibriú leis an gcuideachta Rusagro - bhí ERP "fásta" á úsáid acu cheana féin le haghaidh táirgeadh agus pleanáil díolacháin, ach rinne siad uathoibriú ar luchtú na ngluaisteán i monarchana MySklad. Seo mar a fuair muid na chéad rudiments de API fíor: tharla an malartú idir ár seirbhís agus ERP trí chomhad mór a sheoladh le sonraí ar gach cineál doiciméad.

Is rogha maith é seo le haghaidh malartú sonraí baisc, ach in éineacht le doiciméid bhí orainn a gcuid spleáchais a aistriú: faisnéis faoi earraí, conraitheoirí agus stórais. Níl sé chomh deacair dumpáil den sórt sin a ghiniúint nuair a bhíonn sé ag onnmhairiú, ach tá sé deacair go leor a pharsáil nuair a bhíonn sé á allmhairiú, toisc go dtagann an fhaisnéis go léir in aon phacáiste amháin: faoi dhoiciméid nua agus faoi na cinn atá ann cheana féin.

Первый XML API прожил недолго — спустя два года мы начали его перестройку. Еще на старте его работы мы совершили несколько ошибок при построении программного интерфейса.

Scríobh API - sháraigh XML (dhá cheann)
Как делался XML API: иллюстрация от одного из наших архитекторов. Кстати, ждите его статей.

Вот наши основные ошибки:

  1. Rinneadh marcáil JAXB go díreach ar pónairí aonáin. Bainimid úsáid as Hibernate chun cumarsáid a dhéanamh leis an mbunachar sonraí, agus rinneadh marcáil JAXB do na pónairí céanna. Tháinig an earráid seo le feiceáil beagnach láithreach: ba ghá fógra práinneach a thabhairt do gach duine a úsáideann an API mar gheall ar aon nuashonrú ar an struchtúr sonraí, nó crutches a thógáil a chinnteodh comhoiriúnacht leis an struchtúr sonraí roimhe seo.
  2. D'fhás an API mar bhreiseán, agus níor shainiú dúinn ar dtús cén chuid den táirge a bhí ann. Níor smaoinigh siad fiú an raibh an API rud éigin tábhachtach, cibé an raibh sé riachtanach comhoiriúnacht siar a choinneáil dá chéad chliaint. Ag pointe amháin, bhí líon na n-úsáideoirí API thart ar 5% den líon beag, agus níor tugadh aird ar bith orthu. Mar gheall ar an scagadh uilíoch a rinneadh ag aon am amháin, úsáideadh muid mar inneall. Ní raibh an scagadh seo ag GraphQL ar chor ar bith, ach rud éigin mar sin - d'oibrigh sé trí go leor paraiméadair teaghrán fiosrúcháin. Le uirlis chumhachtach den sórt sin, bhí sé deacair d'úsáideoirí cur i gcoinne, agus aistríodh iarratais chugainn ionas gur seoladh iad go díreach ó Chomhéadain a gcuid siopaí ar líne. Ba iontas míthaitneamhach é an cás, mar ba cheart go mbeadh praghsáil dhifriúil agus tuiscint iomlán difriúil ar an API féin mar tháirge ag teastáil chun seirbhís den sórt sin a sholáthar.
  3. Mar gheall ar an bhfíric nár forbraíodh an API mar phríomhtháirge, rinneadh doiciméadú API a tháirgeadh agus a fhoilsiú ar bhonn iarmharach - trí innealtóireacht droim ar ais. Is cosúil go bhfuil an cosán seo simplí agus áisiúil, ach contrártha sé ag obair faoi chonradh. Seo nuair a bhíonn comhpháirt áirithe le scéim oibriúcháin réamhshocraithe. Cuireann an forbróir i bhfeidhm é de réir na scéime agus an tasc seo, déantar an chomhpháirt a thástáil, agus faigheann an cliant táirge a thagann le smaoineamh an anailísí. Caitheann innealtóireacht droim ar ais táirge atá ann go simplí ar an margadh: le crutches, réitigh aisteacha agus rothair in ionad na feidhme riachtanach.
  4. D'fhéadfaí an sruth iomlán iarratas a tháinig tríd an API a anailísiú mar rud ar bith níos mó ná logáil freastalaí Nginx nó feidhmchláir. Níor lig sé seo dúinn réimsí ábhair a aithint, ach amháin b'fhéidir ag úsáideoirí agus ag síntiúsóirí. Mura bhfuil aon bhealach ann chun iarratas nó clárú cliant a rialáil, bíonn sé dodhéanta an cás a anailísiú. Bhí an tionchar ba lú ag an bhfadhb seo ar fhorbairt an API; baineann sé níos mó le tuiscint a fháil ar a ábharthacht agus a fheidhmiúlacht.

Iarracht uimhir a dó: REST API

В 2010 году мы пытались построить систему обмена с онлайн-бухгалтерией — БухСофтом. Не взлетело. Зато в процессе интеграции появился полноценный API: REST-сервис обмена, где отсутствовали вольности вроде обращений к операциям в виде RPC вызовов. Всё общение с API было приведено к стандартному для реста режиму: в строке запроса содержится название сущности, а операция, которая с ней производится, задается с помощью http-метода. Мы добавили фильтрацию по моменту обновления сущностей, и у пользователей появилась возможность строить репликацию со своими системами.

Sa bhliain chéanna, tháinig API chun iarmhéideanna stórais agus fardail a dhíluchtú. Tá na codanna is luachmhaire den chóras curtha ar fáil d'úsáideoirí trí API - malartú doiciméad príomhúil agus sonraí ríofa ar iarmhéideanna agus ar chostas earraí.

В декабре 2015 года RetailCRM опубликовал первую стороннюю библиотеку для доступа к нашему API. Ее стали довольно активно использовать, при этом росла популярность сервиса в целом, нагрузка на API росла быстрее нагрузки на веб-интерфейс. Однажды рост превратился в скачок нагрузки.

Scríobh API - sháraigh XML (dhá cheann)

Scríobh API - sháraigh XML (dhá cheann)

И этот скачок, на который показывает стрелка слева, привел в полнейшее изумление сервер, обслуживающий наш API. Неделю мы разбирались, что именно эту нагрузку генерирует. Оказалось, что это те самые запросы, транслируемые на наш API с фронтов у клиентов. Всё съели около 50 клиентов. Тут-то мы и поняли одну из своих ошибок — полное отсутствие лимитов.

Mar thoradh air sin, thugamar isteach teorainn ar líon na n-iarratas comhuaineach. Ní féidir níos mó ná dhá iarratas a oscailt go comhuaineach anois ó chuntas amháin. Is leor é seo chun oibriú i mód macasamhlaithe chun sonraí a mhalartú i mód baisc. Agus cuireadh iallach orthu siúd a bhí ag iarraidh sinn a úsáid mar inneall, ón nóiméad sin ar aghaidh, cloí níos fearr leis na taraifí, ó chuir siad obair ar roinnt cuntas isteach ina gcuid bogearraí.

Приводим в порядок

Cheana féin ó 2014, tá an t-éileamh ar an API atá ann cheana féin mar chuid thábhachtach den ghnó, agus gineann an API féin an méid is mó sonraí i malartú sonraí le cliaint. In 2015, sheolamar tionscadal chun an API a ghlanadh. Roghnaigh muid JSON in ionad XML mar an fhormáid agus thosaigh muid á thógáil bunaithe ar na gnéithe a aithníodh le linn chur i bhfeidhm an leagan roimhe seo:

  1. Cumas chun leaganacha a bhainistiú. Ligeann leagan leat leagan nua a fhorbairt gan cur isteach ar an bhfeidhmchlár reatha nó gan cur isteach ar eispéireas an úsáideora.
  2. Возможность пользователю видеть метаданные в самом ответе, который он получает.
  3. Возможность обмена большими документами. Если мы обрабатываем документ с количеством позиций больше 4-5 тысяч, это становится проблемой для сервера: длинная транзакция, длинный http-запрос. Построили специальный механизм, позволяющий обновлять документ частями и управлять отдельными позициями этого документа, отправляя их на сервер.
  4. Bhí uirlisí macasamhlú i láthair freisin sa leagan roimhe seo.
  5. Tá teorainneacha ualaigh cosúil le hoidhreacht an ráca ar cuireadh dlús leis sa leagan roimhe seo. Thugamar isteach teorainneacha ar líon na n-iarratas i dtréimhse ama, ar líon na n-iarratas comhthreomhar agus ar na hiarratais ó aon seoladh IP amháin.

Ó shin i leith, tá dhá mhionleagan den API eisithe againn agus sheolamar roinnt API speisialaithe, ach níor tháinig aon athrú ar an gcur chuige iomlán. Mar gheall ar an bhformáid malairte nuashonraithe agus an ailtireacht nua bhíothas in ann lochtanna san API a cheartú i bhfad níos tapúla.

MySklad API inniu

Сегодня API МоегоСклада решает много задач:

  • malartú sonraí le siopaí ar líne, córais chuntasaíochta, bainc;
  • sonraí ríofa agus tuarascálacha a fháil;
  • úsáid mar inneall d'fheidhmchláir chliaint - oibríonn ár bhfeidhmchláir mhóibíleacha agus ár gclár airgid deisce trí API
  • отправка уведомлений об изменениях данных в МоемСкладе — webhooks;
  • teileafónaíocht;
  • córais dílseachta.

Bunaithe ar an API, ár POF Askar Rakhimberdiev srónbheannach i gceithre huaire an chloig scríobh mé bot teileagraim a tharraingíonn rudaí atá fágtha tríd an API: github.com/arahimberdiev/com-lognex-telegram-moysklad-stock

Anois uimhreacha tirim.

Seo ár staitisticí don sean REST API:

  • 400 cuideachta;
  • 600 úsáideoir;
  • 2 млн запросов в сутки;
  • 200 GB in aghaidh an lae de thrácht amach.

Agus seo cad a tháinig muid suas le haghaidh gach MySklad APIs:

  • более 70 интеграций (часть из них можно посмотреть здесь www.moysklad.ru/integratsii);
  • 8500 cuideachta;
  • 12 úsáideoir;
  • 46 млн запросов в сутки;
  • 2 TB/lá de thrácht amach.

Cad atá ar Aghaidh

Tá pleananna forbartha API á bplé go gníomhach. Déanaimid iarracht an taithí oibriúcháin a sholáthraíonn úsáideoirí dúinn a chur san áireamh. Ní i gcónaí is féidir gach rud a dhéanamh ag an am céanna, ach tá leagan nua den API díreach timpeall an chúinne le meiteashonraí níos áisiúla agus struchtúr nach bhfuil chomh clúmhach, OAuth le haghaidh fíordheimhnithe, agus API le haghaidh feidhmchláir atá ionsuite sa chomhéadan.

Is féidir leat an nuacht a leanúint ar shuíomh Gréasáin speisialta d’fhorbróirí comhtháthaithe le MySklad: dev.moysklad.ru.

Foinse: will.com

Add a comment