Saka ndeye RAML kana OAS (Swagger)?

Munyika ine simba ye microservices, chero chinhu chinogona kuchinja-chero chikamu chinogona kunyorwazve mumutauro wakasiyana, uchishandisa maitiro akasiyana uye zvivakwa. Chete zvibvumirano zvinofanirwa kuramba zvisina kuchinjika kuitira kuti iyo microservice igone kudyidzana nayo kubva kunze pane imwe nheyo yekusingaperi, zvisinei nemukati metamorphoses. Uye nhasi tichataura nezve dambudziko redu rekusarudza fomati yekutsanangura zvibvumirano uye kugovera zvigadzirwa zvatakawana.

Saka ndeye RAML kana OAS (Swagger)?

Post yakagadzirwa Anna Melekhova ΠΈ Vladimir Lapatin

Microservices. Pakugadzira Acronis Cyber ​​​​Cloud, takaona kuti isu hatigone kuvatiza. Uye kugadzira microservice hazvigoneke pasina kuita chibvumirano, chinomiririra chimiro cheiyo microservice.

Asi kana chigadzirwa chine zvinopfuura chikamu chimwe, uye kuvandudza kondirakiti kukava chiitiko chenguva dzose, haugone kubatsira asi kutanga kufunga nezve optimization yemaitiro. Zvinova pachena kuti iyo interface (chibvumirano) uye kuita (microservice) inofanirwa kuenderana, kuti zvikamu zvakasiyana zvinofanirwa kuita zvinhu zvakafanana nenzira imwechete, uye kuti pasina danho repakati rekuita sarudzo dzese idzi, timu yega yega inomanikidzwa kuita zvinhu zvakafanana. pedza nguva nenguva kuti uzvitore.

Saka ndeye RAML kana OAS (Swagger)?
Amazon microservices diagram kubva tweet Werner Vogelis, CTO Amazon
Dambudziko nderei? De facto, pane nzira mbiri dzekudyidzana microservices - HTTP Zororo uye gRPC kubva kuGoogle. Tisingade kubatwa muGoogle tekinoroji stack, takasarudza HTTP Rest. HTTP REST kondirakiti zvirevo zvinonyanya kutsanangurwa mune imwe yemhando mbiri: RAML neOAS, yaimbozivikanwa seSwagger. Naizvozvo, timu yega yega yekuvandudza inotarisana nekudiwa kwekusarudza imwe yemitemo. Asi sezvazvinozoitika, kuita sarudzo iyi kunogona kuve kwakaoma kwazvo.

Sei zviziviso zvichidikanwa?

Chirevo chinodiwa kuitira kuti mushandisi wekunze agone kuona zviri nyore zvingaitwe nebasa rako kuburikidza neHTTP interface. Ndiko kuti, padanho rekutanga, chirevo chinofanira kunge chine runyorwa rwezviwanikwa zviripo, maitiro eHTTP, miviri yekukumbira, rondedzero yemaparamendi, chiratidzo cheinodiwa uye inotsigirwa misoro, pamwe nemakodhi ekudzoka uye mafomu ekupindura. Chinhu chakanyanya kukosha chekondirakiti tsananguro yavo yemuromo ("chii chichaitika kana ukawedzera iyi yemubvunzo paramende kuchikumbiro?", "Ko kodhi 400 ichadzoserwa sei?")

Nekudaro, kana zvasvika pakugadzira huwandu hukuru hwemamicroservices, iwe unoda kutora imwe kukosha kubva kune yakanyorwa zvirevo. Semuenzaniso, zvichibva paRAML/Swagger, unogona kugadzira ese ari maviri mutengi uye sevha kodhi munhamba huru yemitauro yekuronga. Iwe unogona zvakare kugamuchira otomatiki zvinyorwa zveiyo microservice uye kurodha kune yako yekuvandudza-portal :).

Saka ndeye RAML kana OAS (Swagger)?
Muenzaniso wetsanangudzo yekondirakiti yakarongeka

Zvishoma zvakajairika itsika yekuyedza mamicroservices zvichienderana nekutsanangurwa kwekondirakiti. Kana iwe wakanyora zvese zvirevo uye chikamu, saka unogona kugadzira autotest inotarisa kukwana kwesevhisi nemhando dzakasiyana dze data yekupinza. Iyo sevhisi inodzosera kodhi yemhinduro isina kutsanangurwa muzvinyorwa here? Ichakwanisa here kugadzirisa zviri pachena data isiriyo?

Uyezve, kushandiswa kwepamusoro-soro kwete chete zvibvumirano pachavo, asiwo maturusi ekuona zvirevo zvinoita kuti zvive nyore kuita basa ne microservice. Ndokunge, kana mugadziri akatsanangura chibvumirano, zvichibva pazviri, vagadziri uye vanogadzira vanozoisa sevhisi mune zvimwe zvigadzirwa pasina imwe mari yenguva.

Kugonesa mamwe maturusi, zvese RAML neOAS vane kugona kuwedzera metadata isina kupihwa neyakajairwa (semuenzaniso, aya ndiwo maitiro azvinoitwa muOAS).

Kazhinji, chiyero chekugadzira mukushandisa zvibvumirano zve microservices chakakura ... zvirinani mudzidziso.

Kuenzanisa hedgehog nenyoka

Parizvino, iyo inonyanya kukosha nzvimbo yekusimudzira kuAcronis ndiko kuvandudzwa kweAcronis Cyber ​​​​Platform. Acronis Cyber ​​​​Platform mapoinzi matsva ekubatanidzwa kwechitatu-bato masevhisi neAcronis Cyber ​​​​Cloud uye mumiririri chikamu. Kunyangwe isu taifara nema API edu emukati akatsanangurwa muRAML, kudiwa kwekuburitsa API zvakare kwakasimudza mubvunzo wesarudzo: ndeipi chiyero cheanotsidziro chakanakisa kushandisa pabasa redu?

Pakutanga, zvaiita sekunge paive nemhinduro mbiri - zvinonyanya kuitika yaive RAML uye Swagger (kana OAS). Asi chaizvoizvo zvakazoitika kuti pane zvishoma kwete 2 dzimwe nzira, asi 3 kana kupfuura.

Kune rimwe divi kune RAML - mutauro une simba uye unoshanda. Inoshandisa hierarchy uye nhaka zvakanaka, saka chimiro ichi chakanyatsokodzera kumakambani makuru anoda tsananguro yakawanda - kureva, kwete chigadzirwa chimwe chete, asi akawanda ma microservices ane zvikamu zvakajairika zvezvibvumirano - zvirongwa zvekusimbisa, iwo akafanana data marudzi, kukanganisa miviri. .

Asi anovandudza RAML, Mulesoft, akabatana neOpen API consortium, iri kusimukira swagger. Naizvozvo, RAML yakamisa kukura kwayo. Kuti ufungidzire chimiro chechiitiko, fungidzira kuti vagadziri vezvinhu zvikuru zveLinux vakasiya kushanda kuMicrosoft. Mamiriro ezvinhu aya anogadzira zvinodikanwa zvekushandisa Swagger, iri kusimukira zvine simba uye ichangoburwa - vhezheni yechitatu - inobata RAML maererano nekushanduka uye kushanda.

Kana zvisiri zvechimwe chinhu ...

Sezvazvinoitika, hazvisi zvese zvakavhurika-sosi zvinoshandiswa zvakagadziridzwa kuOAS 3.0. Kune microservices muGo, chinhu chinonyanya kukosha ndechekushaya kwekugadziriswa go-swagger kune yazvino vhezheni yechiyero. Nekudaro, musiyano uripo pakati peSwagger 2 neSwagger 3 uri hombe. Semuenzaniso, mune yechitatu vhezheni vagadziri:

  • tsananguro yakavandudzwa yezvirongwa zvekusimbisa
  • apedza JSON Schema rutsigiro
  • yakakwidziridzwa kugona kuwedzera mienzaniso

Mamiriro ezvinhu anosetsa: pakusarudza chiyero, unofanirwa kufunga nezve RAML, Swagger 2 uye Swagger 3 sedzimwe nzira dzakasiyana. Nekudaro, chete Swagger 2 ine rutsigiro rwakanaka rweOpenSource zvishandiso. RAML inochinjika kwazvo...uye yakaoma, uye Swagger 3 hainyatso kutsigirwa nenharaunda, saka uchafanirwa kushandisa maturusi emuridzi kana zvigadziriso zvekutengesa, izvo zvinoita kunge zvichidhura.

Uyezve, kana paine akawanda akanaka maficha muSwagger, senge yakagadzirira-yakagadzirwa portal mupepeti.swagger.io, paunogona kurodha annotation uye kuwana kuratidzwa kwayo netsananguro yakadzama, zvinongedzo uye zvinongedzo, ipapo kune yakakosha uye isina hushamwari RAML hapana mukana wakadaro. Ehe, iwe unogona kutsvaga chimwe chinhu pakati pemapurojekiti paGitHub, tsvaga analogue ipapo uye uiise iwe pachako. Nekudaro, mune chero zvazvingava, mumwe munhu achafanirwa kuchengetedza iyo portal, iyo isiri nyore kushandiswa kwekutanga kana kuyedza zvinodiwa. Uye zvakare, swagger yakanyanya "isina tsika", kana yakawanda yakasununguka - inogona kugadzirwa kubva kune zvirevo mukodhi, iyo, chokwadika, inopesana neiyo API yekutanga musimboti uye haitsigirwe nechero yeRAML zvinoshandiswa.

Pane imwe nguva takatanga kushanda neRAML semutauro unoshanduka, uye semugumisiro taifanira kuita zvinhu zvakawanda isu pachedu. Semuenzaniso, imwe yemapurojekiti inoshandisa iyo yekushandisa ramlifications muyuniti bvunzo, inongotsigira RAML 0.8. Saka taifanira kuwedzera madondoro kuitira kuti zvinoshandiswa zvigone "kudya" RAML vhezheni 1.0.

Unofanira kusarudza?

Mushure mekushanda mukupedzisa ecosystem yemhinduro dzeRAML, takasvika pamhedziso yekuti tinoda kushandura RAML kuita Swagger 2 uye kuita zvese otomatiki, kuongorora, kuyedza uye kunotevera optimization mairi. Iyi inzira yakanaka yekukwiridzira ese ari maviri kuchinjika kweRAML uye nenharaunda yerutsigiro yekushandisa kubva kuSwagger.

Kugadzirisa dambudziko iri, pane maviri OpenSource maturusi anofanirwa kupa chibvumirano chekushandura:

  1. oas-raml-inoshandura chinhu chisiri kutsigirwa parizvino. Tichiri kushanda nayo, takaona kuti ine matambudziko akati wandei ane maRAML akaoma "akapararira" pamusoro pehuwandu hwemafaira. Ichi chirongwa chakanyorwa muJavaScript uye chinoita kudzokorora kutenderera kwemuti we syntax. Nekuda kwetaipa ine simba, zvinova zvakaoma kunzwisisa iyi kodhi, saka takasarudza kusatambisa nguva kunyora zvigamba zvekushandisa kuri kufa.
  2. webapi-parser - chishandiso kubva kukambani imwechete inoti yakagadzirira kushandura chero chinhu uye zvese, uye mune chero nzira. Parizvino, rutsigiro rwakaziviswa rweRAML 0.8, RAML 1.0 uye Swagger 2.0. Zvisinei, panguva yekutsvakurudza kwedu, kushandiswa kwakanga kuchiri ZVAKANYANYA kunyorova uye kusashandiswa. Vagadziri vanogadzira mhando ye IR, zvichivabvumira kukurumidza kuwedzera mitemo mitsva mune ramangwana. Asi kusvika parizvino hazvishande.

