To shin RAML ne ko OAS (Swagger)?

A cikin duniya mai ƙarfi na ƙananan sabis, komai na iya canzawa - kowane ɓangaren ana iya sake rubuta shi cikin yare daban-daban, ta amfani da sassa daban-daban da gine-gine. Kwangiloli ne kawai ya kamata su kasance ba su canzawa ta yadda za a iya yin mu'amala da microservice daga waje na dindindin, ba tare da la'akari da metamorphoses na ciki ba. Kuma a yau za mu yi magana game da matsalarmu na zabar tsari don kwatanta kwangila da raba kayan tarihi da muka samo.

To shin RAML ne ko OAS (Swagger)?

An shirya post Anna Melekhova и Vladimir Lapatin

Microservices. Lokacin haɓaka Acronis Cyber ​​​​Cloud, mun fahimci cewa ba za mu iya tserewa daga gare su ba. Kuma zayyana microservice ba shi yiwuwa ba tare da tsara kwangilar ba, wanda ke wakiltar mahaɗin microservice.

Amma lokacin da samfurin ya ƙunshi abubuwa fiye da ɗaya, kuma haɓaka kwangila ya zama aiki na yau da kullun, ba za ku iya taimakawa ba sai dai fara tunanin inganta tsarin. Ya zama a fili cewa haɗin gwiwar (kwangilar) da aiwatarwa (microservice) dole ne su dace da juna, cewa sassa daban-daban dole ne su yi abubuwa iri ɗaya a cikin hanya ɗaya, kuma ba tare da yanke shawara mai mahimmanci na duk waɗannan yanke shawara ba, kowace ƙungiya za a tilastawa. kashe lokaci akai-akai don samun su.

To shin RAML ne ko OAS (Swagger)?
Tsarin microservices na Amazon daga tweet Werner Vogelis, CTO Amazon
Menene matsalar? Hakika, akwai hanyoyi guda biyu don yin hulɗa tare da microservices - HTTP Rest da gRPC daga Google. Ba mu son a kama mu cikin tarin fasahar Google, mun zaɓi Huramar HTTP. An fi bayyana bayanan kwangilar HTTP REST a cikin ɗayan nau'i biyu: RAML da OAS, wanda aka fi sani da Swagger. Saboda haka, kowace ƙungiyar ci gaba tana fuskantar buƙatar zaɓar ɗaya daga cikin ma'auni. Amma kamar yadda ya fito, yin wannan zaɓi na iya zama da wahala sosai.

Me yasa ake buƙatar bayanai?

Ana buƙatar annotation domin mai amfani na waje ya sami sauƙin gano abin da za a iya yi da sabis ɗin ku ta hanyar haɗin HTTP. Wato, a matakin asali, bayanin dole ne ya ƙunshi aƙalla jerin albarkatun da ake da su, hanyoyin HTTP ɗin su, gawawwakin buƙatun, jeri na sigogi, nunin kanun labarai da ake buƙata da tallafi, da kuma lambobin dawo da tsarin amsawa. Wani muhimmin mahimmanci na bayanin kwangilar shine bayanin su na magana ("menene zai faru idan kun ƙara wannan sigar tambaya akan buƙatar?", "A wane yanayi za a dawo da lambar 400?").

Koyaya, idan ana batun haɓaka ɗimbin ƙananan sabis, kuna son fitar da ƙarin ƙima daga bayanan da aka rubuta. Misali, dangane da RAML/Swagger, zaku iya samar da abokin ciniki da lambar uwar garken a cikin ɗimbin yarukan shirye-shirye. Hakanan zaka iya karɓar takaddun ta atomatik don microservice kuma loda shi zuwa tashar mai haɓakawa :).

To shin RAML ne ko OAS (Swagger)?
Misalin tsararren bayanin kwangila

Karancin gama gari shine aikin gwada ƙananan sabis bisa kwatancen kwangila. Idan kun rubuta duka annotation da bangaren, to zaku iya ƙirƙirar autotest wanda ke bincika dacewar sabis ɗin tare da nau'ikan bayanan shigarwa iri-iri. Shin sabis ɗin yana dawo da lambar amsawa wanda ba a siffanta shi a cikin bayanin ba? Shin zai iya aiwatar da daidaitattun bayanan da ba daidai ba?

Bugu da ƙari, aiwatar da inganci mai inganci ba kawai kwangilar kansu ba, har ma da kayan aikin da za a iya gani a bayyane yana ba da damar sauƙaƙe aikin tare da microservice. Wato, idan mai zanen ya bayyana kwangilar da kyau, bisa ga shi, masu zanen kaya da masu haɓakawa za su aiwatar da sabis a cikin wasu samfurori ba tare da ƙarin farashin lokaci ba.

Don ba da damar ƙarin kayan aikin, duka RAML da OAS suna da ikon ƙara metadata waɗanda ba a ƙididdige su ba.misali, haka ake yi a OAS).

Gabaɗaya, ikon kerawa don yin amfani da kwangiloli don microservices yana da girma… aƙalla a cikin ka'idar.

Kwatanta bushiya da maciji

A halin yanzu, yankin ci gaban fifiko a Acronis shine haɓakar Acronis Cyber ​​​​Platform. Acronis Cyber ​​​​Platform sabon maki ne na haɗin kai na sabis na ɓangare na uku tare da Acronis Cyber ​​​​Cloud da ɓangaren wakili. Ko da yake mun yi farin ciki da API ɗin mu na ciki da aka kwatanta a cikin RAML, buƙatar buga API ɗin ya sake tayar da tambayar zaɓi: wane ƙa'idar annotation ya fi dacewa don amfani da aikinmu?

Da farko, da alama akwai mafita guda biyu - mafi yawan abubuwan da suka faru sune RAML da Swagger (ko OAS). Amma a zahiri ya juya cewa aƙalla ba 2 madadin ba, amma 3 ko fiye.

A gefe guda akwai RAML - harshe mai ƙarfi da inganci. Yana aiwatar da matsayi da gado da kyau, don haka wannan tsari ya fi dacewa da manyan kamfanoni waɗanda ke buƙatar bayanai da yawa - wato, ba samfura ɗaya ba, amma yawancin microservices waɗanda ke da sassan gama gari na kwangiloli - tsare-tsaren tantancewa, nau'ikan bayanai iri ɗaya, gawar kuskure. .

Amma mai haɓaka RAML, Mulesoft, ya shiga ƙungiyar Open API, wacce ke haɓakawa zagi. Don haka RAML ta dakatar da ci gabanta. Don tunanin tsarin taron, yi tunanin cewa masu kula da manyan abubuwan Linux sun bar aiki don Microsoft. Wannan yanayin yana haifar da abubuwan da ake buƙata don amfani da Swagger, wanda ke haɓakawa da ƙarfi kuma a cikin sabuwar - sigar ta uku - a zahiri tana kama RAML cikin yanayin sassauci da aiki.

Idan ba don abu ɗaya ba ...

Kamar yadda ya fito, ba duk kayan aikin buɗe tushen ba ne aka sabunta su zuwa OAS 3.0. Don microservices a cikin Go, abu mafi mahimmanci zai zama rashin daidaitawa go-swagger don sabon sigar daidaitattun. Koyaya, bambanci tsakanin Swagger 2 da Swagger 3 shine babba. Misali, a cikin sigar ta uku masu haɓakawa:

  • ingantaccen bayanin tsare-tsaren tantancewa
  • gama Tallafin Tsarin JSON
  • inganta ikon ƙara misalai

Halin yana da ban dariya: lokacin zabar ma'auni, kuna buƙatar la'akari da RAML, Swagger 2 da Swagger 3 azaman madadin daban. Koyaya, Swagger 2 kawai yana da kyakkyawan tallafi don kayan aikin OpenSource. RAML yana da sassauƙa sosai...kuma mai sarƙaƙiya, kuma Swagger 3 al'umma ba ta da tallafi, don haka dole ne ku yi amfani da kayan aikin mallakar mallaka ko hanyoyin kasuwanci, waɗanda ke da tsada sosai.

Bugu da ƙari, idan akwai abubuwa masu kyau da yawa a cikin Swagger, kamar tashar tashar da aka shirya edita.swagger.io, wanda zaku iya loda bayanin kuma ku sami hangen nesa tare da cikakkun bayanai, hanyoyin haɗin gwiwa da haɗin gwiwa, to don ƙarin mahimmanci da ƙarancin abokantaka na RAML babu irin wannan damar. Ee, zaku iya nemo wani abu tsakanin ayyukan akan GitHub, nemo analogue a wurin kuma tura shi da kanku. Koyaya, a kowane hali, dole ne wani ya kula da tashar, wanda bai dace ba don amfanin asali ko buƙatun gwaji. Bugu da ƙari, swagger ya fi "marasa ƙa'ida", ko mafi sassaucin ra'ayi - ana iya haifar da shi daga sharhi a cikin lambar, wanda, ba shakka, ya saba wa ka'idar API ta farko kuma ba ta da goyan bayan kowane kayan aikin RAML.

A wani lokaci muka fara aiki da RAML a matsayin harshe mai sassauƙa, kuma a sakamakon haka ya zama dole mu yi abubuwa da yawa da kanmu. Alal misali, ɗaya daga cikin ayyukan yana amfani da kayan aiki ramfications a cikin gwaje-gwajen naúrar, wanda kawai ke tallafawa RAML 0.8. Don haka dole ne mu ƙara crutches domin mai amfani ya iya "ci" RAML version 1.0.

Kuna buƙatar zaɓar?

Bayan da muka yi aiki a kan kammala yanayin yanayin mafita na RAML, mun kai ga ƙarshe cewa muna buƙatar canza RAML zuwa Swagger 2 da aiwatar da duk aikin sarrafa kansa, tabbatarwa, gwaji da haɓakawa na gaba a ciki. Wannan hanya ce mai kyau don yin amfani da sassaucin RAML da tallafin kayan aikin al'umma daga Swagger.

Don magance wannan matsalar, akwai kayan aikin OpenSource guda biyu waɗanda yakamata su ba da canjin kwangila:

  1. oas-raml-converter kayan aiki ne marasa tallafi a halin yanzu. Yayin da muke aiki da shi, mun gano cewa yana da matsaloli da yawa tare da hadaddun RAMLs waɗanda aka “watsa” akan babban adadin fayiloli. An rubuta wannan shirin a cikin JavaScript kuma yana yin jujjuyawar bishiyar syntax. Sakamakon bugawa mai ƙarfi, yana da wahala a fahimci wannan lambar, don haka mun yanke shawarar kada mu ɓata lokaci don rubuta faci don abin amfani mai mutuwa.
  2. webapi-parser - kayan aiki daga kamfani ɗaya wanda ke da'awar cewa yana shirye don canza wani abu da komai, kuma a kowace hanya. Har zuwa yau, an sanar da tallafi don RAML 0.8, RAML 1.0 da Swagger 2.0. Koyaya, a lokacin bincikenmu, mai amfani ya kasance har yanzu MUSAMMAN damp kuma mara amfani. Masu haɓakawa suna ƙirƙirar nau'in IR, ƙyale su da sauri ƙara sababbin ka'idoji a nan gaba. Amma ya zuwa yanzu ba ya aiki.

Kuma ba wannan ne duk matsalolin da muka fuskanta ba. Ɗaya daga cikin matakan da ke cikin bututun mu shine tabbatar da cewa RAML daga ma'adanar daidai yake dangane da ƙayyadaddun bayanai. Mun gwada kayan aiki da yawa. Abin mamaki, duk sun rantse da bayanin mu a wurare daban-daban kuma da munanan kalmomi mabanbanta. Kuma ba ko da yaushe zuwa batu :).

A ƙarshe, mun zauna a kan wani aikin da ba a daɗe ba, wanda kuma yana da matsaloli masu yawa (wani lokaci ya ɓace daga blue, yana da matsaloli lokacin aiki tare da maganganu na yau da kullum). Don haka, ba mu sami hanyar magance matsalolin tabbatarwa da canzawa ba bisa ga kayan aikin kyauta, kuma mun yanke shawarar yin amfani da kayan aiki na kasuwanci. A nan gaba, yayin da kayan aikin OpenSource ke ƙara girma, wannan matsalar na iya zama da sauƙin warwarewa. A halin yanzu, aikin aiki da farashin lokaci don "kammala" sun kasance a gare mu sun fi mahimmanci fiye da farashin sabis na kasuwanci.

ƙarshe

Bayan duk wannan, muna so mu raba kwarewarmu kuma mu lura cewa kafin zabar kayan aiki don kwatanta kwangila, kana buƙatar bayyana abin da kake so daga gare ta da kuma abin da kasafin kudin da kake son zuba jari. Idan muka manta game da OpenSource, an riga an sami ɗimbin sabis da samfuran da zasu taimaka muku bincika, canzawa, da ingantawa. Amma suna da tsada, kuma wani lokacin tsada sosai. Ga babban kamfani, irin waɗannan farashin suna da jurewa, amma don farawa za su iya zama babban nauyi.

Ƙayyade saitin kayan aikin da za ku yi amfani da su daga baya. Misali, idan kawai kuna buƙatar nuna kwangila, zai zama da sauƙi don amfani da Swagger 2, wanda ke da API mai kyau, saboda a cikin RAML dole ne ku gina da kula da sabis ɗin da kanku.
Yawancin ayyukan da kuke da shi, buƙatun kayan aikin za su kasance, kuma sun bambanta don dandamali daban-daban, kuma yana da kyau ku fahimci kanku nan da nan tare da nau'ikan da ke akwai don yin zaɓin da zai rage farashin ku a nan gaba.

Amma yana da kyau a gane cewa duk yanayin da ke wanzuwa a yau ajizai ne. Sabili da haka, idan akwai magoya baya a cikin kamfanin da suke son yin aiki a RAML saboda "yana ba ku damar bayyana ra'ayoyin da sassauƙa," ko, akasin haka, fi son Swagger saboda "ya fi kyau," ya fi kyau a bar su suyi aiki. a cikin abin da suke Suna amfani da shi kuma suna son shi, saboda kayan aikin kowane nau'i na buƙatar gyara tare da fayil.

Dangane da gogewarmu, a cikin waɗannan posts za mu yi magana game da waɗanne ƙwararrun ƙididdiga masu ƙarfi waɗanda muke gudanar da su bisa tsarin gine-ginenmu na RAML-Swagger, da kuma irin takaddun da muke samarwa daga kwangiloli, da yadda duk yake aiki.

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Wane harshe kuke amfani da shi don bayyana kwangilolin microservice?

  • RAML 0.8

  • RAML 1.0

  • Swagar 2

  • OAS3 (aka)

  • takarda

  • Sauran

  • Ba amfani

100 masu amfani sun kada kuri'a. Masu amfani 24 sun kaurace.

source: www.habr.com

Add a comment