Nitorina o jẹ RAML tabi OAS (Swagger)?

Ninu aye ti o ni agbara ti awọn iṣẹ microservices, ohunkohun le yipada — eyikeyi paati le tun kọ ni ede oriṣiriṣi, ni lilo awọn ilana oriṣiriṣi ati faaji. Awọn adehun nikan yẹ ki o wa ko yipada ki microservice le ṣe ibaraenisepo pẹlu lati ita lori ipilẹ ayeraye, laibikita awọn metamorphoses inu. Ati loni a yoo sọrọ nipa iṣoro wa ti yiyan ọna kika fun apejuwe awọn adehun ati pin awọn ohun-ọṣọ ti a ri.

Nitorina o jẹ RAML tabi OAS (Swagger)?

Ifiweranṣẹ pese sile Anna Melekhova и Vladimir Lapatin

Awọn iṣẹ Micro. Nigbati o ba n dagbasoke Acronis Cyber ​​​​Cloud, a rii pe a ko le sa fun wọn. Ati ṣiṣe apẹrẹ microservice ko ṣee ṣe laisi ṣe agbekalẹ adehun naa, eyiti o duro fun wiwo ti microservice.

Ṣugbọn nigbati ọja ba ni awọn paati diẹ sii ju ọkan lọ, ati idagbasoke adehun di iṣẹ ṣiṣe deede, iwọ ko le ṣe iranlọwọ ṣugbọn bẹrẹ ironu nipa iṣapeye ilana. O han gbangba pe wiwo (adehun) ati imuse (microservice) gbọdọ baamu ara wọn, pe awọn paati oriṣiriṣi gbọdọ ṣe awọn nkan kanna ni ọna kanna, ati pe laisi ṣiṣe ipinnu aarin ti gbogbo awọn ipinnu wọnyi, ẹgbẹ kọọkan yoo fi agbara mu lati ṣe. lo akoko lẹẹkansi ati lẹẹkansi lati gba wọn.

Nitorina o jẹ RAML tabi OAS (Swagger)?
Amazon microservices aworan atọka lati tweet Werner Vogelis, CTO Amazon
Kí ni ìṣòro náà? Ni otitọ, awọn ọna meji lo wa lati ṣe ajọṣepọ awọn iṣẹ microservices - HTTP Isinmi ati gRPC lati Google. Ti ko fẹ lati gba sinu akopọ imọ-ẹrọ Google, a yan isinmi HTTP. Awọn alaye adehun HTTP REST ni igbagbogbo ṣe apejuwe ni ọkan ninu awọn ọna kika meji: RAML ati OAS, ti a mọ tẹlẹ bi Swagger. Nitorina, gbogbo ẹgbẹ idagbasoke ni o dojuko pẹlu iwulo lati yan ọkan ninu awọn iṣedede. Ṣugbọn bi o ti wa ni jade, ṣiṣe aṣayan yii le jẹ gidigidi soro.

Kilode ti a nilo awọn akọsilẹ?

A nilo alaye asọye ki olumulo ita le ni irọrun ro ohun ti o le ṣee ṣe pẹlu iṣẹ rẹ nipasẹ wiwo HTTP rẹ. Iyẹn ni, ni ipele ipilẹ, asọye gbọdọ ni o kere ju atokọ ti awọn orisun ti o wa, awọn ọna HTTP wọn, awọn ara ibeere, atokọ ti awọn aye, itọkasi awọn akọle ti o nilo ati atilẹyin, ati awọn koodu ipadabọ ati awọn ọna kika idahun. Ẹya pataki pupọ ti asọye adehun ni apejuwe ọrọ wọn (“kini yoo ṣẹlẹ ti o ba ṣafikun paramita ibeere yii si ibeere naa?”, “Ninu ọran wo ni koodu 400 yoo pada?”)

Sibẹsibẹ, nigba ti o ba de si idagbasoke nọmba nla ti awọn iṣẹ microservice, o fẹ lati yọkuro iye afikun lati awọn asọye kikọ. Fun apẹẹrẹ, da lori RAML/Swagger, o le ṣe agbejade mejeeji alabara ati koodu olupin ni nọmba nla ti awọn ede siseto. O tun le gba iwe laifọwọyi fun microservice ki o gbee si ọna abawọle-olugbese rẹ :).

Nitorina o jẹ RAML tabi OAS (Swagger)?
Apeere ti a ti eleto guide apejuwe