Uye handiwo ega matambudziko atakasangana nawo. Imwe yematanho ari mupombi yedu ndeyekuona kuti RAML kubva kunzvimbo yekuchengetera ndeyechokwadi maererano nezvakatsanangurwa. Takaedza zvishandiso zvakawanda. Zvinoshamisa kuti vose vakapika pazvinyorwa zvedu munzvimbo dzakasiyana uye nemashoko akashata akasiyana zvachose. Uye kwete nguva dzose kune iyo pfungwa :).

Pakupedzisira, takagadzirisa purojekiti yemazuva ano, iyo inewo matambudziko akawanda (dzimwe nguva inoputika kunze kwebhuruu, ine matambudziko kana uchishanda nemashoko anogara achitaurwa). Nokudaro, isu hatina kuwana nzira yekugadzirisa matambudziko ekusimbisa uye kutendeuka kubva pane zvishandiso zvepachena, uye takasarudza kushandisa kushandiswa kwekutengeserana. Mune ramangwana, sezvo OpenSource maturusi achiwedzera kukura, dambudziko iri rinogona kuve nyore kugadzirisa. Panguva ino, mari yebasa uye nguva ye "kupedzisa" yakaratidzika kwatiri zvakanyanya kudarika mari yebasa rekutengeserana.

mhedziso

Mushure mezvose izvi, taida kugovera ruzivo rwedu uye cherechedza kuti usati wasarudza chimbo chekutsanangura zvibvumirano, unofanirwa kutsanangura zvakajeka zvaunoda kubva kwairi uye kuti ndeipi bhajeti yaunoda kuisa. Kana tikakanganwa nezve OpenSource, kwatove nenhamba huru yemasevhisi uye zvigadzirwa zvinokubatsira kutarisa, kushandura, uye kusimbisa. Asi dzinodhura, uye dzimwe nguva dzinodhura zvikuru. Kune kambani hombe, mitengo yakadaro inoshivirira, asi kune yekutanga vanogona kuve mutoro mukuru.

Sarudza seti yezvishandiso zvauchazoshandisa gare gare. Somuenzaniso, kana iwe uchingoda kuratidza chibvumirano, zvichava nyore kushandisa Swagger 2, iyo ine API yakaisvonaka, nokuti mu RAML iwe uchafanira kuvaka nekuchengetedza basa iwe pachako.
Kuwanda kwemabasa aunawo, kunowedzera kudiwa kwezvishandiso kuchave, uye kwakasiyana kune akasiyana mapuratifomu, uye zviri nani kuti uzvizive nekukurumidza neshanduro dziripo kuitira kuti uite sarudzo inoderedza mari yako mune ramangwana.

Asi zvakakosha kuti tizive kuti zvipenyu zvose zviripo nhasi hazvina kukwana. Naizvozvo, kana paine vateveri mukambani vanofarira kushanda muRAML nekuti "inobvumidza iwe kutaura pfungwa zviri nyore," kana, pane kudaro, sarudza Swagger nekuti "zvakajeka," zviri nani kuvasiya kuti vashande. mune zvavari Ivo vanozvijaira uye vanozvida, nekuti zvishandiso zvechero mafomati zvinoda kugadziriswa nefaira.

Kana zviri zveruzivo rwedu, mune zvinotevera zvinotumirwa tichataura nezve akamira uye ane simba macheki atinoitisa zvichibva pane yedu RAML-Swagger dhizaini, pamwe neapi magwaro atinoburitsa kubva muzvibvumirano, uye kuti zvese zvinoshanda sei.

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Ndeupi mutauro waunoshandisa kuzivisa zvibvumirano zvemicroservice?

  • RAML 0.8

  • RAML 1.0

  • Swagger 2

  • OAS3 (aka)

  • bhurani

  • Zvimwe

  • Kwete kushandisa

100 vashandisi vakavhota. 24 vashandisi vakaramba.

Source: www.habr.com

Voeg