{"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\/cs\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","title":{"rendered":"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/d1cad1dfa3513b5794c7be916a9dbb4b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S rostouc\u00edm pracovn\u00edm st\u00e1\u017eem v IT za\u010d\u00edn\u00e1te vn\u00edmat, \u017ee syst\u00e9my maj\u00ed sv\u016fj charakter. Mohou b\u00fdt laskav\u00e9, tich\u00e9, nerv\u00f3zn\u00ed, p\u0159\u00edsn\u00e9. Mohou p\u0159itahovat nebo odrazovat. Tak \u010di onak, mus\u00edte se s nimi \"dohadovat\", man\u00e9vrovat mezi \"\u00faskal\u00edmi\" a vytv\u00e1\u0159et \u0159et\u011bzce jejich interakce.<\/p>\n<p><\/p>\n<p>A tak jsme m\u011bli \u010dest vybudovat cloudovou platformu, co\u017e si vy\u017e\u00e1dalo \"p\u0159esv\u011bd\u010dit\" p\u00e1r subsyst\u00e9m\u016f, aby s n\u00e1mi pracovaly. Na\u0161t\u011bst\u00ed m\u00e1me \"jazyk API\", \u0161ikovn\u00e9 ruce a spoustu nad\u0161en\u00ed. <\/p>\n<p><\/p>\n<p>V tomto \u010dl\u00e1nku nebude technick\u00fd hardcore, ale pops\u00e1n\u00ed probl\u00e9m\u016f, se kter\u00fdmi jsme se setkali p\u0159i vytv\u00e1\u0159en\u00ed cloudu. Rozhodl jsem se popsat na\u0161i cestu jako lehkou technickou fantazii o tom, jak jsme hledali spole\u010dn\u00fd jazyk se syst\u00e9my a co z toho vze\u0161lo. <\/p>\n<p><\/p>\n<p>V\u00edtejte pod \u010dl\u00e1nkem.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3 id=\"nachalo-puti\">Za\u010d\u00e1tek cesty<\/h3>\n<p><\/p>\n<p>Ned\u00e1vno byla p\u0159ed na\u0161\u00edm t\u00fdmem stanovena \u00faloha \u2013 spustit cloudovou platformu pro na\u0161e klienty. M\u011bli jsme podporu veden\u00ed, zdroje, hardwarovou infrastrukturu a svobodu vybrat technologie pro realizaci softwarov\u00e9 \u010d\u00e1sti slu\u017eby.<\/p>\n<p><\/p>\n<p>Bylo rovn\u011b\u017e n\u011bkolik po\u017eadavk\u016f:<\/p>\n<p><\/p>\n<ul>\n<li>slu\u017eba pot\u0159ebuje pohodln\u00fd osobn\u00ed \u00fa\u010det;<\/li>\n<li>platforma mus\u00ed b\u00fdt integrov\u00e1na do st\u00e1vaj\u00edc\u00edho faktura\u010dn\u00edho syst\u00e9mu;<\/li>\n<li>softwarov\u00e1 a hardwarov\u00e1 \u010d\u00e1st: OpenStack + Tungsten Fabric (Open Contrail), kter\u00e9 na\u0161i in\u017een\u00fd\u0159i dok\u00e1zali dostate\u010dn\u011b dob\u0159e \"p\u0159ipravit\".<\/li>\n<\/ul>\n<p><\/p>\n<p>O tom, jak byla shrom\u00e1\u017ed\u011bna t\u00fdm, vyv\u00edjel se rozhran\u00ed osobn\u00edho \u00fa\u010dtu a p\u0159ij\u00edmaly se designov\u00e9 rozhodnut\u00ed, pov\u00edme n\u011bkdy jindy, pokud bude m\u00edt komunita Habr z\u00e1jem.<br \/>\nN\u00e1stroje, kter\u00e9 jsme se rozhodli pou\u017e\u00edt:<\/p>\n<p><\/p>\n<ul>\n<li>Python + Flask + Swagger + SQLAlchemy \u2013 zcela standardn\u00ed Python bal\u00ed\u010dek;<\/li>\n<li>Vue.js pro frontend;<\/li>\n<li>interakci mezi komponentami a slu\u017ebami jsme se rozhodli realizovat pomoc\u00ed Celery nad AMQP.<\/li>\n<\/ul>\n<p><\/p>\n<p>Abych p\u0159ede\u0161el ot\u00e1zk\u00e1m o volb\u011b Pythonu, vysv\u011btl\u00edm. Jazyk zaujal sv\u00e9 m\u00edsto v na\u0161\u00ed spole\u010dnosti a kolem n\u011bj se vytvo\u0159ila mal\u00e1, ale p\u0159esto kultura. Proto bylo rozhodnuto za\u010d\u00edt budovat slu\u017ebu pr\u00e1v\u011b na n\u011bm. O to v\u00edce, \u017ee rychlost v\u00fdvoje v takov\u00fdch \u00faloh\u00e1ch \u010dasto rozhoduje. <\/p>\n<p><\/p>\n<p>Tak za\u010dn\u011bme na\u0161e sezn\u00e1men\u00ed.<\/p>\n<p><\/p>\n<h3 id=\"molchalivyy-bill--billing\">Tich\u00fd Bill \u2013 fakturace<\/h3>\n<p><\/p>\n<p><em>S t\u00edmto klukem jsme se znali dlouho. V\u017edy sed\u011bl vedle a n\u011bco ti\u0161e po\u010d\u00edtal. N\u011bkdy n\u00e1m p\u0159ed\u00e1val \u017e\u00e1dosti u\u017eivatel\u016f, vystavoval klientsk\u00e9 faktury a spravoval slu\u017eby. Oby\u010dejn\u00fd pracovit\u00fd kluk. Pravda, byly i komplikace. Byl ml\u010denliv\u00fd, n\u011bkdy zamy\u0161len\u00fd a \u010dasto \u2014 sv\u00fdm vlastn\u00edm my\u0161lenk\u00e1m.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/262bb5c9d6234041d264f8e041e647fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Billing je prvn\u00ed syst\u00e9m, se kter\u00fdm jsme se pokusili sp\u0159\u00e1telit. A prvn\u00ed obt\u00ed\u017e, na kterou jsme narazili, byla p\u0159i zpracov\u00e1n\u00ed slu\u017eeb.<\/p>\n<p><\/p>\n<p>Nap\u0159\u00edklad p\u0159i vytv\u00e1\u0159en\u00ed nebo odstra\u0148ov\u00e1n\u00ed, \u00fakol se dostane do intern\u00ed fronty billingov\u00e9ho syst\u00e9mu. T\u00edmto zp\u016fsobem je realizov\u00e1n syst\u00e9m asynchronn\u00ed pr\u00e1ce se slu\u017ebami. Pro zpracov\u00e1n\u00ed na\u0161ich typ\u016f slu\u017eeb jsme museli \"skl\u00e1dat\" na\u0161e \u00fakoly do t\u00e9to fronty. A zde jsme se setkali s probl\u00e9mem: nedostatek dokumentace. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/4d96251df014e315308c94f848bc6cd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Podle popisu programov\u00e9ho API se tento \u00fakol p\u0159ece jen vy\u0159e\u0161it d\u00e1, ale nem\u011bli jsme \u010das na reverzn\u00ed in\u017een\u00fdrstv\u00ed, a proto jsme logiku vyt\u00e1hli ven a zorganizovali frontu \u00fakol\u016f nad RabbitMQ. Operace se slu\u017ebou je iniciov\u00e1na klientem z u\u017eivatelsk\u00e9ho rozhran\u00ed, obalena do \"\u00fakolu\" Celery na backendu a prov\u00e1d\u011bna na stran\u011b billingov\u00e9ho syst\u00e9mu a OpenStacku. Celery umo\u017e\u0148uje pom\u011brn\u011b snadno spravovat \u00fakoly, organizovat opakov\u00e1n\u00ed a sledovat stav. O \"celerysticku\" se m\u016f\u017eete do\u010d\u00edst nap\u0159\u00edklad, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/433476\/\">zde<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Tak\u00e9 billing nezastavil projekt, na kter\u00e9m do\u0161ly pen\u00edze. P\u0159i komunikaci s v\u00fdvoj\u00e1\u0159i jsme zjistili, \u017ee p\u0159i v\u00fdpo\u010dtu podle statistik (a my pot\u0159ebujeme implementovat pr\u00e1v\u011b takovou logiku) existuje slo\u017eit\u00e1 vz\u00e1jemn\u00e1 z\u00e1vislost pravidel zastaven\u00ed. Ale tyto modely se \u0161patn\u011b p\u0159izp\u016fsobuj\u00ed na\u0161im realit\u00e1m. Tak\u00e9 jsme realizovali p\u0159es \u00fakoly na Celery, p\u0159i\u010dem\u017e logiku spr\u00e1vy slu\u017eeb jsme vzali na backend. <\/p>\n<p><\/p>\n<p>Ob\u011b v\u00fd\u0161e uveden\u00e9 probl\u00e9my vedly k tomu, \u017ee se k\u00f3d trochu nafoukl a v budoucnu se budeme muset zab\u00fdvat refaktoringem, abychom odd\u011blili logiku pr\u00e1ce s \u00fakoly do samostatn\u00e9 slu\u017eby. Tak\u00e9 pot\u0159ebujeme uchov\u00e1vat \u010d\u00e1st informac\u00ed o u\u017eivatel\u00edch a jejich slu\u017eb\u00e1ch ve sv\u00fdch tabulk\u00e1ch, abychom tuto logiku podporovali.<\/p>\n<p><\/p>\n<p>Dal\u0161\u00ed probl\u00e9m \u2014 ml\u010denlivost.<\/p>\n<p><\/p>\n<p>Na \u010d\u00e1st \u017e\u00e1dost\u00ed k API Billy ml\u010dky odpov\u00edd\u00e1 \"Ok\". Nap\u0159\u00edklad to tak bylo, kdy\u017e jsme uplat\u0148ovali p\u0159isl\u00edben\u00e9 platby b\u011bhem testov\u00e1n\u00ed (o tom pozd\u011bji). \u017d\u00e1dosti byly spr\u00e1vn\u011b provedeny a my jsme nevid\u011bli chyby. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/d03f2c381fd39dbf33f2a0c3eeb1294d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Musel jsem zkoumat logy, kdy\u017e jsem pracoval se syst\u00e9mem p\u0159es UI. Uk\u00e1zalo se, \u017ee samotn\u00fd billing prov\u00e1d\u00ed podobn\u00e9 dotazy, m\u011bn\u00edc\u00ed scope na konkr\u00e9tn\u00edho u\u017eivatele, nap\u0159\u00edklad admin, p\u0159ed\u00e1vaj\u00edc\u00edho ho v parametru su.<\/p>\n<p><\/p>\n<p>Celkov\u011b, i p\u0159es mezery v dokumentaci a drobn\u00e9 chyby API, to prob\u011bhlo docela dob\u0159e. Logy se daj\u00ed \u010d\u00edst i p\u0159i vysok\u00e9m zat\u00ed\u017een\u00ed, pokud v\u00edte, jak jsou uspo\u0159\u00e1d\u00e1ny a co hledat. Struktura datab\u00e1ze je spletit\u00e1, ale docela logick\u00e1 a v n\u011b\u010dem dokonce atraktivn\u00ed.<\/p>\n<p><\/p>\n<p>Tak\u017ee, shrneme-li to, hlavn\u00ed probl\u00e9my, kter\u00e9 jsme m\u011bli b\u011bhem interakce, souvisej\u00ed se specifiky implementace konkr\u00e9tn\u00edho syst\u00e9mu: <\/p>\n<p><\/p>\n<ul>\n<li>nedokumentovan\u00e9 \u201efunkce\u201c, kter\u00e9 n\u00e1s n\u011bjak\u00fdm zp\u016fsobem ovlivnily;<\/li>\n<li>uzav\u0159en\u00e9 zdrojov\u00e9 k\u00f3dy (billing je naps\u00e1n v C++), co\u017e znamen\u00e1, \u017ee nen\u00ed mo\u017en\u00e9 probl\u00e9m \u010d\u00edslo 1 vy\u0159e\u0161it jinak ne\u017e metodou pokus\u016f a omyl\u016f.<\/li>\n<\/ul>\n<p><\/p>\n<p>Na\u0161t\u011bst\u00ed m\u00e1 produkt dostate\u010dn\u011b robustn\u00ed API a integrovali jsme do sv\u00e9ho u\u017eivatelsk\u00e9ho rozhran\u00ed n\u00e1sleduj\u00edc\u00ed podsyst\u00e9my:<\/p>\n<p><\/p>\n<ul>\n<li>modul technick\u00e9 podpory \u2014 po\u017eadavky z u\u017eivatelsk\u00e9ho rozhran\u00ed jsou \u201eprolity\u201c do billingu transparentn\u011b pro klienty slu\u017eby;<\/li>\n<li>finan\u010dn\u00ed modul \u2014 umo\u017e\u0148uje vystavovat faktury aktu\u00e1ln\u00edm klient\u016fm, prov\u00e1d\u011bt odpisy a vytv\u00e1\u0159et platebn\u00ed dokumenty;<\/li>\n<li>modul pro spr\u00e1vu slu\u017eeb \u2014 pro tento modul jsme museli implementovat sv\u016fj zpracovatel. Roz\u0161i\u0159itelnost syst\u00e9mu n\u00e1m hr\u00e1la do karet, a tak jsme \u201enau\u010dili\u201c Billu nov\u00fd typ slu\u017eeb.<br \/>\nBylo to n\u00e1ro\u010dn\u00e9, ale mysl\u00edm, \u017ee se s Billou nakonec samoz\u0159ejm\u011b domluv\u00edme.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"progulki-po-volframovym-polyam--tungsten-fabric\">Proch\u00e1zky po wolframov\u00fdch pol\u00edch \u2014 Tungsten Fabric<\/h3>\n<p><\/p>\n<p><em>Wolframov\u00e1 pole, poset\u00e1 stovkami dr\u00e1t\u016f, kter\u00e9 skrze sebe proh\u00e1n\u00ed tis\u00edce bit\u016f informac\u00ed. Informace se shroma\u017e\u010fuj\u00ed do \u201ebal\u00ed\u010dk\u016f\u201c, analyzuj\u00ed se a vytv\u00e1\u0159ej\u00ed slo\u017eit\u00e9 trasy, jako kouzlem.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/9b6dd46d9f15e0e3393a8c1222abbf2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toto je dom\u00e9na druh\u00e9ho syst\u00e9mu, se kter\u00fdm jsme se museli sp\u0159\u00e1telit \u2014 Tungsten Fabric (TF), b\u00fdval\u00fd OpenContrail. Jej\u00edm \u00fakolem je spravovat s\u00ed\u0165ov\u00e9 za\u0159\u00edzen\u00ed, poskytuj\u00edc\u00ed programovou abstrakci n\u00e1m, u\u017eivatel\u016fm. TF \u2014 SDN, encapsole slo\u017eitou logiku pr\u00e1ce se s\u00ed\u0165ov\u00fdm za\u0159\u00edzen\u00edm. O samotn\u00e9 technologii existuje slu\u0161n\u00fd \u010dl\u00e1nek, nap\u0159\u00edklad, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/muk\/blog\/251959\/\">tady<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Syst\u00e9m je integrov\u00e1n s OpenStackem (o n\u011bm se zm\u00edn\u00edm n\u00ed\u017ee) prost\u0159ednictv\u00edm pluginu Neutron. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/5abe3992efaab3e016a0c51dc0070a94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Interakce slu\u017eeb OpenStack.<\/em><\/p>\n<p><\/p>\n<p>S touto syst\u00e9mou n\u00e1s sezn\u00e1mili kluci z provozn\u00edho odd\u011blen\u00ed. Pou\u017e\u00edv\u00e1me API syst\u00e9mu pro spr\u00e1vu s\u00ed\u0165ov\u00e9 vrstvy na\u0161ich slu\u017eeb. Zat\u00edm n\u00e1m nep\u0159in\u00e1\u0161\u00ed v\u00e1\u017en\u00e9 probl\u00e9my ani obt\u00ed\u017ee (o kluc\u00edch z O\u00c9 se neodv\u00e1\u017e\u00edm hovo\u0159it), nicm\u00e9n\u011b do\u0161lo i k n\u011bkter\u00fdm kuri\u00f3zn\u00edm interakc\u00edm.<\/p>\n<p><\/p>\n<p>Prvn\u00ed vypadal takto: p\u0159\u00edkazy, kter\u00e9 vy\u017eadovaly v\u00fdstup velk\u00e9ho mno\u017estv\u00ed dat na konzoli instance p\u0159i p\u0159ipojen\u00ed p\u0159es SSH, jednodu\u0161e \u201evisely\u201c na p\u0159ipojen\u00ed, zat\u00edmco p\u0159es VNC v\u0161echno fungovalo spr\u00e1vn\u011b.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/02bc97d63a1299e1dda08fce0f10fb97.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pro ty, kte\u0159\u00ed probl\u00e9m neznaj\u00ed, to vypad\u00e1 docela legra\u010dn\u011b: ls \/root funguje spr\u00e1vn\u011b, zat\u00edmco nap\u0159\u00edklad top \u201ezamrz\u00e1\u201c naprosto. Na\u0161t\u011bst\u00ed jsme se ji\u017e s podobn\u00fdmi probl\u00e9my setkali. Vy\u0159e\u0161ilo se to lad\u011bn\u00edm MTU na trase od compute uzl\u016f k router\u016fm. Mimochodem, to nen\u00ed probl\u00e9m TF.<\/p>\n<p><\/p>\n<p>Dal\u0161\u00ed probl\u00e9m \u010dekal za rohem. V jeden \u201ekr\u00e1sn\u00fd\u201c okam\u017eik zmizela kouzla sm\u011brov\u00e1n\u00ed, prost\u011b tak. TF p\u0159estal \u0159\u00eddit sm\u011brov\u00e1n\u00ed na za\u0159\u00edzen\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/db2a75ffdf2940b2ca90f73835f7a321.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pracovali jsme s OpenStack z \u00farovn\u011b admina a pot\u00e9 jsme p\u0159ech\u00e1zeli na \u00farove\u0148 pot\u0159ebn\u00e9ho u\u017eivatele. SDN se zd\u00e1 b\u00fdt \u201ep\u0159evzato\u201c s vyu\u017eit\u00edm u\u017eivatelsk\u00e9ho rozsahu, ve kter\u00e9m se akce prov\u00e1d\u011bj\u00ed. Faktem je, \u017ee tento stejn\u00fd adminsk\u00fd \u00fa\u010det se pou\u017e\u00edv\u00e1 pro spojen\u00ed TF a OpenStack. P\u0159i p\u0159ep\u00edn\u00e1n\u00ed pod u\u017eivatele \u201ekouzlo\u201c zmizelo. Rozhodli jsme se vytvo\u0159it samostatn\u00fd \u00fa\u010det pro pr\u00e1ci se syst\u00e9mem. To umo\u017enilo pracovat, ani\u017e bychom naru\u0161ovali funk\u010dnost integrace.<\/p>\n<p><\/p>\n<h3 id=\"silikonovye-formy-zhizni--openstack\">Kryc\u00ed formy \u017eivota \u2014 OpenStack<\/h3>\n<p><\/p>\n<p><em>Kryc\u00ed bytost podivn\u00e9ho tvaru ob\u00fdv\u00e1 bl\u00edzko wolframov\u00fdch pol\u00ed. Nejv\u00edce p\u0159ipom\u00edn\u00e1 d\u00edt\u011b obr a jedn\u00edm m\u00e1vnut\u00edm m\u016f\u017ee zni\u010dit n\u00e1s, ale \u017e\u00e1dn\u00e9 jasn\u00e9 agresivity od n\u011bj nevych\u00e1z\u00ed. Nevyvol\u00e1v\u00e1 strach, ale jeho rozm\u011bry vzbuzuj\u00ed obavy. Stejn\u011b jako slo\u017eitost toho, co se kolem d\u011bje.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/8622d43e0cb963bc9ef2a2ce59a32499.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OpenStack je j\u00e1drem na\u0161\u00ed platformy.<\/p>\n<p><\/p>\n<p>OpenStack m\u00e1 n\u011bkolik subsyst\u00e9m\u016f, z nich\u017e v sou\u010dasnosti nejv\u00edce pou\u017e\u00edv\u00e1me Nova, Glance a Cinder. Ka\u017ed\u00fd z nich m\u00e1 sv\u00e9 API. Nova se star\u00e1 o v\u00fdpo\u010detn\u00ed zdroje a vytv\u00e1\u0159en\u00ed instanc\u00ed, Cinder \u2014 o spr\u00e1vu objem\u016f a jejich sn\u00edmk\u016f, Glance \u2014 image slu\u017eba, kter\u00e1 spravuje \u0161ablony OS a jejich metainformace.<\/p>\n<p><\/p>\n<p>Ka\u017ed\u00e1 slu\u017eba se spou\u0161t\u00ed v kontejneru a zprost\u0159edkovatelem zpr\u00e1v je \u201eb\u00edl\u00fd kr\u00e1l\u00edk\u201c \u2014 RabbitMQ.<\/p>\n<p><\/p>\n<p>Tento syst\u00e9m n\u00e1m zp\u016fsobil nejv\u00edce ne\u010dekan\u00fdch pot\u00ed\u017e\u00ed.<\/p>\n<p><\/p>\n<p>A prvn\u00ed probl\u00e9m na sebe nenechal dlouho \u010dekat, kdy\u017e jsme se pokusili p\u0159ipojit dal\u0161\u00ed svazek k serveru. Cinder API kategoricky odm\u00edtlo tuto \u00falohu splnit. P\u0159esn\u011bji, pokud v\u011b\u0159\u00edme samotn\u00e9mu OpenStacku, spojen\u00ed je nav\u00e1z\u00e1no, ale uvnit\u0159 virtu\u00e1ln\u00edho serveru diskov\u00e9 za\u0159\u00edzen\u00ed chyb\u00ed.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/b4755d893f3f8ad7d7aeab3af69f35cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rozhodli jsme se \"obej\u00edt\" a po\u017e\u00e1dali o stejnou akci Nova API. V\u00fdsledek \u2014 za\u0159\u00edzen\u00ed se spr\u00e1vn\u011b p\u0159ipojuje a je dostupn\u00e9 uvnit\u0159 serveru. Zd\u00e1 se, \u017ee probl\u00e9m nast\u00e1v\u00e1, kdy\u017e block-storage neodpov\u00edd\u00e1 Cinderu.<\/p>\n<p><\/p>\n<p>Dal\u0161\u00ed obt\u00ed\u017e n\u00e1s \u010dekala p\u0159i pr\u00e1ci s disky. Syst\u00e9mov\u00fd svazek se neda\u0159ilo odpojit od serveru.<\/p>\n<p><\/p>\n<p>Op\u011bt, samotn\u00fd OpenStack \"p\u0159\u00edsah\u00e1\", \u017ee spojen\u00ed zru\u0161il a nyn\u00ed je mo\u017en\u00e9 spr\u00e1vn\u011b pracovat se svazkem samostatn\u011b. Ale API kategorie necht\u011blo prov\u00e1d\u011bt operace s diskem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/952fd7cd11181605c52a7df71cd4f69f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zde jsme se rozhodli nezapojovat se p\u0159\u00edli\u0161 do konfliktu, ale zm\u011bnit pohled na logiku fungov\u00e1n\u00ed slu\u017eby. Kdy\u017e u\u017e existuje instance, mus\u00ed existovat i syst\u00e9mov\u00fd svazek. Proto u\u017eivatel zat\u00edm nem\u016f\u017ee odstranit nebo odpojit syst\u00e9mov\u00fd \"disk\", ani\u017e by odstranil \"server\".<\/p>\n<p><\/p>\n<p>OpenStack je dost slo\u017eit\u00fd komplex syst\u00e9m\u016f s vlastn\u00ed logikou interakce a slo\u017eit\u00fdm API. Na\u0161\u00ed oporou je dost podrobn\u00e1 dokumentace a samoz\u0159ejm\u011b metoda pokus\u016f a omyl\u016f (kam bychom bez n\u00ed do\u0161li).<\/p>\n<p><\/p>\n<h3 id=\"testovyy-zapusk\">Testovac\u00ed spu\u0161t\u011bn\u00ed<\/h3>\n<p><\/p>\n<p>Testovac\u00ed spu\u0161t\u011bn\u00ed jsme prov\u00e1d\u011bli v prosinci lo\u0148sk\u00e9ho roku. Hlavn\u00edm \u00fakolem bylo ov\u011b\u0159it v re\u00e1ln\u00e9m re\u017eimu n\u00e1\u0161 projekt z technick\u00e9ho hlediska a z pohledu UX. Publikum jsme vyb\u00edrali selektivn\u011b a testov\u00e1n\u00ed bylo uzav\u0159en\u00e9. Nicm\u00e9n\u011b jsme tak\u00e9 ponechali mo\u017enost po\u017e\u00e1dat o p\u0159\u00edstup k testov\u00e1n\u00ed na na\u0161em webu.<\/p>\n<p><\/p>\n<p>Samotn\u00fd test se samoz\u0159ejm\u011b neobe\u0161el bez kuri\u00f3zn\u00edch moment\u016f, nebo\u0165 na tomto na\u0161e dobrodru\u017estv\u00ed teprve za\u010d\u00edn\u00e1. <\/p>\n<p><\/p>\n<p>Za prv\u00e9, jsme pon\u011bkud nep\u0159im\u011b\u0159en\u011b posoudili z\u00e1jem o projekt a museli jsme operativn\u011b p\u0159id\u00e1vat compute-nody p\u0159\u00edmo b\u011bhem testu. B\u011b\u017en\u00fd p\u0159\u00edpad pro klastr, ale i zde byly nuance. V dokumentaci pro konkr\u00e9tn\u00ed verzi TF je uvedena konkr\u00e9tn\u00ed verze j\u00e1dra, na kter\u00e9m byla testov\u00e1na pr\u00e1ce s vRouter. Rozhodli jsme se spou\u0161t\u011bt nody s nov\u011bj\u0161\u00edmi j\u00e1dry. V\u00fdsledkem bylo, \u017ee TF nedostal trasy z nod. Museli jsme nal\u00e9hav\u011b vr\u00e1tit j\u00e1dra zp\u011bt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/377208246d5e396317fb934a35ed1227.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dal\u0161\u00ed kuriozita je spojen\u00e1 s funkcionalitou tla\u010d\u00edtka \"zm\u011bnit heslo\" v osobn\u00edm \u00fa\u010dtu. <\/p>\n<p><\/p>\n<p>Rozhodli jsme se pou\u017e\u00edt JWT pro organizaci p\u0159\u00edstupu do u\u017eivatelsk\u00e9 sekce, abychom nemuseli pracovat se sezen\u00edmi. Vzhledem k tomu, \u017ee syst\u00e9my jsou r\u016fznorod\u00e9 a \u0161iroce rozpt\u00fdlen\u00e9, spravujeme sv\u016fj token, do kter\u00e9ho \"zabalujeme\" sezen\u00ed z billingov\u00e9ho syst\u00e9mu a token z OpenStacku. P\u0159i zm\u011bn\u011b hesla token samoz\u0159ejm\u011b \"expiruje\", proto\u017ee \u00fadaje o u\u017eivateli ji\u017e nejsou platn\u00e9 a je t\u0159eba je znovu vydat. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/daa27256d0b888b2c59d4bc6129f600d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Utekla n\u00e1m tato chv\u00edle, a zdroj\u016f, abychom rychle doplnili tento kousek, jednodu\u0161e nebylo dost. Museli jsme p\u0159ed samotn\u00fdm spu\u0161t\u011bn\u00edm o\u0159\u00edznout funkce.<br \/>\nV sou\u010dasn\u00e9 dob\u011b prov\u00e1d\u00edme odhl\u00e1\u0161en\u00ed u\u017eivatele, pokud bylo heslo zm\u011bn\u011bno.<\/p>\n<p><\/p>\n<p>I p\u0159es tyto nuance prob\u011bhlo testov\u00e1n\u00ed dob\u0159e. B\u011bhem n\u011bkolika t\u00fddn\u016f n\u00e1s nav\u0161t\u00edvilo p\u0159ibli\u017en\u011b 300 lid\u00ed. M\u011bli jsme mo\u017enost pod\u00edvat se na produkt o\u010dima u\u017eivatel\u016f, otestovat ho v akci a shrom\u00e1\u017edit kvalitn\u00ed zp\u011btnou vazbu. <\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">Pokra\u010dov\u00e1n\u00ed p\u0159\u00ed\u0161t\u011b<\/h3>\n<p><\/p>\n<p>Pro mnoh\u00e9 z n\u00e1s je to prvn\u00ed projekt takov\u00e9ho rozsahu. Z\u00edskali jsme \u0159adu cenn\u00fdch lekc\u00ed o tom, jak pracovat v t\u00fdmu, p\u0159ij\u00edmat architektonick\u00e1 a designov\u00e1 rozhodnut\u00ed. Jak s omezen\u00fdmi zdroji integrovat slo\u017eit\u00e9 syst\u00e9my a uv\u00e1d\u011bt je do produkce. <\/p>\n<p><\/p>\n<p>Samoz\u0159ejm\u011b, \u017ee je na \u010dem pracovat, jak v oblasti k\u00f3du, tak na rozhran\u00edch integrace syst\u00e9m\u016f. Projekt je pom\u011brn\u011b mlad\u00fd, ale jsme pln\u00ed ambic\u00ed vybudovat z n\u011bj spolehlivou a u\u017eivatelsky p\u0159\u00edv\u011btivou slu\u017ebu.<\/p>\n<p><\/p>\n<p>Syst\u00e9my jsme ji\u017e dok\u00e1zali p\u0159esv\u011bd\u010dit. Bill poslu\u0161n\u011b po\u010d\u00edt\u00e1, vystavuje faktury a zpracov\u00e1v\u00e1 po\u017eadavky u\u017eivatel\u016f ve sv\u00e9 komo\u0159e. \"Kouzlo\" wolframov\u00fdch pol\u00ed n\u00e1m zaji\u0161\u0165uje stabiln\u00ed spojen\u00ed. A jen OpenStack ob\u010das d\u011bl\u00e1 pot\u00ed\u017ee, k\u0159i\u010d\u00ed n\u011bco jako \"WSREP dosud nep\u0159ipravil uzel pro pou\u017eit\u00ed aplikac\u00ed\". Ale to je \u00fapln\u011b jin\u00fd p\u0159\u00edb\u011bh\u2026<\/p>\n<p><\/p>\n<p>P\u0159ed ned\u00e1vnem jsme spustili slu\u017ebu.<br \/>\nV\u0161echny podrobnosti se m\u016f\u017eete dozv\u011bd\u011bt na na\u0161ich <noindex><a rel=\"nofollow\" href=\"https:\/\/clo.ru?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=product&amp;utm_term=first_clo\">webu<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby oko\u0159en\u011bn\u00fd kyberpunkem\" src=\"\/wp-content\/uploads\/2020\/04\/32550980b529a5d7b395b3962218e53e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>T\u00fdm v\u00fdvoje CLO<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">U\u017eite\u010dn\u00e9 odkazy<\/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>Zdroj: <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 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u0436\u0430.\" \/>\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\/cs\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/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\udd47P\u0159\u00edb\u011bh vzniku cloudov\u00e9 slu\u017eby, oko\u0159en\u011bn\u00fd kyberpunkem | ProHoster","description":"S nar\u016fstaj\u00edc\u00edm zku\u0161enostmi.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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.","og:url":"https:\/\/prohoster.info\/cs\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/79153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=79153"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/79153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/79154"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=79153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=79153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=79153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}