Kere wọpọ ni iṣe ti idanwo awọn iṣẹ microservice ti o da lori awọn apejuwe adehun. Ti o ba ti kọ iwe asọye mejeeji ati paati kan, lẹhinna o le ṣẹda idanwo adaṣe kan ti o ṣayẹwo aipe iṣẹ naa pẹlu ọpọlọpọ awọn iru data titẹ sii. Njẹ iṣẹ naa da koodu esi pada ti a ko ṣe apejuwe ninu asọye bi? Ṣe yoo ni anfani lati ṣe ilana deede data ti ko tọ bi?

Pẹlupẹlu, imuse didara giga ti kii ṣe awọn adehun funrararẹ, ṣugbọn awọn irinṣẹ fun wiwo awọn asọye jẹ ki o ṣee ṣe lati ṣe irọrun iṣẹ naa pẹlu microservice. Iyẹn ni, ti ayaworan ba ṣapejuwe adehun ni didara, ti o da lori rẹ, awọn apẹẹrẹ ati awọn olupilẹṣẹ yoo ṣe iṣẹ naa ni awọn ọja miiran laisi awọn idiyele akoko afikun.

Lati mu awọn irinṣẹ afikun ṣiṣẹ, mejeeji RAML ati OAS ni agbara lati ṣafikun metadata ti a ko pese fun nipasẹ boṣewa (fun apẹẹrẹ, eyi ni bi o ti ṣe ni OAS).

Ni gbogbogbo, aaye fun iṣẹdanu ni lilo awọn adehun fun awọn iṣẹ microservices tobi… o kere ju ni imọ-jinlẹ.

Ifiwera hedgehog pẹlu ejo

Lọwọlọwọ, agbegbe idagbasoke pataki ni Acronis ni idagbasoke ti Acronis Cyber ​​​​Platform. Acronis Cyber ​​​​Platform jẹ awọn aaye tuntun ti isọpọ ti awọn iṣẹ ẹnikẹta pẹlu Acronis Cyber ​​​​Cloud ati apakan aṣoju. Botilẹjẹpe a ni idunnu pẹlu awọn API inu wa ti a ṣapejuwe ninu RAML, iwulo lati ṣe atẹjade API lẹẹkansii dide ibeere yiyan: boṣewa asọye wo ni o dara julọ lati lo fun iṣẹ wa?

Ni ibẹrẹ, o dabi pe awọn ojutu meji wa - awọn idagbasoke ti o wọpọ julọ ni RAML ati Swagger (tabi OAS). Sugbon ni o daju o wa ni jade wipe o wa ni o kere ko 2 yiyan, ṣugbọn 3 tabi diẹ ẹ sii.

Ni apa kan RAML wa - ede ti o lagbara ati daradara. O ṣe awọn ilana ati ogún daradara, nitorinaa ọna kika yii dara julọ fun awọn ile-iṣẹ nla ti o nilo ọpọlọpọ awọn apejuwe - iyẹn ni, kii ṣe ọja kan, ṣugbọn ọpọlọpọ awọn microservices ti o ni awọn apakan ti o wọpọ ti awọn adehun - awọn eto ijẹrisi, awọn iru data kanna, awọn ara aṣiṣe. .

Ṣugbọn olupilẹṣẹ ti RAML, Mulesoft, ti darapọ mọ Open API Consortium, eyiti o n dagbasoke Oniwasu. Nitorinaa, RAML daduro idagbasoke rẹ. Lati fojuinu ọna kika iṣẹlẹ naa, fojuinu pe awọn olutọju ti awọn paati Linux akọkọ ti o fi silẹ lati ṣiṣẹ ni Microsoft. Ipo yii ṣẹda awọn ohun pataki fun lilo Swagger, eyiti o dagbasoke ni agbara ati ni tuntun - ẹya kẹta - ni adaṣe mu RAML ni awọn ofin ti irọrun ati iṣẹ ṣiṣe.

Ti kii ba fun nkan kan ...

Bi o ti wa ni jade, kii ṣe gbogbo awọn ohun elo orisun-ìmọ ti ni imudojuiwọn si OAS 3.0. Fun awọn iṣẹ microservices ni Go, ohun pataki julọ yoo jẹ aini aṣamubadọgba lọ-swagger fun awọn titun ti ikede ti awọn bošewa. Sibẹsibẹ, iyatọ laarin Swagger 2 ati Swagger 3 jẹ tobi. Fun apẹẹrẹ, ninu ẹya kẹta awọn olupilẹṣẹ:

  • dara si apejuwe ti ìfàṣẹsí Siso
  • pari JSON Eto atilẹyin
  • igbegasoke agbara lati fi awọn apẹẹrẹ

Ipo naa jẹ ẹrin: nigbati o ba yan boṣewa, o nilo lati gbero RAML, Swagger 2 ati Swagger 3 bi awọn omiiran lọtọ. Sibẹsibẹ, Swagger 2 nikan ni atilẹyin to dara fun awọn irinṣẹ OpenSource. RAML rọ pupọ… ati eka, ati Swagger 3 ko ni atilẹyin nipasẹ agbegbe, nitorinaa iwọ yoo ni lati lo awọn irinṣẹ ohun-ini tabi awọn ojutu iṣowo, eyiti o jẹ gbowolori pupọ.

Pẹlupẹlu, ti ọpọlọpọ awọn ẹya ti o wuyi ba wa ni Swagger, gẹgẹbi ọna abawọle ti a ti ṣetan olootu.swagger.io, lori eyiti o le gbejade akọsilẹ kan ati ki o gba iwoye rẹ pẹlu apejuwe alaye, awọn ọna asopọ ati awọn asopọ, lẹhinna fun ipilẹ diẹ sii ati ore-ọfẹ RAML ko si iru anfani bẹẹ. Bẹẹni, o le wa ohunkan laarin awọn iṣẹ akanṣe lori GitHub, wa afọwọṣe kan nibẹ ki o si gbe lọ funrararẹ. Bibẹẹkọ, ni eyikeyi ọran, ẹnikan yoo ni lati ṣetọju ọna abawọle, eyiti ko rọrun fun lilo ipilẹ tabi awọn iwulo idanwo. Ni afikun, swagger jẹ “aini ipilẹ” diẹ sii, tabi ominira diẹ sii - o le ṣe ipilẹṣẹ lati awọn asọye ninu koodu, eyiti, nitorinaa, lodi si ipilẹ akọkọ API ati pe ko ni atilẹyin nipasẹ eyikeyi awọn ohun elo RAML.

Ni akoko kan a bẹrẹ ṣiṣẹ pẹlu RAML bi ede ti o ni irọrun diẹ sii, ati bi abajade a ni lati ṣe ọpọlọpọ awọn nkan funrara wa. Fun apẹẹrẹ, ọkan ninu awọn iṣẹ akanṣe lo ohun elo naa ramfications ninu awọn idanwo ẹyọkan, eyiti o ṣe atilẹyin RAML 0.8 nikan. Nitorinaa a ni lati ṣafikun awọn crutches ki ohun elo naa le “jẹ” ẹya RAML 1.0.

Ṣe o nilo lati yan?

Lẹhin ti o ti ṣiṣẹ lori ipari ilolupo ti awọn solusan fun RAML, a wa si ipari pe a nilo lati yi RAML pada si Swagger 2 ati ṣe gbogbo adaṣe, ijẹrisi, idanwo ati iṣapeye atẹle ninu rẹ. Eyi jẹ ọna ti o dara lati ṣe idogba mejeeji ni irọrun ti RAML ati atilẹyin ohun elo agbegbe lati Swagger.

Lati yanju iṣoro yii, awọn irinṣẹ OpenSource meji wa ti o yẹ ki o pese iyipada adehun:

  1. oas-raml-iyipada jẹ ohun elo ti ko ṣe atilẹyin lọwọlọwọ. Nigba ti ṣiṣẹ pẹlu ti o, a se awari wipe o ni o ni awọn nọmba kan ti awọn iṣoro pẹlu eka RAMLs ti o "tan jade" lori kan ti o tobi nọmba ti awọn faili. Eto yii jẹ kikọ ni JavaScript ati pe o ṣe itọka ipadabọ ti igi sintasi kan. Nitori titẹ agbara, o nira lati ni oye koodu yii, nitorinaa a pinnu lati ma padanu akoko kikọ awọn abulẹ fun ohun elo ti o ku.
  2. webapi-parser - ọpa lati ile-iṣẹ kanna ti o sọ pe o ṣetan lati yi iyipada ohunkohun ati ohun gbogbo pada, ati ni eyikeyi itọsọna. Titi di oni, atilẹyin ti kede fun RAML 0.8, RAML 1.0 ati Swagger 2.0. Sibẹsibẹ, ni akoko ti wa iwadi, awọn IwUlO wà ṣi PUPO ọririn ati ki o unusable. Kóòdù ṣẹda a irú ti IR, gbigba wọn lati ni kiakia fi titun awọn ajohunše ni ojo iwaju. Sugbon ki jina o kan ko ṣiṣẹ.

Ati pe kii ṣe gbogbo awọn iṣoro ti a koju. Ọkan ninu awọn igbesẹ ti opo gigun ti epo wa ni lati rii daju pe RAML lati ibi ipamọ jẹ deede ni ibatan si sipesifikesonu. A gbiyanju ọpọlọpọ awọn ohun elo. Iyalenu, gbogbo wọn bura ni awọn asọye wa ni awọn aaye oriṣiriṣi ati pẹlu awọn ọrọ buburu ti o yatọ patapata. Ati pe kii ṣe nigbagbogbo si aaye :).

Ni ipari, a yanju lori iṣẹ akanṣe ti igba atijọ, eyiti o tun ni ọpọlọpọ awọn iṣoro (nigbakugba o ṣubu kuro ninu buluu, ni awọn iṣoro nigbati o n ṣiṣẹ pẹlu awọn ikosile deede). Bayi, a ko wa ọna lati yanju awọn iṣoro ti afọwọsi ati iyipada ti o da lori awọn irinṣẹ ọfẹ, ati pinnu lati lo ohun elo iṣowo kan. Ni ọjọ iwaju, bi awọn irinṣẹ OpenSource ti dagba diẹ sii, iṣoro yii le rọrun lati yanju. Ni akoko yii, iṣẹ-ṣiṣe ati awọn idiyele akoko fun "ipari" dabi ẹnipe o ṣe pataki ju iye owo iṣẹ iṣowo lọ.

ipari

Lẹhin gbogbo eyi, a fẹ lati pin iriri wa ati akiyesi pe ṣaaju ki o to yan ọpa kan fun apejuwe awọn adehun, o nilo lati ṣalaye kedere ohun ti o fẹ lati ọdọ rẹ ati kini isunawo ti o fẹ lati nawo. Ti a ba gbagbe nipa OpenSource, nọmba nla ti awọn iṣẹ ati awọn ọja ti wa ti yoo ṣe iranlọwọ fun ọ lati ṣayẹwo, yipada, ati fọwọsi. Sugbon ti won wa ni gbowolori, ati ki o ma gidigidi gbowolori. Fun ile-iṣẹ nla kan, iru awọn idiyele jẹ ifarada, ṣugbọn fun ibẹrẹ wọn le di ẹru nla.

Ṣe ipinnu ṣeto awọn irinṣẹ ti iwọ yoo lo nigbamii. Fun apẹẹrẹ, ti o ba kan nilo lati ṣafihan adehun kan, yoo rọrun lati lo Swagger 2, eyiti o ni API lẹwa, nitori ni RAML iwọ yoo ni lati kọ ati ṣetọju iṣẹ funrararẹ.
Awọn iṣẹ-ṣiṣe diẹ sii ti o ni, iwulo fun awọn irinṣẹ yoo jẹ, ati pe wọn yatọ fun awọn iru ẹrọ oriṣiriṣi, ati pe o dara lati lẹsẹkẹsẹ mọ ararẹ pẹlu awọn ẹya ti o wa lati ṣe yiyan ti o dinku awọn idiyele rẹ ni ọjọ iwaju.

Ṣugbọn o tọ lati mọ pe gbogbo awọn ilolupo eda abemi ti o wa loni jẹ alaipe. Nitorinaa, ti awọn onijakidijagan ba wa ninu ile-iṣẹ ti o nifẹ lati ṣiṣẹ ni RAML nitori “o gba ọ laaye lati sọ awọn ero ni irọrun,” tabi, ni ilodi si, fẹ Swagger nitori “o han gbangba,” o dara julọ lati fi wọn silẹ lati ṣiṣẹ. ninu ohun ti wọn jẹ Wọn ti lo wọn ati fẹ, nitori awọn irinṣẹ ti eyikeyi awọn ọna kika nilo iyipada pẹlu faili kan.

Bi fun iriri wa, ninu awọn ifiweranṣẹ atẹle a yoo sọrọ nipa kini aimi ati awọn sọwedowo agbara ti a ṣe ti o da lori faaji RAML-Swagger wa, ati bii iwe wo ni a ṣe ipilẹṣẹ lati awọn adehun, ati bii gbogbo rẹ ṣe n ṣiṣẹ.

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Ede wo ni o lo lati ṣe alaye awọn iwe adehun microservice?

  • Ramu 0.8

  • Ramu 1.0

  • Swagger 2

  • OAS3 (aka)

  • Alailẹgbẹ

  • Miiran

  • Ko lo

100 olumulo dibo. 24 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun