{"id":79153,"date":"2020-04-24T19:42:43","date_gmt":"2020-04-24T17:42:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom"},"modified":"2020-04-24T19:42:43","modified_gmt":"2020-04-24T17:42:43","slug":"istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","title":{"rendered":"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/d1cad1dfa3513b5794c7be916a9dbb4b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mit zunehmender Erfahrung in der IT bemerkt man, dass Systeme ihren eigenen Charakter haben. Sie k\u00f6nnen nachgiebig, still, launisch oder rau sein. Manche ziehen einen an, w\u00e4hrend andere absto\u00dfen. So oder so muss man \u2018verhandeln\u2019 und zwischen den \u201eSchwellen\u201c navigieren sowie ihre Interaktionen orchestrieren.<\/p>\n<p><\/p>\n<p>So haben auch wir die Ehre, eine Cloud-Plattform aufzubauen, was bedeutete, einige Teilsysteme zu \u00fcberzeugen, mit uns zu kooperieren. Gl\u00fccklicherweise verf\u00fcgen wir \u00fcber die \u201eAPI-Sprache\u201c, handwerkliches Geschick und eine Menge Enthusiasmus. <\/p>\n<p><\/p>\n<p>In diesem Artikel wird es kein technisches Hardcore-Wissen geben, sondern eine Beschreibung der Herausforderungen, denen wir beim Aufbau der Cloud begegnet sind. Ich habe beschlossen, unseren Weg in einer leicht verdaulichen technischen Fantasie darzustellen, die erz\u00e4hlt, wie wir mit den Systemen eine gemeinsame Sprache gefunden haben und was dabei herauskam. <\/p>\n<p><\/p>\n<p>Willkommen unter dem Artikel.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3 id=\"nachalo-puti\">Der Beginn des Weges<\/h3>\n<p><\/p>\n<p>Vor einiger Zeit erhielt unser Team die Aufgabe, eine Cloud-Plattform f\u00fcr unsere Kunden zu starten. Uns standen die Unterst\u00fctzung des Managements, Ressourcen, Hardware und die Freiheit bei der Auswahl der Technologien zur Verf\u00fcgung, um den Softwareteil des Services umzusetzen.<\/p>\n<p><\/p>\n<p>Es gab auch eine Reihe von Anforderungen:<\/p>\n<p><\/p>\n<ul>\n<li>der Service ben\u00f6tigt ein benutzerfreundliches Dashboard;<\/li>\n<li>die Plattform muss in das bestehende Abrechnungssystem integriert werden;<\/li>\n<li>Software- und Hardwarekomponenten: OpenStack + Tungsten Fabric (Open Contrail), die unsere Ingenieure gut \u201ezubereiten\u201c konnten.<\/li>\n<\/ul>\n<p><\/p>\n<p>Wie das Team zusammengestellt wurde, wie die Benutzeroberfl\u00e4che des Dashboards entwickelt und Designentscheidungen getroffen wurden, werden wir ein anderes Mal erz\u00e4hlen, falls die Habr-Community Interesse zeigt.<br \/>\nDie Tools, die wir verwenden wollten:<\/p>\n<p><\/p>\n<ul>\n<li>Python + Flask + Swagger + SQLAlchemy \u2013 ein ganz gew\u00f6hnliches Python-Setup;<\/li>\n<li>Vue.js f\u00fcr das Frontend;<\/li>\n<li>f\u00fcr die Interaktion zwischen den Komponenten und Services haben wir uns entschieden, Celery \u00fcber AMQP zu verwenden.<\/li>\n<\/ul>\n<p><\/p>\n<p>Vorausschickend zu Fragen bez\u00fcglich der Auswahl von Python m\u00f6chte ich erl\u00e4utern, dass die Sprache in unserem Unternehmen ihren Platz gefunden hat und sich eine kleine, aber dennoch bestehende Kultur darum entwickelt hat. Daher wurde entschieden, den Service genau darauf aufzubauen. Umso mehr, als dass die Geschwindigkeit der Entwicklung in solchen Aufgaben oft entscheidend ist. <\/p>\n<p><\/p>\n<p>Lassen Sie uns also mit unserer Einf\u00fchrung beginnen.<\/p>\n<p><\/p>\n<h3 id=\"molchalivyy-bill--billing\">Still Bill \u2013 Abrechnung<\/h3>\n<p><\/p>\n<p><em>Wir kannten diesen Kerl schon lange. Er sa\u00df immer daneben und z\u00e4hlte stillschweigend etwas. Manchmal leitete er uns Anfragen von Nutzern weiter, stellte Kundenrechnungen aus und verwaltete die Dienste. Ein ganz normaler, flei\u00dfiger Typ. Allerdings gab es Herausforderungen. Er war still, manchmal nachdenklich und oft \u2013 in seinen eigenen Gedanken verloren.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/262bb5c9d6234041d264f8e041e647fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Abrechnung war das erste System, mit dem wir versucht haben, Freundschaft zu schlie\u00dfen. Und gleich die erste Schwierigkeit begegnete uns bei der Verarbeitung von Diensten.<\/p>\n<p><\/p>\n<p>Zum Beispiel gelangt eine Aufgabe bei der Erstellung oder L\u00f6schung in die interne Warteschlange der Abrechnung. So wurde ein System f\u00fcr die asynchrone Verarbeitung von Diensten implementiert. Um unsere eigenen Diensttypen zu bearbeiten, mussten wir unsere Aufgaben in diese Warteschlange einf\u00fcgen. Und hier stie\u00dfen wir auf ein Problem: mangelnde Dokumentation. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/4d96251df014e315308c94f848bc6cd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Laut der Beschreibung der API kann dieses Problem tats\u00e4chlich gel\u00f6st werden, aber wir hatten nicht die Zeit f\u00fcr Reverse Engineering. Daher haben wir die Logik extern ausgegliedert und eine Aufgabenwarteschlange \u00fcber RabbitMQ organisiert. Der Vorgang bei der Dienstleistung wird vom Kunden im Kundenkonto initiiert, in eine \"Aufgabe\" f\u00fcr Celery im Backend verpackt und auf der Seite des Hostings und OpenStack ausgef\u00fchrt. Celery erm\u00f6glicht eine einfache Verwaltung der Aufgaben, eine Organisation von Wiederholungen und eine \u00dcberwachung des Status. Mehr Informationen \u00fcber \"Celery\" finden Sie zum Beispiel hier. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/433476\/\">hier<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Zudem hat das Abrechnungswesen das Projekt nicht gestoppt, als die Mittel aufgebraucht waren. Im Gespr\u00e4ch mit den Entwicklern haben wir herausgefunden, dass es bei der Berechnung anhand der Statistiken (und genau diese Logik m\u00fcssen wir umsetzen) komplexe Wechselwirkungen bei den Stoppregeln gibt. Diese Modelle lassen sich jedoch nicht gut auf unsere Realit\u00e4t anwenden. Auch hier haben wir \u00fcber Aufgaben in Celery realisiert und die Logik zur Verwaltung der Dienste ins Backend verschoben. <\/p>\n<p><\/p>\n<p>Beide oben genannten Probleme haben dazu gef\u00fchrt, dass der Code etwas aufgebl\u00e4ht ist und wir in Zukunft Refactoring betreiben m\u00fcssen, um die Logik f\u00fcr die Aufgabenbearbeitung in einen separaten Dienst auszulagern. Au\u00dferdem m\u00fcssen wir einige Informationen \u00fcber die Benutzer und deren Dienstleistungen in unseren Tabellen speichern, um diese Logik zu unterst\u00fctzen.<\/p>\n<p><\/p>\n<p>Ein weiteres Problem ist die Stille.<\/p>\n<p><\/p>\n<p>Auf einige API-Anfragen antwortet Billy stillschweigend mit 'Ok'. So war es beispielsweise, als wir w\u00e4hrend des Tests (dar\u00fcber sp\u00e4ter mehr) die versprochenen Zahlungen gutgeschrieben haben. Die Anfragen wurden korrekt ausgef\u00fchrt und wir haben keine Fehler gesehen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/d03f2c381fd39dbf33f2a0c3eeb1294d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ich musste die Logs untersuchen, w\u00e4hrend ich mit dem System \u00fcber die Benutzeroberfl\u00e4che arbeitete. Dabei stellte sich heraus, dass das Billing \u00e4hnliche Anfragen ausf\u00fchrt, indem es den Scope auf den jeweiligen Benutzer, beispielsweise admin, \u00e4ndert und diesen im Parameter su \u00fcbergibt.<\/p>\n<p><\/p>\n<p>Insgesamt, trotz der L\u00fccken in der Dokumentation und kleinerer M\u00e4ngel der API, lief alles recht gut. Die Logs lassen sich sogar bei hoher Last gut lesen, wenn man versteht, wie sie aufgebaut sind und wonach man suchen muss. Die Struktur der Datenbank ist raffiniert, aber durchaus logisch und in mancher Hinsicht sogar ansprechend.<\/p>\n<p><\/p>\n<p>Zusammenfassend l\u00e4sst sich sagen, dass die Hauptprobleme, die wir in der Phase der Interaktion hatten, mit den Besonderheiten der Implementierung eines bestimmten Systems zusammenh\u00e4ngen: <\/p>\n<p><\/p>\n<ul>\n<li>undokumentierte \u201eFeatures\u201c, die uns in irgendeiner Weise betroffen haben;<\/li>\n<li>geschlossene Quellcodes (das Billing ist in C++ geschrieben), was zur Folge hatte, dass wir Problem 1 nur mit dem \u201eVersuch-und-Irrtum\u201c-Ansatz l\u00f6sen konnten.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gl\u00fccklicherweise verf\u00fcgt das Produkt \u00fcber eine ausreichend umfangreiche API, und wir haben die folgenden Teilsysteme in unser pers\u00f6nliches Dashboard integriert:<\/p>\n<p><\/p>\n<ul>\n<li>Technischer Supportmodul \u2013 Anfragen aus dem pers\u00f6nlichen Dashboard werden f\u00fcr die Servicekunden transparent ins Billing weitergeleitet;<\/li>\n<li>Finanzmodul \u2013 erm\u00f6glicht es, Rechnungen f\u00fcr aktuelle Kunden auszustellen, Abbuchungen vorzunehmen und Zahlungsdokumente zu erstellen;<\/li>\n<li>Dienstverwaltungsmodul \u2013 hierf\u00fcr mussten wir unseren eigenen Handler implementieren. Die Erweiterbarkeit des Systems kam uns zugute, und wir haben Billy auf einen neuen Diensttyp \u201etrainiert\u201c.<br \/>\nEs hat seine Zeit gedauert, aber ich denke, dass wir mit Billy klarkommen werden.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"progulki-po-volframovym-polyam--tungsten-fabric\">Spazierg\u00e4nge \u00fcber Wolframfelder \u2013 Tungsten Fabric<\/h3>\n<p><\/p>\n<p><em>Wolframfelder, durchzogen von Hunderten von Leitungen, die Tausende von Bits an Informationen leiten. Die Informationen werden in \u201ePakete\u201c zusammengefasst, analysiert und komplexe Routen aufgebaut, fast wie durch Magie.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/9b6dd46d9f15e0e3393a8c1222abbf2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das ist das Revier des zweiten Systems, mit dem wir uns anfreunden mussten \u2014 Tungsten Fabric (TF), fr\u00fcher bekannt als OpenContrail. Es hat die Aufgabe, die Netzwerkhardware zu verwalten und uns, den Benutzern, eine Softwareabstraktion zu bieten. TF ist SDN und verk\u00f6rpert die komplexe Logik im Umgang mit der Netzwerkhardware. Es gibt einen guten Artikel zu dieser Technologie, zum Beispiel, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/muk\/blog\/251959\/\">hier<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Das System ist \u00fcber das Neutron-Plugin mit OpenStack (dar\u00fcber wird sp\u00e4ter gesprochen) integriert. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/5abe3992efaab3e016a0c51dc0070a94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Interaktion der OpenStack-Services.<\/em><\/p>\n<p><\/p>\n<p>Mit diesem System wurden wir von den Jungs aus der Betriebsabteilung vertraut gemacht. Wir nutzen die API des Systems zur Verwaltung des Netzwerkstacks unserer Dienstleistungen. Ernsthafte Probleme oder Unannehmlichkeiten gab es bisher nicht (von den Jungs aus der OE will ich nicht sprechen), allerdings gab es einige Kuriosit\u00e4ten in der Interaktion.<\/p>\n<p><\/p>\n<p>Die erste sah so aus: Befehle, die eine gro\u00dfe Menge an Daten an die Konsole des Instances beim SSH-Zugriff ausgeben sollten, \u201eh\u00e4ngten\u201c die Verbindung, w\u00e4hrend es \u00fcber VNC korrekt funktionierte.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/02bc97d63a1299e1dda08fce0f10fb97.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00fcr diejenigen, die mit dem Problem nicht vertraut sind, sieht das ziemlich am\u00fcsant aus: ls \/root funktioniert einwandfrei, w\u00e4hrend zum Beispiel top komplett einfriert. Gl\u00fccklicherweise haben wir bereits \u00e4hnliche Probleme erlebt. Dieses Problem wurde durch das Tuning des MTU-Werts auf dem Weg von den Compute-Nodes zu den Routern gel\u00f6st. \u00dcbrigens, das war kein Problem von TF.<\/p>\n<p><\/p>\n<p>Das n\u00e4chste Problem wartete gleich um die Ecke. In einem \"wundervollen\" Moment verschwand die Routing-Magie einfach. TF h\u00f6rte auf, das Routing auf der Hardware zu verwalten.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/db2a75ffdf2940b2ca90f73835f7a321.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir arbeiteten mit OpenStack auf Admin-Ebene und wechselten dann zur ben\u00f6tigten Benutzerebene. SDN scheint den Scope des Benutzers zu \"\u00fcbernehmen\", mit dem die Aktionen ausgef\u00fchrt werden. Das Problem ist, dass dasselbe Admin-Konto f\u00fcr die Verbindung zwischen TF und OpenStack verwendet wird. Beim Wechsel zu einem Benutzer verschwand die \"Magie\". Es wurde beschlossen, ein separates Konto f\u00fcr die Arbeit mit dem System einzurichten. Das erm\u00f6glichte die Arbeit, ohne die Integrationsfunktionalit\u00e4t zu st\u00f6ren.<\/p>\n<p><\/p>\n<h3 id=\"silikonovye-formy-zhizni--openstack\">Silizium-Lebensformen \u2014 OpenStack<\/h3>\n<p><\/p>\n<p><em>Ein seltsames, silikonartiges Wesen lebt in der N\u00e4he von Wolframfeldern. Es \u00e4hnelt am meisten einem Riesenbaby, das mit einem einzigen Schwung uns zerdr\u00fccken k\u00f6nnte, aber es zeigt keine offensichtliche Aggression. Es verursacht keine Angst, jedoch sind seine Dimensionen besorgniserregend, ebenso wie die Komplexit\u00e4t der Geschehnisse rund um uns.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/8622d43e0cb963bc9ef2a2ce59a32499.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OpenStack ist das Herzst\u00fcck unserer Plattform.<\/p>\n<p><\/p>\n<p>OpenStack umfasst mehrere Subsysteme, von denen wir bisher am aktivsten Nova, Glance und Cinder nutzen. Jedes dieser Systeme hat eine eigene API. Nova verwaltet die Compute-Ressourcen und erstellt Instanzen, Cinder k\u00fcmmert sich um die Verwaltung von Volumes und Snapshots, w\u00e4hrend Glance der Image-Service ist, der die Betriebssystemvorlagen und ihre Metadaten verwaltet.<\/p>\n<p><\/p>\n<p>Jeder Service wird in einem Container ausgef\u00fchrt, und als Nachrichtenbroker fungiert der \u201ewei\u00dfe Hase\u201c \u2014 RabbitMQ.<\/p>\n<p><\/p>\n<p>Dieses System hat uns die meisten unerwarteten Probleme bereitet.<\/p>\n<p><\/p>\n<p>Das erste Problem lie\u00df nicht lange auf sich warten, als wir versuchten, ein zus\u00e4tzliches Volume an den Server anzuschlie\u00dfen. Die Cinder API weigerte sich strikt, diese Aufgabe auszuf\u00fchren. Genauer gesagt behauptet OpenStack, dass die Verbindung hergestellt wird, jedoch fehlt im virtuellen Server das Laufwerk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/b4755d893f3f8ad7d7aeab3af69f35cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir haben beschlossen, einen Umweg zu gehen und dieselbe Aktion \u00fcber die Nova API anzufordern. Das Ergebnis \u2013 das Ger\u00e4t verbindet sich korrekt und ist im Server verf\u00fcgbar. Es scheint, dass das Problem auftritt, wenn der Block-Speicher nicht auf Cinder reagiert.<\/p>\n<p><\/p>\n<p>Eine weitere Herausforderung erwartete uns beim Arbeiten mit den Festplatten. Der Systemvolume konnte nicht vom Server getrennt werden.<\/p>\n<p><\/p>\n<p>Wieder einmal behauptet OpenStack, die Verbindung habe es getrennt und nun k\u00f6nne man korrekt mit dem Volume separat arbeiten. Aber die API weigerte sich kategorisch, Operationen an der Festplatte durchzuf\u00fchren. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/952fd7cd11181605c52a7df71cd4f69f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hier haben wir beschlossen, nicht besonders zu k\u00e4mpfen, sondern unsere Perspektive auf die Logik des Dienstes zu \u00e4ndern. Wenn es einen Instance gibt, muss es auch einen Systemvolume geben. Daher kann der Benutzer derzeit die \"Systemdisk\" nicht l\u00f6schen oder trennen, ohne den \"Server\" zu entfernen.<\/p>\n<p><\/p>\n<p>OpenStack ist ein ziemlich komplexes System mit seiner eigenen Interaktionslogik und einer verworrenen API. Wir profitieren von der recht detaillierten Dokumentation und nat\u00fcrlich von einer Methode des Versuchens und Irrens (wo k\u00e4men wir ohne hin).<\/p>\n<p><\/p>\n<h3 id=\"testovyy-zapusk\">Testlauf<\/h3>\n<p><\/p>\n<p>Der Testlauf fand im Dezember letzten Jahres statt. Unser Hauptziel war es, das Projekt sowohl technisch als auch aus Sicht der Benutzererfahrung (UX) im Echtbetrieb zu \u00fcberpr\u00fcfen. Die Zielgruppe wurde selektiv eingeladen und der Test war geschlossen. Dennoch haben wir auch die M\u00f6glichkeit angeboten, den Zugang zu den Tests \u00fcber unsere Website anzufordern.<\/p>\n<p><\/p>\n<p>Der Test selbst blieb selbstverst\u00e4ndlich nicht ohne kuriose Momente, denn hier beginnen unsere Abenteuer erst richtig. <\/p>\n<p><\/p>\n<p>Zun\u00e4chst haben wir das Interesse am Projekt etwas falsch eingesch\u00e4tzt und mussten w\u00e4hrend des Tests schnell Compute-Nodes hinzuf\u00fcgen. Ein typischer Fall f\u00fcr ein Cluster, jedoch gab es auch hier Besonderheiten. In der Dokumentation f\u00fcr die spezifische Version von TF ist eine bestimmte Kernel-Version angegeben, die f\u00fcr die Zusammenarbeit mit vRouter getestet wurde. Wir haben uns entschieden, Nodes mit neueren Kernels zu starten. Das Ergebnis: TF erhielt keine Routen von den Nodes. Wir mussten die Kernels dringend zur\u00fccksetzen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/377208246d5e396317fb934a35ed1227.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ein weiterer kurioser Vorfall betraf die Funktionalit\u00e4t des Buttons \u201ePasswort \u00e4ndern\u201c im Kundenbereich. <\/p>\n<p><\/p>\n<p>Wir haben uns entschieden, JWT f\u00fcr den Zugriff auf das Kundenportal zu verwenden, um nicht mit Sitzungen arbeiten zu m\u00fcssen. Da die Systeme unterschiedlich und weit verteilt sind, verwalten wir unser Token, in dem wir Sitzungen vom Abrechnungssystem und das Token von OpenStack \"verpacken\". Bei einer \u00c4nderung des Passworts verf\u00e4llt das Token selbstverst\u00e4ndlich, da die Benutzerdaten ung\u00fcltig sind und neu ausgestellt werden m\u00fcssen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/daa27256d0b888b2c59d4bc6129f600d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir haben diesen Punkt aus den Augen verloren, und uns fehlten die Ressourcen, um dieses St\u00fcck schnell nachzuschreiben. Wir mussten die Funktionalit\u00e4t kurz vor dem Start im Test herausnehmen.<br \/>\nMomentan f\u00fchren wir ein Logout des Benutzers durch, wenn das Passwort ge\u00e4ndert wurde.<\/p>\n<p><\/p>\n<p>Trotz dieser Nuancen verlief das Testen gut. In den letzten zwei Wochen haben etwa 300 Personen unseren Dienst getestet. Wir konnten das Produkt durch die Augen der Nutzer sehen, es im Einsatz testen und qualitatives Feedback sammeln. <\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">Fortsetzung folgt<\/h3>\n<p><\/p>\n<p>F\u00fcr viele von uns ist dies das erste Projekt dieser Gr\u00f6\u00dfenordnung. Wir haben wertvolle Lektionen gelernt, wie man im Team arbeitet, architektonische und gestalterische Entscheidungen trifft. Wie man komplexe Systeme mit begrenzten Ressourcen integriert und in die Produktion bringt. <\/p>\n<p><\/p>\n<p>Nat\u00fcrlich gibt es sowohl bei der Codierung als auch bei der Integration von Systemen einiges zu verbessern. Das Projekt ist noch recht jung, aber wir sind voller Ambitionen, es zu einem zuverl\u00e4ssigen und benutzerfreundlichen Dienst zu entwickeln.<\/p>\n<p><\/p>\n<p>Die Systeme konnten wir bereits \u00fcberzeugen. Bill k\u00fcmmert sich brav um die Abrechnung, Rechnungen und Anfragen der Nutzer in seinem kleinen B\u00fcro. Das \"Wunder\" der Wolfram-Felder sorgt f\u00fcr stabile Verbindungen. Und nur OpenStack zickt manchmal, indem es etwas ruft wie \"WSREP has not yet prepared node for application use\". Aber das ist eine ganz andere Geschichte\u2026<\/p>\n<p><\/p>\n<p>Vor kurzem haben wir den Dienst gestartet.<br \/>\nAlle Details k\u00f6nnen Sie auf unserer <noindex><a rel=\"nofollow\" href=\"https:\/\/clo.ru?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=product&amp;utm_term=first_clo\">Webseite<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Die Entstehungsgeschichte eines Cloud-Dienstes, gew\u00fcrzt mit Cyberpunk-Elementen\" src=\"\/wp-content\/uploads\/2020\/04\/32550980b529a5d7b395b3962218e53e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>CLO-Entwicklungsteam<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">N\u00fctzliche Links<\/b><\/p>\n<p><strong>OpenStack<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/nova\/latest\/\">https:\/\/docs.openstack.org\/nova\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/keystone\/latest\/\">https:\/\/docs.openstack.org\/keystone\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/cinder\/latest\/\">https:\/\/docs.openstack.org\/cinder\/latest\/<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openstack.org\/glance\/latest\/\">https:\/\/docs.openstack.org\/glance\/latest\/<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Tungsten Fabric<\/strong><\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/docs.tungsten.io\/en\/latest\/user\/getting-started\/index.html\">http:\/\/docs.tungsten.io\/en\/latest\/user\/getting-started\/index.html<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.juniper.net\/documentation\/en_US\/contrail-cloud10.0\/topics\/concept\/contrail-cloud-openstack-integration-overview.html\">https:\/\/www.juniper.net\/documentation\/en_US\/contrail-cloud10.0\/topics\/concept\/contrail-cloud-openstack-integration-overview.html<\/a><\/noindex><\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/first\/blog\/493606\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":79154,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-79153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb\" \/>\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\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0438\u0431\u0435\u0440\u043f\u0430\u043d\u043a\u043e\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\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=\"2020-04-24T17:42:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-24T17:42:43+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\udd47Die Geschichte der Entstehung des Cloud-Services, gew\u00fcrzt mit Cyberpunk | ProHoster","description":"Mit zunehmender Erfahrung in der IT merkt man, dass Systeme ihren eigenen Charakter haben. Sie k\u00f6nnen entgegenkommend, still, launisch oder hart sein. Sie k\u00f6nnen einladend oder abweisend sein. So oder so, man muss lernen, mit ihnen \u201ezu verhandeln\u201c, zwischen \u201eUnterwassersteinen\u201c zu navigieren und ihre Interaktionen zu gestalten. So hatten wir die Ehre, eine Cloud-Plattform zu bauen, und daf\u00fcr war es n\u00f6tig, sie zu \u201e\u00fcberzeugen\u201c.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","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\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0438\u0431\u0435\u0440\u043f\u0430\u043d\u043a\u043e\u043c | ProHoster","og:description":"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 IT \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u043b\u0430\u0434\u0438\u0441\u0442\u044b\u043c\u0438, \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u043c\u0438, \u0432\u0437\u0431\u0430\u043b\u043c\u043e\u0448\u043d\u044b\u043c\u0438, \u0441\u0443\u0440\u043e\u0432\u044b\u043c\u0438. \u041c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043a \u0441\u0435\u0431\u0435 \u0438\u043b\u0438 \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c. \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f\u00bb \u0441 \u043d\u0438\u043c\u0438, \u043b\u0430\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u043a\u0430\u043c\u043d\u044f\u043c\u0438\u00bb \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0412\u043e\u0442 \u0438 \u043d\u0430\u043c \u0432\u044b\u043f\u0430\u043b\u0430 \u0447\u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u00ab\u0443\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u00bb","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","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":"2020-04-24T17:42:43+00:00","article:modified_time":"2020-04-24T17:42:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"79153","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:43:24","updated":"2022-10-02 03:25:48"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/79153","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=79153"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/79153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/79154"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=79153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=79153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=79153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}