{"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\/et\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","title":{"rendered":"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/d1cad1dfa3513b5794c7be916a9dbb4b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>IT-algusesse astudes hakkad m\u00e4rkama, et s\u00fcsteemidel on oma iseloom. Need v\u00f5ivad olla s\u00f5bralikud, vaiksed, kapriissed v\u00f5i karmid. Need v\u00f5ivad meeldida v\u00f5i pigem t\u00f5ukavad eemale. Niisiis peame \u201ekokkuleppele\u201c j\u00f5udma, v\u00e4ltima \u201ealateid\u201c ja looma nendevahelisi sidemeid.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd on meil au ehitada pilveplatvorm ja selle jaoks pidime \u201eveenduma\u201c paari alams\u00fcsteemi t\u00f6\u00f6tama meiega. \u00d5nneks on meil olemas \u201eAPI keel\u201c, osavad k\u00e4ed ja hunnik entusiasmi. <\/p>\n<p><\/p>\n<p>Selles artiklis ei ole mingit tehnilist hardcore'i, vaid r\u00e4\u00e4gime probleemidest, millega me silmitsi seisime pilve loomise protsessis. Otsustasin kirjeldada meie teekonda kerge tehnilise fantaasiana selle kohta, kuidas me \u00fche keele leidmiseks s\u00fcsteemidega kokku leppisime ja mis sellest v\u00e4lja tuli. <\/p>\n<p><\/p>\n<p>Tere tulemast edasi lugema.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3 id=\"nachalo-puti\">Teekonna algus<\/h3>\n<p><\/p>\n<p>M\u00f5ni aeg tagasi seati meie meeskonnale \u00fclesanne \u2013 luua pilveplatvorm meie klientidele. Meil olid juhit\u00f6\u00f6tajate toetused, ressursid, riistvarakogum ja vabadus valida tehnoloogiaid rakenduse arendamiseks.<\/p>\n<p><\/p>\n<p>Sealjuures oli ka m\u00f5ned n\u00f5udmised:<\/p>\n<p><\/p>\n<ul>\n<li>teenusele on vajalik mugav isiklik konto;<\/li>\n<li>platvorm peab olema integreeritud olemasoleva arveldamise s\u00fcsteemiga;<\/li>\n<li>programmi- ja riistvaragrupi kombinatsioon: OpenStack + Tungsten Fabric (Open Contrail), mille meie insenerid on piisavalt h\u00e4sti \u201evalmistama\u201c \u00f5ppinud.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kuidas me meeskonna kokku panime, arendasime isiklikku konto liidest ja tegime disainilisi otsuseid, r\u00e4\u00e4gime m\u00f5nel teisel korral, kui hubarate kogukonnal on huvi.<br \/>\nT\u00f6\u00f6riistad, mida me otsustasime kasutada:<\/p>\n<p><\/p>\n<ul>\n<li>Python + Flask + Swagger + SQLAlchemy \u2013 t\u00e4iesti tavaline Python\u2019i komplekt;<\/li>\n<li>Vue.js koduosas;<\/li>\n<li>komponentide ja teenuste vahelise suhtluse tegime l\u00e4bi Celery AMQP peal.<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00fcsimuste v\u00e4ltimiseks, miks valida Python, selgitan. Keel on leidnud oma ni\u0161i meie ettev\u00f5ttes ja selle \u00fcmber on kujunenud v\u00e4ike, kuid siiski kultuur. Seet\u00f5ttu otsustasime alustada teenuse ehitamist just sellel. Eriti kuna nende \u00fclesannete puhul m\u00e4ngib arenduse kiirus tihti suurt rolli. <\/p>\n<p><\/p>\n<p>Nii et alustame meie tutvustamist.<\/p>\n<p><\/p>\n<h3 id=\"molchalivyy-bill--billing\">Vaikne Bill \u2013 arveldamine<\/h3>\n<p><\/p>\n<p><em>Me oleme selle kuttiga pikka aega tuttavad. Ta istus alati k\u00f5rval ja luges midagi vaikselt. M\u00f5nikord suunas ta meile kasutajate p\u00e4ringud, koostas klientide arveid, haldas teenuseid. Tavaline t\u00f6\u00f6kas poiss. T\u00f5si, olid ka raskused. Ta on vaikne, m\u00f5nikord m\u00f5tlemapanev ja sageli \u2014 oma m\u00f5tetes.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/262bb5c9d6234041d264f8e041e647fe.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Arvelduss\u00fcsteem on esimene s\u00fcsteem, millega me \u00fcritasime tutvuda. Ja esimene probleem tuli meile vastu teenuste t\u00f6\u00f6tlemisel.<\/p>\n<p><\/p>\n<p>N\u00e4iteks, teenuste loomisel v\u00f5i kustutamisel, satub \u00fclesanne arvelduss\u00fcsteemi sisej\u00e4rjekorda. Nii on ellu viidud as\u00fcnkroonse t\u00f6\u00f6tlemise s\u00fcsteem teenustega. Oma teenuste t\u00fc\u00fcpide t\u00f6\u00f6tlemiseks pidime \u00abkokku panema\u00bb oma \u00fclesanded sellesse j\u00e4rjekorda. Ja siin seisis meil probleem: dokumentatsiooni puudumine. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/4d96251df014e315308c94f848bc6cd0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Programm API kirjelduse p\u00f5hjal on selle \u00fclesande lahendamine siiski v\u00f5imalik, kuid meil ei olnud aega tagasiotsingu tegemiseks, seet\u00f5ttu viisime loogika v\u00e4lja ja korraldasime \u00fclesande j\u00e4rjekorra RabbitMQ peal. Teenuse operatsioon algatatakse kliendi poolt isiklikust kabinetist, m\u00e4hitakse \u00ab\u00fclesandeks\u00bb Celery backendis ja t\u00e4idetakse arvelduss\u00fcsteemis ja OpenStackis. Celery v\u00f5imaldab \u00fcsna mugavalt \u00fclesandeid hallata, korraldada kordusi ja j\u00e4lgida olekut. T\u00e4iendavat teavet \u00abselleri\u00bb kohta saab lugeda n\u00e4iteks, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/433476\/\">siin<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Lisaks ei peatunud arvelduss\u00fcsteem projekt, millel raha otsa sai. Suheldes arendajatega, selgitasime, et statistika arvutamisel (ja me peame just seda loogikat ellu viima) on keeruline peatamisreeglite omavaheline seos. Kuid need mudelid ei sobi meie tingimustega. Samuti rakendasime selle Celery \u00fclesannete kaudu, viies tagasiendisse teenuste juhtimise loogika. <\/p>\n<p><\/p>\n<p>Kaks \u00fclaltoodud probleemi viisid selleni, et kood paisus natuke ja tulevikus peame tegelema refaktoreerimisega, et v\u00e4lja tuua teenuste \u00fclesannete t\u00f6\u00f6tlemise loogika eraldi teenusesse. Me peame ka salvestama osa teavet kasutajate ja nende teenuste kohta oma tabelitesse, et toetada seda loogikat.<\/p>\n<p><\/p>\n<p>Veel \u00fcks probleem \u2014 vaikimine.<\/p>\n<p><\/p>\n<p>Osadele API p\u00e4ringutele vastab Billy vaikselt \u00abOk\u00bb. N\u00e4iteks juhtus see, kui me tegime lubatud maksete sissemakseid testimisperioodi ajal (millest hiljem). P\u00e4ringud t\u00e4ideti korrektselt ja me ei n\u00e4inud mingeid vigu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/d03f2c381fd39dbf33f2a0c3eeb1294d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pidin uurima logisid, t\u00f6\u00f6tades s\u00fcsteemiga l\u00e4bi kasutajaliidese. Selgus, et arveldamine teeb selliseid p\u00e4ringuid, muutes scope'i konkreetse kasutaja, n\u00e4iteks admin, jaoks ja edastades selle su parameetris.<\/p>\n<p><\/p>\n<p>Kokkuv\u00f5ttes, vaatamata dokumentatsiooni puudustele ja m\u00f5ningatele API viperustele, l\u00e4ks k\u00f5ik piisavalt h\u00e4sti. Logisid on t\u00e4iesti v\u00f5imalik lugeda isegi suure koormuse korral, kui m\u00f5ista, kuidas need on \u00fcles ehitatud ja mida otsida. Andmebaasi struktuur on k\u00e4tkeline, kuid t\u00e4iesti loogiline ja m\u00f5nes m\u00f5ttes isegi atraktiivne.<\/p>\n<p><\/p>\n<p>Seega, kokkuv\u00f5tteks, peamised probleemid, millega me silmitsi seisisime koosteetapis, olid seotud konkreetse s\u00fcsteemi teostuse erip\u00e4radega: <\/p>\n<p><\/p>\n<ul>\n<li>dokumenteerimata 'funktsioonid', mis mingil moel meid puudutasid;<\/li>\n<li>suletud allikakood (arveldamine on kirjutatud C++), mille tulemusena ei olnud v\u00f5imalik probleemi lahendada muul viisil kui 'katse-eksituse' meetodil.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00d5nneks on tootest piisavalt ulatuslik API ja integreerisime oma isiklikku kabinetti j\u00e4rgmised alams\u00fcsteemid:<\/p>\n<p><\/p>\n<ul>\n<li>tehnilise toe moodul \u2014 p\u00e4ringud isiklikust kabinetist \u2018proksitakse\u2019 arveldamisse klientide teenuste jaoks l\u00e4bipaistvalt;<\/li>\n<li>rahandusmoodul \u2014 v\u00f5imaldab koostada arveid praegustele klientidele, teostada makseid ja vormistada maksedokumente;<\/li>\n<li>teenuse haldamise moodul \u2014 selle jaoks pidime ellu viima oma t\u00f6\u00f6tleja. S\u00fcsteemi laiendatavus aitas meid ja me 'koolitasime' Billit uue teenust\u00fc\u00fcbi jaoks.<br \/>\nPidin veidi vaeva n\u00e4gema, kuid nii v\u00f5i teisiti, arvan, et Billiga saame me l\u00e4bi.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"progulki-po-volframovym-polyam--tungsten-fabric\">K\u00e4igud volframi v\u00e4ljade vahel \u2014 Tungsten Fabric<\/h3>\n<p><\/p>\n<p><em>Volframi v\u00e4ljad, mis on kaetud sadade juhtmetega, mis edastavad l\u00e4bi end tuhat bitsi teavet. Teave kogutakse 'pakettidesse', dekodeeritakse, luues keerulisi marsruute, nagu maagia.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/9b6dd46d9f15e0e3393a8c1222abbf2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on teise s\u00fcsteemi valdus, millega meie pidime s\u00f5brune ma \u2014 Tungsten Fabric (TF), endine OpenContrail. Selle \u00fclesanne on juhtida v\u00f5rgu seadmeid, pakkudes meile, kasutajatena, programmilise abstraktsiooni. TF \u2014 SDN, kapseldab endas keerulise loogika t\u00f6\u00f6tamiseks v\u00f5rgu seadmetega. Tehnoloogia kohta on olemas hea artikkel, n\u00e4iteks, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/muk\/blog\/251959\/\">siit<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>S\u00fcsteem on integreeritud OpenStackiga (millest r\u00e4\u00e4gime allpool) Neutrona pistiku kaudu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/5abe3992efaab3e016a0c51dc0070a94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>OpenStacki teenuste vahelise suhtluse.<\/em><\/p>\n<p><\/p>\n<p>Selle s\u00fcsteemiga tutvustasid meid teeninduse t\u00f6\u00f6tajad. Kasutame s\u00fcsteemi API-d oma teenuste v\u00f5rguhnaku haldamiseks. Serious problems or inconveniences have not been posed so far (I cannot speak for the service guys), but there were some amusing interactions.<\/p>\n<p><\/p>\n<p>Esimene probleem n\u00e4gi v\u00e4lja j\u00e4rgmine: SSH-i kaudu \u00fchendatud instantsi konsoolile suuri andmemahtusid n\u00f5udvad k\u00e4sud lihtsalt \u201ekukutasid\u201c \u00fchenduse, samas kui VNC kaudu t\u00f6\u00f6tas k\u00f5ik korrektselt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/02bc97d63a1299e1dda08fce0f10fb97.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Neile, kes ei tunne probleemi, n\u00e4eb see \u00fcsna naljakas v\u00e4lja: ls \/root t\u00f6\u00f6tab korrektselt, samas kui n\u00e4iteks top \u201ehangub\u201c t\u00e4ielikult. \u00d5nneks oleme selliste probleemidega juba kokku puutunud. Probleem lahendati MTU h\u00e4\u00e4lestamise kaudu marsruudil compute-node'ide ja marsruuterite vahel. R\u00e4\u00e4kides, see ei ole probleemi TF.<\/p>\n<p><\/p>\n<p>J\u00e4rgmine probleem ootas nurga taga. \u00dchel \u201eilusas\u201c hetkel kadus marsruutimise maagia, nii lihtsalt. TF l\u00f5petas seadmete marsruutimise haldamise.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/db2a75ffdf2940b2ca90f73835f7a321.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00f6\u00f6tasime OpenStackiga administraatori tasemelt ja seej\u00e4rel l\u00e4ksime soovitud kasutaja tasemele. SDN, tundub, \u201ep\u00fc\u00fcab kinni\u201c kasutaja ulatuse, millega teostatakse toimingud. Asi on selles, et sama administraatori kontot kasutatakse TF ja OpenStacki vaheliseks suhtlemiseks. Kasutaja peale \u00fclemineku hetkel kadus \u201emaagia\u201c. Lahenduseks oli seadistada eraldi konto s\u00fcsteemiga t\u00f6\u00f6tamiseks. See lubas t\u00f6\u00f6tada, rikkumata integreerimise funktsionaalsust.<\/p>\n<p><\/p>\n<h3 id=\"silikonovye-formy-zhizni--openstack\">Silicon Life Forms \u2014 OpenStack<\/h3>\n<p><\/p>\n<p><em>Silicon Victim of Strange Form elab l\u00e4hedal volframiv\u00e4ljadele. See sarnaneb enim \u00fclekaalulise lapsega, kes \u00fche k\u00e4eliigutusega v\u00f5ib meid \u00e4ra purustada, kuid otsest agressiivsust ei n\u00e4ita. See ei tekita hirmu, kuid selle suurus tekitab muret. Nii nagu keerukus, mis toimub \u00fcmberringi.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/8622d43e0cb963bc9ef2a2ce59a32499.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OpenStack on meie platvormi s\u00fcda.<\/p>\n<p><\/p>\n<p>OpenStackil on mitmeid alams\u00fcsteeme, millest me seni aktiivsemalt kasutame Nova, Glance ja Cinder. Igal neist on oma API. Nova vastutab arvutusressursside ja instance'ide loomise eest, Cinder haldab mahtusid ja nende pilte, Glance on image service, mis haldab OS malle ja nende metaandmeid.<\/p>\n<p><\/p>\n<p>Iga teenus k\u00e4ivitatakse konteineris ja s\u00f5numibrokerina toimib \u201evalge k\u00fc\u00fclik\u201c \u2014 RabbitMQ.<\/p>\n<p><\/p>\n<p>See s\u00fcsteem on meile toonud k\u00f5ige rohkem ootamatuid muresid.<\/p>\n<p><\/p>\n<p>Ja esimene probleem ei lasknud end kaua oodata, kui proovisime lisamaht serverisse \u00fchendada. Cinder API keeldus kategooriliselt selle \u00fclesande t\u00e4itmisest. Tegelikult, kui uskuda OpenStack'i, luuakse \u00fchendus, kuid virtuaalses serveris ei leidu ketaseadet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/b4755d893f3f8ad7d7aeab3af69f35cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Otsustasime \"\u00fcmber k\u00e4ia\" ja k\u00fcsisime sama toimingut Nova API-lt. Tulemuseks on see, et seade \u00fchendatakse korrektselt ja on serveris saadaval. Tundub, et probleem tekib siis, kui block-storage ei vasta Cinder'ile.<\/p>\n<p><\/p>\n<p>Uus keerukus ootas meid t\u00f6\u00f6des ketastega. S\u00fcsteemi mahtu ei \u00f5nnestunud serverist eemaldada.<\/p>\n<p><\/p>\n<p>Taaskord kinnitab OpenStack, et ta on \u00fchenduse h\u00e4vitanud ja n\u00fc\u00fcd saab mahtu eraldi korralikult kasutada. Kuid API keeldus kategooriliselt ketastega operatsioonide teostamisest. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/952fd7cd11181605c52a7df71cd4f69f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin otsustasime eriti mitte s\u00f5dida, vaid muuta arusaama teenuse t\u00f6\u00f6logikast. Kui instance on olemas, peaks olema ka s\u00fcsteemimaht. Seet\u00f5ttu ei saa kasutaja praegu eemaldada v\u00f5i v\u00e4lja l\u00fclitada s\u00fcsteemi \"ketast\", eemaldamata \"serverit\".<\/p>\n<p><\/p>\n<p>OpenStack on piisavalt keeruline s\u00fcsteemide kompleks oma suhtlemislogikaga ja keeruka API-ga. Meid aitab piisavalt detailsed dokumentatsioon ja loomulikult katse-eksitusmeetod (kuidas siis muidu).<\/p>\n<p><\/p>\n<h3 id=\"testovyy-zapusk\">Testk\u00e4ivitamine<\/h3>\n<p><\/p>\n<p>Testk\u00e4ivitust tegime m\u00f6\u00f6dunud aasta detsembris. Peamine eesm\u00e4rk oli meie projekti tehnilise k\u00fclje ja UX poole kontrollimine reaalses keskkonnas. Kutsusime publikust valikuliselt ja testimine oli suletud. K\u00fcll aga j\u00e4tsime ka v\u00f5imaluse k\u00fcsida ligip\u00e4\u00e4su testimisele meie veebisaidil.<\/p>\n<p><\/p>\n<p>Isegi test ei m\u00f6\u00f6dunud ilma naljakatest momentidest, sest just siin meie seiklused alles algavad. <\/p>\n<p><\/p>\n<p>Esiteks, me hindasime projekti huvi m\u00f5nev\u00f5rra ebat\u00e4pselt ja pidime testimise ajal kiiresti lisama compute-node' s. Tavaline juhtum klastris, kuid ka siin oli n\u00fcansse. Konkreetse TF versiooni dokumentatsioonis on m\u00e4rgitud konkreetne kerneliversioon, millel testiti vRouteri t\u00f6\u00f6. Otsustasime k\u00e4ivitada node'id uuemate kernelitega. Tulemuseks \u2014 TF ei saanud node'lt marsruute. Pidi kiiresti kernelid tagasi tegema.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/377208246d5e396317fb934a35ed1227.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine naljakas moment on seotud \"muuda parool\" nupu funktsionaalsusega isiklikus kabinetis. <\/p>\n<p><\/p>\n<p>Me otsustasime kasutada JWT s\u00fcsteemi juurdep\u00e4\u00e4su korraldamiseks kasutajaliidesele, et mitte t\u00f6\u00f6tada sessioonidega. Kuna s\u00fcsteemid on erinevad ja laiali valgussenud, haldame oma tokenit, kuhu \"pakime\" arvelduste sessioonid ja OpenStacki tokeni. Parooli muutmisel token, m\u00f5istagi, \"aegub\", kuna kasutaja andmed ei ole enam kehtivad ja seda tuleb uuesti v\u00e4lja anda. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/daa27256d0b888b2c59d4bc6129f600d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me ei m\u00e4rganud seda hetke ja meil polnud lihtsalt ressursse, et kiiresti see osa valmis kirjutada. Meil tuli funktsionaalsus l\u00f5igata vahetult enne testimise alustamist.<br \/>\nPraegu logime v\u00e4lja kasutaja, kui parool on muudetud.<\/p>\n<p><\/p>\n<p>Vaatamata nendele n\u00fcanssidele l\u00e4ks testimine h\u00e4sti. Paari n\u00e4dala jooksul k\u00fclastas meid umbes 300 inimest. Meil \u00f5nnestus vaadata toodet kasutajate silmade l\u00e4bi, testida seda reaalses olukorras ja koguda kvaliteetset tagasisidet. <\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">J\u00e4tkub<\/h3>\n<p><\/p>\n<p>Paljudele meist on see esimene projekt sellises mastaabis. Saime mitmeid v\u00e4\u00e4rtuslikke \u00f5ppetunde, kuidas meeskonnas t\u00f6\u00f6tada, arhitektuurilisi ja disainilisi otsuseid teha. Kuidas integreerida keerulisi s\u00fcsteeme v\u00e4ikeste ressurssidega ja neid tootmisse v\u00e4ljastada. <\/p>\n<p><\/p>\n<p>Muidugi on palju, millega tegeleda nii koodi kui ka s\u00fcsteemide integratsiooni l\u00f5ikes. Projekt on piisavalt noor, kuid oleme t\u00e4is ambitsioone kasvatada sellest usaldusv\u00e4\u00e4rne ja mugav teenus.<\/p>\n<p><\/p>\n<p>S\u00fcsteemidega oleme juba n\u00f5ustunud. Bill tegeleb usinalt arvutamise, arve esitamise ja kasutajate p\u00e4ringutega oma nurgas. Wolframiv\u00e4ljade \"maagia\" tagab meile stabiilse \u00fchenduse. Ainult OpenStack m\u00f5nikord kisendab, \u00f6eldes midagi sellist nagu \"'WSREP has not yet prepared node for application use\". Kuid see on hoopis teine lugu\u2026<\/p>\n<p><\/p>\n<p>Hiljuti k\u00e4ivitasime teenuse.<br \/>\nKogu teabe leiate meie <noindex><a rel=\"nofollow\" href=\"https:\/\/clo.ru?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=product&amp;utm_term=first_clo\">veebisaidil<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Pilveteenuse loomise lugu, mida maitsestavad k\u00fcberpunk\" src=\"\/wp-content\/uploads\/2020\/04\/32550980b529a5d7b395b3962218e53e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>CLO arendustiim<\/em><\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Kasulikud lingid<\/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>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Pilveteenuse loomise lugu, maitsestatud k\u00fcberpunkiga | ProHoster","description":"Aastate kasvu ja kogemuste kogumisega.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/istoriya-sozdaniya-oblachnogo-servisa-pripravlennaya-kiberpankom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/79153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=79153"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/79153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/79154"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=79153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=79153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=79153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}