Mar sin an e RAML no OAS (Swagger) a th’ ann?

Ann an saoghal fiùghantach meanbh-sheirbheisean, faodaidh rud sam bith atharrachadh - faodar pàirt sam bith ath-sgrìobhadh ann an cànan eadar-dhealaichte, a’ cleachdadh diofar fhrèamaichean agus ailtireachd. Cha bu chòir ach cùmhnantan fuireach gun atharrachadh gus an urrainnear eadar-obrachadh leis a’ mhicro-sheirbheis bhon taobh a-muigh gu maireannach, ge bith dè na metamorphoses a-staigh. Agus an-diugh bruidhnidh sinn mun duilgheadas againn a thaobh a bhith a’ taghadh cruth airson a bhith a’ toirt cunntas air cùmhnantan agus a’ roinn na stuthan a lorg sinn.

Mar sin an e RAML no OAS (Swagger) a th’ ann?

Post air ullachadh Anna Melekhova и Vladimir Lapatin

Microsheirbheisean. Nuair a bha sinn a’ leasachadh Acronis Cyber ​​​​Cloud, thuig sinn nach b’ urrainn dhuinn teicheadh ​​​​orra. Agus tha e do-dhèanta microservice a dhealbhadh gun a bhith a 'foirmealachadh a' chùmhnant, a tha a 'riochdachadh eadar-aghaidh an microservice.

Ach nuair a tha barrachd air aon phàirt ann an toradh, agus leasachadh cùmhnant gu bhith na ghnìomhachd cunbhalach, chan urrainn dhut cuideachadh ach tòiseachadh a’ smaoineachadh air optimization pròiseas. Tha e follaiseach gum feum an eadar-aghaidh (cùmhnant) agus buileachadh (micro-sheirbheis) a bhith co-ionnan ri chèile, gum feum diofar phàirtean na h-aon rudan a dhèanamh san aon dòigh, agus às aonais co-dhùnaidhean meadhanaichte de na co-dhùnaidhean sin uile, gum feum gach sgioba cuir seachad ùine a-rithist agus a-rithist gus am faighinn.

Mar sin an e RAML no OAS (Swagger) a th’ ann?
Diagram microservices Amazon bho tweet Werner Vogelis, CTO Amazon
Dè an dileab a th’ ann? Gu dearbh, tha dà dhòigh air microservices eadar-obrachadh - HTTP Rest agus gRPC bho Google. Gun a bhith ag iarraidh grèim fhaighinn air stac teicneòlais Google, thagh sinn HTTP Rest. Thathas gu tric a’ toirt iomradh air notaichean cùmhnant HTTP REST ann an aon de dhà chruth: RAML agus OAS, air an robh Swagger roimhe seo.Mar sin, tha feum aig gach sgioba leasachaidh air aon de na h-inbhean a thaghadh. Ach mar a thionndaidh e, faodaidh an roghainn seo a bhith gu math duilich.

Carson a tha feum air notaichean?

Tha feum air an nota gus an urrainn do neach-cleachdaidh bhon taobh a-muigh faighinn a-mach gu furasta dè a ghabhas dèanamh leis an t-seirbheis agad tron ​​​​eadar-aghaidh HTTP aige. Is e sin, aig ìre bhunaiteach, feumaidh co-dhiù liosta de na goireasan a tha rim faighinn a bhith anns an nota, na dòighean HTTP aca, buidhnean iarrtais, liosta de pharamadairean, comharra de na cinn-cinn a tha a dhìth agus le taic, a bharrachd air còdan tilleadh agus cruthan freagairt. Is e eileamaid air leth cudromach de nota a’ chùmhnaint an tuairisgeul beòil aca (“dè thachras ma chuireas tu am paramadair ceist seo ris an iarrtas?”, “Dè an suidheachadh a thèid còd 400 a thilleadh?”)

Ach, nuair a thig e gu bhith a’ leasachadh àireamh mhòr de mhicro-sheirbheisean, tha thu airson luach a bharrachd a tharraing bho na notaichean sgrìobhte. Mar eisimpleir, stèidhichte air RAML / Swagger, faodaidh tu an dà chuid còd teachdaiche is frithealaiche a ghineadh ann an àireamh mhòr de chànanan prògramaidh. Faodaidh tu cuideachd sgrìobhainnean fhaighinn gu fèin-ghluasadach airson a’ mhicro-sheirbheis agus a luchdachadh suas chun portal leasaiche agad :).

Mar sin an e RAML no OAS (Swagger) a th’ ann?
Eisimpleir de mhìneachadh cùmhnant structaraichte

Chan eil e cho cumanta a bhith a’ dèanamh deuchainn air meanbh-sheirbheisean stèidhichte air tuairisgeulan cùmhnant. Ma tha thu air an dà chuid nota agus co-phàirt a sgrìobhadh, faodaidh tu fèin-dheuchainn a chruthachadh a nì sgrùdadh air iomchaidheachd na seirbheis le diofar sheòrsaichean dàta cuir a-steach. A bheil an t-seirbheis a’ tilleadh còd freagairt nach eil air a mhìneachadh san iomradh? Am bi e comasach dha dàta a tha follaiseach ceàrr a phròiseasadh gu ceart?

A bharrachd air an sin, tha buileachadh àrd-inbhe chan ann a-mhàin air na cùmhnantan fhèin, ach cuideachd air na h-innealan airson notaichean fhaicinn ga dhèanamh comasach an obair leis a ’mhicroservice a dhèanamh nas sìmplidhe. Is e sin, ma thug an t-ailtire cunntas càileachdail air a’ chùmhnant, stèidhichte air, cuiridh luchd-dealbhaidh agus luchd-leasachaidh an t-seirbheis an gnìomh ann am bathar eile gun chosgaisean ùine a bharrachd.

Gus innealan a bharrachd a chomasachadh, tha comas aig an dà chuid RAML agus OAS meata-dàta a chur ris nach eil air a sholarachadh leis an inbhe (mar eisimpleir, seo mar a tha e air a dhèanamh ann an OAS).

San fharsaingeachd, tha an cothrom airson cruthachalachd ann a bhith a’ cleachdadh chùmhnantan airson meanbh-sheirbheisean fìor mhòr... co-dhiù ann an teòiridh.

Coimeas eadar gràineag agus nathair

An-dràsta, is e an raon leasachaidh prìomhachais aig Acronis leasachadh Àrd-ùrlar Cyber ​​​​Acronis. Tha Àrd-ùrlar Acronis Cyber ​​​​na phuingean ùra airson amalachadh de sheirbheisean treas-phàrtaidh le Acronis Cyber ​​​​Cloud agus am pàirt àidseant. Ged a bha sinn toilichte leis na APIan a-staigh againn a chaidh a mhìneachadh ann an RAML, thog an fheum air an API fhoillseachadh a-rithist a’ cheist mu roghainn: dè an ìre notaichean as fheàrr a chleachdadh airson ar n-obair?

An toiseach, bha e coltach gu robh dà fhuasgladh ann - b 'e na leasachaidhean as cumanta RAML agus Swagger (no OAS). Ach gu dearbh thionndaidh e a-mach nach eil co-dhiù 2 roghainnean eile ann, ach 3 no barrachd.

Air an aon làimh tha RAML - cànan cumhachdach agus èifeachdach. Bidh e a ’cur an gnìomh rangachd agus dìleab gu math, agus mar sin tha an cruth seo nas freagarraiche airson companaidhean mòra a dh’ fheumas mòran tuairisgeulan - is e sin, chan e aon toradh, ach mòran microservices aig a bheil pàirtean cumanta de chùmhnantan - sgeamaichean dearbhaidh, na h-aon sheòrsan dàta, buidhnean mearachd .

Ach tha leasaiche RAML, Mulesoft, air a dhol a-steach don cho-bhanntachd Open API, a tha a’ leasachadh Sguabaidh. Mar sin, chuir RAML stad air a leasachadh. Gus cruth an tachartais a shamhlachadh, smaoinich gun do dh’ fhalbh luchd-gleidhidh nam prìomh phàirtean Linux a dh’ obair dha Microsoft. Tha an suidheachadh seo a’ cruthachadh na ro-ghoireasan airson a bhith a’ cleachdadh Swagger, a tha a’ leasachadh gu dinamach agus anns an treas dreach as ùire - gu practaigeach a’ glacadh suas ri RAML a thaobh sùbailteachd agus comas-gnìomh.

Mura h-eil airson aon rud ...

Mar a thionndaidh e, cha deach a h-uile goireas stòr fosgailte ùrachadh gu OAS 3.0. Airson microservices ann an Go, is e an rud as deatamaiche an dìth atharrachaidh go-swagger airson an tionndadh as ùire den inbhe. Ach, tha an diofar eadar Swagger 2 agus Swagger 3 mòr. Mar eisimpleir, anns an treas dreach tha an luchd-leasachaidh:

  • tuairisgeul nas fheàrr air sgeamaichean dearbhaidh
  • criochnaich Taic sgeama JSON
  • àrdachadh comas eisimpleirean a chur ris

Tha an suidheachadh èibhinn: nuair a thaghas tu inbhe, feumaidh tu beachdachadh air RAML, Swagger 2 agus Swagger 3 mar roghainnean eile. Ach, chan eil ach Swagger 2 a’ faighinn taic mhath airson innealan OpenSource. Tha RAML gu math sùbailte ...

A bharrachd air an sin, ma tha mòran fheartan snog ann an Swagger, leithid portal deiseil deasaiche.swagger.io, air an urrainn dhut nota a luchdachadh suas agus an sealladh aige fhaighinn le tuairisgeul mionaideach, ceanglaichean agus ceanglaichean, an uairsin airson an RAML nas bunaitiche agus nach eil cho càirdeil chan eil an leithid de chothrom ann. Faodaidh, faodaidh tu rudeigin a lorg am measg phròiseactan air GitHub, lorg analog an sin agus cleachd e thu fhèin. Ach, ann an suidheachadh sam bith, feumaidh cuideigin am portal a chumail suas, nach eil cho goireasach airson feum bunaiteach no deuchainn. A bharrachd air an sin, tha swagger nas “neo-phractaigeach”, no nas libearalach - faodar a ghineadh bho bheachdan sa chòd, a tha, gu dearbh, a’ dol an aghaidh a ’chiad phrionnsapal API agus nach eil a’ faighinn taic bho ghoireas RAML sam bith.

Aig aon àm thòisich sinn ag obair le RAML mar chànan nas sùbailte, agus mar thoradh air sin bha againn ri tòrr rudan a dhèanamh sinn fhìn. Mar eisimpleir, tha aon de na pròiseactan a 'cleachdadh a' ghoireas reultan ann an deuchainnean aonad, a bheir taic do RAML 0.8. Mar sin bha againn ri crutches a chuir ris gus am b’ urrainn don ghoireas “ithe” dreach RAML 1.0.

Am feum thu taghadh?

Às deidh dhuinn a bhith ag obair air crìoch a chuir air an eag-shiostam de fhuasglaidhean airson RAML, thàinig sinn chun cho-dhùnadh gum feum sinn RAML a thionndadh gu Swagger 2 agus a h-uile fèin-ghluasad, dearbhadh, deuchainn agus optimization às deidh sin a dhèanamh ann. Is e dòigh mhath a tha seo gus an dà chuid sùbailteachd RAML agus an taic innealan coimhearsnachd bho Swagger a luathachadh.

Gus an duilgheadas seo fhuasgladh, tha dà inneal OpenSource ann a bu chòir tionndadh cùmhnant a thoirt seachad:

  1. oas-raml-tionndaidh 's e goireas gun taic a th' ann an-dràsta. Fhad 'sa bha sinn ag obair leis, fhuair sinn a-mach gu bheil grunn dhuilgheadasan aige le RAML iom-fhillte a tha "air an sgaoileadh" thairis air àireamh mhòr de fhaidhlichean. Tha am prògram seo sgrìobhte ann an JavaScript agus bidh e a’ dèanamh tar-chur ath-chuairteach air craobh co-chòrdadh. Air sgàth clò-sgrìobhaidh fiùghantach, bidh e duilich an còd seo a thuigsinn, agus mar sin chuir sinn romhainn gun a bhith a’ caitheamh ùine a’ sgrìobhadh pìosan airson goireas a bha a’ bàsachadh.
  2. webapi-parser - inneal bhon aon chompanaidh a tha ag ràdh gu bheil iad deiseil airson rud sam bith agus a h-uile càil a thionndadh, agus ann an stiùireadh sam bith. Gu ruige seo, chaidh taic ainmeachadh airson RAML 0.8, RAML 1.0 agus Swagger 2.0. Ach, aig àm an rannsachaidh againn, bha an goireas fhathast AN T-SAOGHAL tais agus nach gabh a chleachdadh. Bidh luchd-leasachaidh a’ cruthachadh seòrsa de IR, a 'toirt cothrom dhaibh inbhean ùra a chur ris gu luath san àm ri teachd. Ach gu ruige seo dìreach chan eil e ag obair.

Agus chan e sin a h-uile duilgheadas a choinnich sinn. Is e aon de na ceumannan san loidhne-phìoban againn dearbhadh gu bheil an RAML bhon stòr-dàta ceart an coimeas ris an t-sònrachadh. Dh'fheuch sinn grunn ghoireasan. Gu h-iongantach, mhionnaich iad uile air na notaichean againn ann an diofar àiteachan agus le droch fhaclan gu tur eadar-dhealaichte. Agus chan ann an-còmhnaidh chun na h-ìre :).

Aig a 'cheann thall, shocraich sinn air pròiseact a tha a-nis seann-fhasanta, aig a bheil grunn dhuilgheadasan cuideachd (uaireannan bidh e a' tuiteam às a 'ghorm, tha duilgheadasan aige nuair a bhios sinn ag obair le abairtean cunbhalach). Mar sin, cha do lorg sinn dòigh air fuasgladh fhaighinn air na duilgheadasan dearbhaidh agus tionndaidh stèidhichte air innealan an-asgaidh, agus chuir sinn romhainn goireas malairteach a chleachdadh. Anns an àm ri teachd, mar a bhios innealan OpenSource a’ fàs nas aibidh, dh’ fhaodadh an duilgheadas seo a bhith nas fhasa fhuasgladh. Anns an eadar-ama, bha coltas gu robh na cosgaisean saothair is ùine airson “crìochnachadh” na bu chudromaiche dhuinn na cosgais seirbheis malairteach.

co-dhùnadh

Às deidh seo uile, bha sinn airson ar n-eòlas a cho-roinn agus a thoirt fa-near, mus tagh thu inneal airson cunntas a thoirt air cùmhnantan, feumaidh tu mìneachadh soilleir a dhèanamh air na tha thu ag iarraidh bhuaithe agus dè am buidseat a tha thu deònach a thasgadh. Ma dhìochuimhnicheas sinn mu OpenSource, tha àireamh mhòr de sheirbheisean is thoraidhean ann mu thràth a chuidicheas tu gus sgrùdadh, tionndadh agus dearbhadh. Ach tha iad daor, agus uaireannan gu math daor. Airson companaidh mhòr, tha na cosgaisean sin comasach, ach airson tòiseachadh faodaidh iad a bhith nan eallach mòr.

Obraich a-mach an seata innealan a chleachdas tu nas fhaide air adhart. Mar eisimpleir, ma dh'fheumas tu dìreach cùmhnant a thaisbeanadh, bidh e nas fhasa Swagger 2 a chleachdadh, aig a bheil API brèagha, oir ann an RAML feumaidh tu an t-seirbheis a thogail agus a chumail suas thu fhèin.
Mar as motha de ghnìomhan a bhios agad, is ann as fharsainge a bhios feum air innealan, agus bidh iad eadar-dhealaichte airson diofar àrd-ùrlaran, agus tha e nas fheàrr eòlas fhaighinn air na dreachan a tha rim faighinn sa bhad gus roghainn a dhèanamh a lughdaicheas na cosgaisean agad san àm ri teachd.

Ach is fhiach a bhith mothachail gu bheil a h-uile eag-shiostam a tha ann an-diugh neo-fhoirfe. Mar sin, ma tha luchd-leantainn sa chompanaidh a tha dèidheil air a bhith ag obair ann an RAML oir “Leigidh e leat do bheachdan a chuir an cèill ann an dòigh nas sùbailte,” no, air an làimh eile, is fheàrr leotha Swagger oir “tha e nas soilleire,” tha e nas fheàrr am fàgail gu obair. anns na tha iad Tha iad cleachdte ris agus tha iad ga iarraidh, oir feumaidh innealan gin de na cruthan atharrachadh le faidhle.

A thaobh ar n-eòlas, anns na puist a leanas bruidhnidh sinn mu na sgrùdaidhean statach agus fiùghantach a bhios sinn a’ dèanamh stèidhichte air ar ailtireachd RAML-Swagger, a bharrachd air na sgrìobhainnean a bhios sinn a’ cruthachadh bho chùmhnantan, agus mar a tha e uile ag obair.

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Dè an cànan a chleachdas tu gus cùmhnantan microservice a chomharrachadh?

  • RAML 0.8

  • RAML 1.0

  • Sgeulaiche 2

  • OAS3 (aka)

  • plana-gorm

  • Eile

  • Gun a bhith a 'cleachdadh

Bhòt 100 neach-cleachdaidh. Cha do stad 24 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann