Аммо вақте ки маҳсулот зиёда аз як ҷузъро дар бар мегирад ва таҳияи шартнома ба фаъолияти муқаррарӣ табдил меёбад, шумо наметавонед дар бораи оптимизатсияи раванд фикр кунед. Маълум мешавад, ки интерфейс (қарордод) ва татбиқ (микросервис) бояд ба ҳамдигар мувофиқат кунанд, ҷузъҳои гуногун бояд як корҳоро иҷро кунанд ва бидуни қабули қарори мутамаркази ҳамаи ин қарорҳо, ҳар як даста маҷбур мешавад Барои ба даст овардани онҳо вақтро боз ва боз сарф кунед.
Диаграммаи микросервисҳои Amazon аз твит Вернер Вогелис, директори генералии Amazon
Мушкилот чист? Воқеан, ду роҳи мутақобила бо хидматрасониҳои хурд вуҷуд дорад - HTTP Rest ва gRPC аз Google. Мо намехоҳем, ки ба стеки технологии Google гирифтор шавем, мо HTTP Rest-ро интихоб кардем. Эзоҳҳои шартномаи HTTP REST аксар вақт дар яке аз ду форматҳо тавсиф карда мешаванд: RAML ва OAS, ки қаблан бо номи Swagger маъруфанд.Аз ин рӯ, ҳар як дастаи таҳиякунанда бо зарурати интихоби яке аз стандартҳо дучор меояд. Аммо тавре маълум мешавад, интихоби ин интихоб метавонад хеле душвор бошад.
Аммо, вақте ки сухан дар бораи таҳияи шумораи зиёди хидматҳои хурд меравад, шумо мехоҳед аз эзоҳҳои хаттӣ арзиши иловагӣ гиред. Масалан, дар асоси RAML/Swagger, шумо метавонед ҳам коди муштарӣ ва ҳам серверро дар шумораи зиёди забонҳои барномасозӣ тавлид кунед. Шумо инчунин метавонед ба таври худкор ҳуҷҷатҳоро барои микросервис қабул кунед ва онро ба портали таҳиягари худ бор кунед :).
Намунаи тавсифи шартномаи сохторӣ
Таҷрибаи санҷиши хидматрасониҳои хурд дар асоси тавсифи шартнома камтар маъмул аст. Агар шумо ҳам эзоҳ ва ҳам ҷузъро навишта бошед, пас шумо метавонед автотест эҷод кунед, ки мувофиқати хидматро бо намудҳои гуногуни маълумоти воридотӣ тафтиш мекунад. Оё хидмат рамзи ҷавоберо, ки дар эзоҳ тавсиф нашудааст, бармегардонад? Оё он метавонад маълумоти баръало нодурустро дуруст коркард кунад?
Ғайр аз он, татбиқи босифати на танҳо худи шартномаҳо, балки асбобҳои визуалии аннотацияҳо имкон медиҳад, ки кор бо микросервис содда карда шавад. Яъне, агар меъмор шартномаро сифатан тавсиф кунад, дар асоси он тарроҳон ва таҳиягарон хидматрасониро дар дигар маҳсулот бе хароҷоти иловагии вақт амалӣ мекунанд.
Барои фаъол кардани абзорҳои иловагӣ, ҳам RAML ва ҳам OAS қобилияти илова кардани метамаълумотро доранд, ки дар стандарт пешбинӣ нашудаанд (масалан, дар ОАС ин тавр карда мешавад).
Дар аввал чунин ба назар мерасид, ки ду роҳи ҳал вуҷуд дорад - таҳияҳои маъмултарин RAML ва Swagger (ё OAS) буданд. Аммо дар асл маълум шуд, ки на камтар аз 2 алтернатива, балки 3 ё бештар аз он вуҷуд дорад.
Аз як тараф RAML мавҷуд аст - забони пурқувват ва муассир. Он иерархия ва меросро хуб амалӣ мекунад, аз ин рӯ ин формат барои ширкатҳои бузурге мувофиқтар аст, ки ба тавсифи зиёд ниёз доранд - яъне на як маҳсулот, балки бисёр хидматрасониҳои зиёде, ки қисмҳои умумии шартномаҳо доранд - схемаҳои аутентификатсия, як намуди додаҳо, мақомоти хатогӣ .
Аммо таҳиягари RAML, Mulesoft, ба консорсиуми Open API, ки дар ҳоли рушд аст, ҳамроҳ шуд. Фиребгар. Аз ин рӯ, RAML рушди худро боздошт. Барои тасаввур кардани формати чорабинӣ, тасаввур кунед, ки нигоҳдорони ҷузъҳои асосии Linux барои кор дар Microsoft мондаанд. Ин вазъият барои истифодаи Swagger, ки ба таври динамикӣ рушд мекунад ва дар версияи охирин - сеюм - аз ҷиҳати чандирӣ ва функсионалӣ амалан ба RAML мувофиқат мекунад, заминаҳои заруриро фароҳам меорад.