{"id":38022,"date":"2019-10-31T22:21:14","date_gmt":"2019-10-31T19:21:14","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tak-vse-taki-raml-ili-oas-swagger\/"},"modified":"2019-10-31T22:21:14","modified_gmt":"2019-10-31T19:21:14","slug":"tak-vse-taki-raml-ili-oas-swagger","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","title":{"rendered":"Also, RAML oder OAS (Swagger)?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In der dynamischen Welt der Mikrodienste kann sich alles \u00e4ndern \u2013 jede Komponente kann in einer anderen Sprache, mit anderen Frameworks und Architekturen neu geschrieben werden. Lediglich die Vertr\u00e4ge m\u00fcssen unver\u00e4ndert bleiben, damit der Mikrodienst von au\u00dfen auf einer konstanten Grundlage angesprochen werden kann, unabh\u00e4ngig von internen Metamorphosen. Und heute werden wir \u00fcber unser Problem bei der Auswahl des Formats zur Beschreibung von Vertr\u00e4gen sprechen und die gefundenen Artefakte teilen. <\/p>\n<p><img decoding=\"async\" alt=\"Also, RAML oder OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/00864185e0f8032a304049ebf21eab21.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBeitrag verfasst von <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/annatref\/\">Anna Melehkova<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/vlapat\/\">Vladimir Lapatin<\/a><\/noindex> <\/p>\n<p><b>Mikrodienste.<\/b> Bei der Entwicklung von Acronis Cyber Cloud haben wir erkannt, dass wir nicht um sie herumkommen. Das Design eines Mikrodienstes ist ohne Formalisierung des Vertrags, der das Interface des Mikrodienstes darstellt, unm\u00f6glich.<\/p>\n<p>Doch wenn im Produkt mehr als eine Komponente enthalten ist und die Entwicklung des Vertrags zu einer regelm\u00e4\u00dfigen T\u00e4tigkeit wird, beginnt man unweigerlich \u00fcber die Optimierung des Prozesses nachzudenken. Es wird offensichtlich, dass das Interface (Vertrag) und die Implementierung (Mikrodienst) zueinander passen m\u00fcssen, dass verschiedene Komponenten dieselben Dinge gleich machen sollten und dass ohne eine zentrale Entscheidung \u00fcber all diese Aspekte jedes Team gezwungen sein wird, immer wieder Zeit f\u00fcr deren Kl\u00e4rung aufzuwenden. <\/p>\n<p><img decoding=\"async\" alt=\"Also, RAML oder OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/48048d36536f02a3a71821e7f6f32a17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Das Schema der Mikrodienste von Amazon aus <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/werner\/status\/741673514567143424\">einem Tweet<\/a><\/noindex> von Werner Vogels, CTO von Amazon<\/i><br \/>\nWorin besteht also das Dilemma? De facto gibt es zwei M\u00f6glichkeiten, wie Mikrodienste miteinander interagieren \u2013 HTTP Rest und gRPC von Google. Um nicht in den Technologiestack von Google involviert zu werden, haben wir uns f\u00fcr HTTP Rest entschieden. Die Annotations f\u00fcr HTTP REST-Vertr\u00e4ge werden in der Regel in einem der beiden Formate beschrieben: RAML und OAS, fr\u00fcher bekannt als Swagger. Daher sieht sich jedes Entwicklerteam mit der Notwendigkeit konfrontiert, sich f\u00fcr einen der Standards zu entscheiden. Aber wie sich herausgestellt hat, kann diese Wahl sehr schwierig sein.<\/p>\n<h3>Warum sind Annotations erforderlich?<\/h3>\n<p>\nEine Annotation ist notwendig, damit externe Benutzer leicht verstehen k\u00f6nnen, was sie \u00fcber die HTTP-Schnittstelle mit Ihrem Service tun k\u00f6nnen. Auf einer grundlegenden Ebene sollte die Annotation mindestens eine Liste der verf\u00fcgbaren Ressourcen, deren HTTP-Methoden, Anfragek\u00f6rper, eine Auflistung von Parametern sowie die Angabe von erforderlichen und unterst\u00fctzten Headern sowie R\u00fcckgabecodes und Antwortformaten enthalten. Ein \u00e4u\u00dferst wichtiges Element der Vertragsannotation ist auch ihre verbale Beschreibung (\u201eWas passiert, wenn dieser Query-Parameter zur Anfrage hinzugef\u00fcgt wird?\u201c, \u201eWann wird der Code 400 zur\u00fcckgegeben?\u201c)<\/p>\n<p>Dennoch, wenn es um die Entwicklung einer gro\u00dfen Anzahl von Mikrodiensten geht, m\u00f6chte man zus\u00e4tzlichen Nutzen aus den verfassten Annotationsgenerieren. Beispielsweise kann man basierend auf RAML\/Swagger nicht nur Client- sondern auch Servercode in einer Vielzahl von Programmiersprachen generieren. Au\u00dferdem kann man automatisch Dokumentationen f\u00fcr den Mikrosdienst erhalten und diese auf Ihrem Entwicklerportal hochladen : ).<\/p>\n<p><img decoding=\"async\" alt=\"Also, RAML oder OAS (Swagger)?\" src=\"\/wp-content\/uploads\/2019\/09\/0c71fb27949bdde82172c58d0c95c432.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Beispiel f\u00fcr eine strukturierte Beschreibung des Vertrags<\/i><\/p>\n<p>Seltener wird die Praxis des Testens von Mikrodiensten basierend auf Vertragsbeschreibungen angewandt. Wenn Sie sowohl die Annotation als auch die Komponente erstellt haben, k\u00f6nnen Sie einen automatisierten Test erstellen, der die Angemessenheit der Funktionsweise des Service mit verschiedenen Datentypen als Eingabe \u00fcberpr\u00fcft. Gibt der Service einen nicht in der Annotation beschriebenen Antwortcode zur\u00fcck? Kann er absichtlich falsche Daten korrekt verarbeiten?<\/p>\n<p>Dar\u00fcber hinaus vereinfacht eine qualitativ hochwertige Umsetzung nicht nur der Vertr\u00e4ge, sondern auch der Werkzeuge zur Visualisierung der Annotationsarbeit mit Mikrodiensten. Das hei\u00dft, wenn der Architekt den Vertrag qualitativ beschreibt, werden Designer und Entwickler auf dessen Grundlage den Service in andere Produkte integrieren, ohne zus\u00e4tzliche zeitliche Aufw\u00e4nde.<\/p>\n<p>F\u00fcr die Arbeit mit zus\u00e4tzlichen Tools bieten sowohl RAML als auch OAS die M\u00f6glichkeit, Metadaten hinzuzuf\u00fcgen, die nicht im Standard vorgesehen sind (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\/blob\/master\/versions\/3.0.0.md#specification-extensions\">zum Beispiel, so wird es in OAS gemacht<\/a><\/noindex>).<\/p>\n<p>Im Allgemeinen gibt es im kreativen Umgang mit Vertr\u00e4gen f\u00fcr Mikrodienste viel Spielraum\u2026 zumindest theoretisch<\/p>\n<h3>Ein Vergleich von Igels und Schlangen<\/h3>\n<p>\nDerzeit ist die Entwicklung der Acronis Cyber Platform die Priorit\u00e4t bei Acronis. Die Acronis Cyber Platform bietet neue Integrationspunkte f\u00fcr Drittanbieter-Services mit Acronis Cyber Cloud und der Agentenkomponente. W\u00e4hrend unsere internen APIs, die in RAML beschrieben sind, f\u00fcr uns zufriedenstellend waren, hat die Notwendigkeit, APIs zu ver\u00f6ffentlichen, erneut die Frage aufgeworfen: Welcher Standard f\u00fcr Annotations ist am besten f\u00fcr unsere Arbeit geeignet?<\/p>\n<p>Urspr\u00fcnglich schien es zwei L\u00f6sungen zu geben \u2013 die am weitesten verbreiteten Entwicklungen RAML und Swagger (oder OAS). Tats\u00e4chlich stellte sich jedoch heraus, dass es mindestens nicht zwei, sondern drei oder mehr Alternativen gibt.<\/p>\n<p>Einerseits gibt es RAML \u2013 eine leistungsstarke und effiziente Sprache. Die Hierarchie und Vererbung sind gut umgesetzt, sodass dieses Format besser f\u00fcr gro\u00dfe Unternehmen geeignet ist, die viele Beschreibung ben\u00f6tigen \u2013 also nicht ein Produkt, sondern viele Mikrodienste, die gemeinsame Teile von Vertr\u00e4gen haben \u2013 Authentifizierungs-Schemas, identische Datentypen, Fehlerk\u00f6rper.<\/p>\n<p>Der Entwickler von RAML, die Firma Mulesoft, hat sich dem Open API Consortium angeschlossen, das sich mit der Entwicklung besch\u00e4ftigt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/url?q=https:\/\/swagger.io\/blog\/news\/mulesoft-joins-the-open-api-initiative\/&amp;sa=D&amp;ust=1568012015646000&amp;usg=AFQjCNExaO-_GkMnfmqc_MRu6mgHYgjK-A\">Swagger<\/a><\/noindex>. Daher hat RAML seine Entwicklung eingestellt. Um sich das Veranstaltungsformat vorzustellen, kann man sich vorstellen, dass die Wartungsmitarbeiter der Hauptkomponenten von Linux zu Microsoft gewechselt sind. Eine solche Situation schafft die Voraussetzungen daf\u00fcr, Swagger zu nutzen, das dynamisch entwickelt wird und in der letzten \u2013 dritten Version \u2013 nahezu mit RAML in Bezug auf Flexibilit\u00e4t und Funktionalit\u00e4t Schritt h\u00e4lt.<\/p>\n<h3>W\u00e4re da nicht ein Aber...<\/h3>\n<p>\nWie sich herausstellte, haben l\u00e4ngst nicht alle Open-Source-Tools auf die Version OAS 3.0 aktualisiert. F\u00fcr Mikrodienste in Go ist das Fehlen einer Anpassung <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-swagger\/go-swagger\">go-swagger<\/a><\/noindex> an die neue Version des Standards am kritischsten. Doch der Unterschied zwischen Swagger 2 und Swagger 3 ist <noindex><a rel=\"nofollow\" href=\"https:\/\/swagger.io\/blog\/news\/whats-new-in-openapi-3-0\/\">enorm<\/a><\/noindex>. Beispielsweise haben die Entwickler in der dritten Version:<\/p>\n<ul>\n<li>die Beschreibung der Authentifizierungsschemas verbessert<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/swagger-api\/swagger-ui\/issues\/4819#issuecomment-413890929\">die Unterst\u00fctzung von JSON Schema fertiggestellt<\/a><\/noindex> die M\u00f6glichkeit zur Hinzuf\u00fcgung von Beispielen erweitert<\/li>\n<li>Die Situation ist am\u00fcsant: Bei der Wahl des Standards m\u00fcssen RAML, Swagger 2 und Swagger 3 als separate Alternativen betrachtet werden. Dabei hat nur Swagger 2 eine gute Unterst\u00fctzung durch OpenSource-Tools. RAML ist sehr flexibel... und komplex, w\u00e4hrend Swagger 3 schwach von der Community unterst\u00fctzt wird, sodass Sie auf eigene Tools oder kommerzielle L\u00f6sungen zur\u00fcckgreifen m\u00fcssen, die in der Regel sehr teuer sind.<\/li>\n<\/ul>\n<p>\nEs gibt viele angenehme M\u00f6glichkeiten in Swagger, wie ein fertiges Portal <\/p>\n<p>Dabei gibt es in Swagger viele n\u00fctzliche Funktionen, wie ein fertiges Portal. <noindex><a rel=\"nofollow\" href=\"https:\/\/editor.swagger.io\">editor.swagger.io<\/a><\/noindex>, auf dem man eine Annotation hochladen und deren Visualisierung mit detaillierter Beschreibung, Links und Verbindungen erhalten kann. F\u00fcr das eher fundamentale und weniger benutzerfreundliche RAML gibt es diese M\u00f6glichkeit jedoch nicht. Ja, man kann in Projekten auf GitHub nach etwas suchen, einen \u00e4hnlichen Ansatz finden und ihn selbst bereitstellen. Aber in jedem Fall muss jemand das Portal unterst\u00fctzen, was f\u00fcr Basisnutzung oder Testzwecke nicht so praktisch ist. Au\u00dferdem ist Swagger \u201eunprinzipiell\u201c, oder sagen wir liberal \u2014 es kann aus Kommentaren im Code generiert werden, was nat\u00fcrlich dem API-First-Prinzip widerspricht und von keinem der RAML-Tools unterst\u00fctzt wird.<\/p>\n<p>Wir haben zu unserer Zeit begonnen, mit RAML als einem flexibleren Format zu arbeiten, und hatten schlie\u00dflich viel selbst zu tun. Zum Beispiel wird in einem der Projekte das Tool <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotify\/ramlfications\">ramlfications<\/a><\/noindex> in Unit-Tests verwendet, das nur RAML 0.8 unterst\u00fctzt. Daher mussten wir Hacks hinzuf\u00fcgen, damit das Tool RAML-Versionen 1.0 verarbeiten kann.<\/p>\n<h3>Muss man w\u00e4hlen?<\/h3>\n<p>\nNachdem wir uns mit dem Hinzuf\u00fcgen von L\u00f6sungsecosystemen f\u00fcr RAML herumgeschlagen hatten, kamen wir zu dem Schluss, dass wir RAML in Swagger 2 konvertieren m\u00fcssen und dann darin alle Automatisierung, \u00dcberpr\u00fcfung, Tests und nachfolgende Optimierung durchf\u00fchren. Dies ist eine gute M\u00f6glichkeit, gleichzeitig die Flexibilit\u00e4t von RAML und die Unterst\u00fctzung des Community-Tools von Swagger zu nutzen. <\/p>\n<p>F\u00fcr diese Aufgabe gibt es zwei OpenSource-Tools, die die Konvertierung von Vertr\u00e4gen erm\u00f6glichen sollten:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mulesoft\/oas-raml-converter\">oas-raml-converter<\/a><\/noindex> \u2013 ein derzeit nicht unterst\u00fctztes Tool. W\u00e4hrend unserer Arbeit damit fanden wir heraus, dass es eine Reihe von Problemen mit komplexen RAML-Dateien gibt, die auf viele Dateien verteilt sind. Dieses Programm ist in JavaScript geschrieben und f\u00fchrt eine rekursive Traversierung des Syntaxbaums durch. Aufgrund der dynamischen Typisierung wurde es schwierig, in diesem Code klarzukommen, also entschieden wir uns, keine Zeit mit dem Schreiben von Patches f\u00fcr dieses sterbende Tool zu verschwenden.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/raml-org\/webapi-parser\">webapi-parser<\/a><\/noindex> \u2014 ein Tool von derselben Firma, das vorgibt, alles und jedes zu konvertieren, und zwar in jede Richtung. Bis heute wird die Unterst\u00fctzung von RAML 0.8, RAML 1.0 und Swagger 2.0 angegeben. Allerdings war das Tool zum Zeitpunkt unserer Untersuchung noch <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aml-org\/amf\/issues\/517\">\u00c4U\u00dfERST<\/a><\/noindex> unreif und nicht gebrauchsf\u00e4hig. Die Entwickler schaffen eine Art <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Intermediate_representation\">IR<\/a><\/noindex>, was ihnen in Zukunft erm\u00f6glicht, neue Standards schnell hinzuzuf\u00fcgen. Aber bisher funktioniert das alles einfach nicht.<\/li>\n<\/ol>\n<p>\nUnd das ist noch nicht alles an Herausforderungen, mit denen wir konfrontiert waren. Einer der Schritte in unserem Pipeline-Prozess ist die \u00dcberpr\u00fcfung, ob das RAML aus dem Repository korrekt in Bezug auf die Spezifikation ist. Wir haben mehrere Tools ausprobiert. Erstaunlicherweise haben alle unsere Anmerkungen an verschiedenen Stellen mit v\u00f6llig unterschiedlichen Schimpfw\u00f6rtern kritisiert. Dabei waren sie nicht immer berechtigt :).<\/p>\n<p>Letztendlich haben wir uns f\u00fcr ein inzwischen veraltetes Projekt entschieden, das auch eine Reihe von Problemen hat (manchmal st\u00fcrzt es aus heiterem Himmel ab, hat Probleme bei der Verarbeitung von regul\u00e4ren Ausdr\u00fccken). So haben wir keinen Weg gefunden, die Validierungs- und Konvertierungsaufgaben mit kostenlosen Werkzeugen zu l\u00f6sen und beschlossen, auf ein kommerzielles Tool zur\u00fcckzugreifen. In Zukunft, wenn OpenSource-Mittel weiter fortgeschritten sind, k\u00f6nnte die L\u00f6sung dieser Aufgabe einfacher werden. Aber momentan erscheinen uns die Arbeits- und Zeitkosten f\u00fcr \"Nachbesserungen\" als erheblich h\u00f6her als die Kosten f\u00fcr den kommerziellen Dienst.<\/p>\n<h3>Fazit<\/h3>\n<p>\nNach alldem wollten wir unsere Erfahrungen teilen und betonen, dass man sich vor der Auswahl eines Werkzeugs f\u00fcr die Vertragsbeschreibung genau dar\u00fcber klar werden sollte, was man will und welches Budget man bereit ist, zu investieren. Wenn man OpenSource au\u00dfer Acht l\u00e4sst, gibt es bereits jetzt eine Vielzahl von Diensten und Produkten, die bei der \u00dcberpr\u00fcfung, Konvertierung und Validierung helfen k\u00f6nnen. Aber sie sind teuer, manchmal sogar sehr teuer. F\u00fcr ein gro\u00dfes Unternehmen sind solche Ausgaben tragbar, aber f\u00fcr ein Startup k\u00f6nnen sie eine gro\u00dfe Belastung darstellen.<\/p>\n<p>Bestimmen Sie die Werkzeugauswahl, die Sie sp\u00e4ter verwenden werden. Wenn Sie nur einen Vertrag anzeigen m\u00fcssen, ist es einfacher, Swagger 2 zu verwenden, das eine ansprechende API bietet, denn bei RAML m\u00fcssten Sie den Dienst selbst aufsetzen und betreiben.<br \/>\nJe mehr Aufgaben Sie haben, desto gr\u00f6\u00dfer wird der Bedarf an Werkzeugen sein, und diese unterscheiden sich je nach Plattform. Es ist ratsam, sich sofort mit den verf\u00fcgbaren Versionen vertraut zu machen, um eine Wahl zu treffen, die Ihre zuk\u00fcnftigen Ausgaben minimiert.<\/p>\n<p>Es ist jedoch anzuerkennen, dass alle heute existierenden \u00d6kosysteme unvollkommen sind. Wenn es in einem Unternehmen Fans gibt, die gerne mit RAML arbeiten, weil \u201ees flexibleres Denken erm\u00f6glicht\u201c, oder umgekehrt Swagger bevorzugen, weil \u201ees verst\u00e4ndlicher ist\u201c, dann ist es am besten, sie das tun zu lassen, was sie gewohnt sind und m\u00f6chten, denn die Werkzeuge eines jeden Formats erfordern Feinarbeit. <\/p>\n<p>Was unsere Erfahrung betrifft, so werden wir in den n\u00e4chsten Beitr\u00e4gen \u00fcber die statischen und dynamischen Pr\u00fcfungen berichten, die wir auf Basis unserer RAML-Swagger-Architektur durchf\u00fchren, sowie \u00fcber die Dokumentation, die wir aus den Vertr\u00e4gen generieren und wie all dies funktioniert.<\/p>\n<p class=\"for_users_only_msg\">Nur registrierte Benutzer k\u00f6nnen an der Umfrage teilnehmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Bitte einloggen<\/a><\/noindex>.<\/p>\n<h2 class=\"default-block__polling-title\">Und welche Sprache verwenden Sie f\u00fcr die Annotationen von Microservice-Vertr\u00e4gen?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    RAML 0.8<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    RAML 1.0<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Swagger 2<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    OAS3 (auch bekannt als)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Blueprint<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Anderes<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ich benutze es nicht<\/p>\n<\/li>\n<\/ul>\n<p>    100 Benutzer haben abgestimmt. 24 Benutzer haben sich enthalten.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/acronis\/blog\/466691\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u043d\u0430 \u043d\u0435\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043c\u0435\u0442\u0430\u043c\u043e\u0440\u0444\u043e\u0437. \u0418 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28540,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0430\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 RAML \u0438\u043b\u0438 OAS (Swagger)? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:21:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:21:14+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Was ist es nun: RAML oder OAS (Swagger)? | ProHoster","description":"In der dynamischen Welt der Microservices kann sich alles \u00e4ndern \u2013 jede Komponente kann in einer anderen Sprache neu geschrieben werden, wobei andere Frameworks und Architekturen verwendet werden.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0430\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 RAML \u0438\u043b\u0438 OAS (Swagger)? | ProHoster","og:description":"\u0412 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tak-vse-taki-raml-ili-oas-swagger","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:21:14+00:00","article:modified_time":"2019-10-31T19:21:14+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38022","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 20:09:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:43:20","updated":"2026-01-23 20:09:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/38022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=38022"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/38022\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28540"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=38022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=38022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=38022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}