{"id":87372,"date":"2020-07-07T13:42:34","date_gmt":"2020-07-07T11:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye"},"modified":"2020-07-07T13:42:34","modified_gmt":"2020-07-07T11:42:34","slug":"walking-in-my-shoes-stop-a-oni-markirovannye","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","title":{"rendered":"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Alates 2019. aastast kehtib Venemaal kohustusliku m\u00e4rgistamise seadus. See seadus ei laiene k\u00f5ikidele kaubagruppidele ning kohustusliku m\u00e4rgistamise rakendamise t\u00e4htajad varieeruvad kaupade kaupa. Esimeste seas kuuluvad kohustuslikku m\u00e4rgistamist tubakas, jalatsid ja ravimid, hiljem lisanduvad ka teised tooted, n\u00e4iteks parf\u00fc\u00fcmid, tekstiil ja piimatooted. See seadusandlik uuendus on andnud olulise t\u00f5uke uute IT-lahenduste v\u00e4ljat\u00f6\u00f6tamiseks, mis v\u00f5imaldavad j\u00e4lgida toote eluahelat alates tootmisest kuni l\u00f5ppkasutaja ostuni, kaasates k\u00f5iki protsessi osalisi: nii riigi kui ka k\u00f5iki organisatsioone, mis m\u00fc\u00fcvad kohustusliku m\u00e4rgistusega tooteid.<\/p>\n<p>H5-s on s\u00fcsteem, mis j\u00e4lgib m\u00e4rgistatud tooteid ja vahetab andmeid riigi ja tarnijatega, saanud nimeks \"Markus\". Tutvustame j\u00e4rjestikku, kuidas ja kes seda arendas, milline on tema tehnoloogiline virn ning miks meil on p\u00f5hjust uhkustada.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/522382bab9b8d133f3657baea6175357.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>T\u00f5eline HighLoad<\/h3>\n<p>\n\u201eMarkus\u201c lahendab mitmeid \u00fclesandeid, mille peamine on integratsioonitegevus X5 teabe sistemitega ja riikliku m\u00e4rgistatud toodete teabe s\u00fcsteemiga (GIS MP), et j\u00e4lgida m\u00e4rgistatud toodete liiklust. Platvorm salvestab k\u00f5ik meie k\u00e4tte saabunud m\u00e4rgistuskoodid ja kogu nende liikluse ajaloos objekte, aidates k\u00f5rvaldada m\u00e4rgistatud toodete vale jaotust. N\u00e4iteks tubakatoodete puhul, mis kuulusid esimestesse m\u00e4rgistatud kaupade gruppidesse, sisaldab ainult \u00fcks sigareti veok umbes 600 000 pakki, millest iga\u00fchel on oma ainulaadne kood. Meie s\u00fcsteemi \u00fclesanne on j\u00e4lgida ja kontrollida iga sellise paki liikumise seaduslikkust vahehoidlate ja poodide vahel ning l\u00f5puks kontrollida nende m\u00fc\u00fcmise sobivust l\u00f5pptarbijale. Me fikseerime umbes 125 000 kassatehingut tunnis ning peame ka registreerima, kuidas iga selline pakk poodi j\u00f5udis. Seet\u00f5ttu ootame k\u00f5ikide objektide vahelise liikumise arvelt k\u00fcmneid miljardeid salvestusi aastas.<\/p>\n<h3>Meeskond M<\/h3>\n<p>\nKuigi \"Markus\" on raames X5 projekt, viiakse see ellu toote l\u00e4henemisviisiga. Meeskond t\u00f6\u00f6tab Scrum'i j\u00e4rgi. Projekti alustamine toimus eelmise aasta suvel, kuid esimesed tulemused tulid alles oktoobris - koguti t\u00e4ielikult oma meeskond, arendati s\u00fcsteemi arhitektuur ja osteti seadmed. Praegu on meeskonnas 16 inimest, kellest kuus tegelevad backend ja frontend arendusega, kolm s\u00fcsteemi anal\u00fc\u00fcsiga. K\u00e4sitsi, koormus-, automatiseeritud testimise ja toote toetamisega tegelevad veel kuus inimest. Lisaks on meil SRE-spetsialist. <\/p>\n<p>Kood meie meeskonnas kirjutavad mitte ainult arendajad, vaid praktiliselt k\u00f5ik poisid oskavad programmeerida ja kirjutavad automaatkatsetusi, koormus-skripte ja automatiseerimisskripte. Me p\u00f6\u00f6rame sellele erilist t\u00e4helepanu, kuna isegi toote toetamine vajab k\u00f5rget automatiseerimise taset. Kolleege, kes varem ei programmeerinud, p\u00fc\u00fcame alati aidata ja juhendada, anda neile t\u00f6\u00f6sse m\u00f5ned v\u00e4iksemad \u00fclesanded.<\/p>\n<p>Seoses koronaviiruse pandeemiaga siirdus kogu meie meeskond kaugt\u00f6\u00f6le. K\u00f5ik t\u00f6\u00f6riistad arenduse juhtimiseks, t\u00f6\u00f6voog Jira ja GitLabis v\u00f5imaldasid meil seda etappi kergesti l\u00e4bida. Kaugt\u00f6\u00f6s veedetud kuud n\u00e4itasid, et meeskonna tootlikkus ei kannatanud selle t\u00f5ttu. Paljude jaoks kasvas t\u00f6\u00f6 mugavus, ainus asi, mis j\u00e4i puudu, oli otsene suhtlemine.<\/p>\n<h3>Meeskonna koosolek enne kaugt\u00f6\u00f6d<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/c1095316fd5e3dcc147b3dd968013152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Koosolekud kaugt\u00f6\u00f6 ajal<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/0c705ebbe28afbecd439c0ce2fcf04cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Lahenduse tehnoloogia virn<\/h3>\n<p>\nX5 standardne repositoorium ja CI\/CD t\u00f6\u00f6riist on GitLab. Kasutame seda koodi ladustamiseks, pidevaks testimiseks ja mustrite v\u00e4ljapanekuks testimis- ja tootmisserverites. Samuti rakendame praktikat koodiarvustuse osas, kus v\u00e4hemalt kaks kolleegi peavad kinnitama arendaja koodimuudatused. Koodi staatilised anal\u00fcsaatorid SonarQube ja JaCoCo aitavad meil hoida koodi puhta ning tagada vajalikku taset unit-testide katvuses. K\u00f5ik koodimuudatused peavad kindlasti l\u00e4bi minema nende kontrollide. K\u00f5ik k\u00e4sitsi jooksutatud teststsenaariumid automatiseeritakse hiljem.<\/p>\n<p>Edukas, et tulemusteks, et \"Markust\" \u00e4ritegevuse protsessid \u00f5nnestuks, pidi meil lahendama mitmeid tehnoloogilisi probleeme, millest r\u00e4\u00e4gime j\u00e4rgnevalt. <\/p>\n<p><b>\u00dclesanne 1. S\u00fcsteemi horisontaalne skaleeritavus<\/b><\/p>\n<p>Selle \u00fclesande lahendamiseks valisime mikroteenuste l\u00e4henemise arhitektuurile. Oluline oli m\u00f5ista teenuste vastutusalasid. P\u00fc\u00fcdsime jagada need \u00e4ritegevuse operatsioonide p\u00f5hjal, arvestades protsesside spetsiifikat. N\u00e4iteks kaupade vastuv\u00f5tt laos \u2013 see on haruldane, kuid mahukas operatsioon, mille k\u00e4igus tuleb kiiresti saada riiklikult reguleerijalt teavet vastuv\u00f5etavate kaubakoguste kohta, mis \u00fche saadetise puhul ulatuvad kuni 600000, kontrollida kaupade vastuv\u00f5tmise v\u00f5imalikkust laos ja edastada kogu vajalik teave laoautomaatika s\u00fcsteemile. Seevastu lao v\u00e4ljaanded on intensiivsemad, kuid k\u00e4sitlevad v\u00e4iksemaid andmekoguseid. <\/p>\n<p>Meie k\u00f5ik teenused toimivad stateless p\u00f5him\u00f5ttel ning isegi siseoperatsioonid jagame sammudeks, kasutades meie enda poolt nimetatud self-t\u00e4idiseid Kafka. See, kui mikroteenus saadab s\u00f5numi iseendale, v\u00f5imaldab tasakaalustada koormust ressursin\u00f5udlikumate operatsioonide osas ning lihtsustab toote hooldust, kuid sellest r\u00e4\u00e4gime hiljem. <\/p>\n<p>Otsustasime eraldi teenustesse jagada moodulid, mis suhtlevad v\u00e4liste s\u00fcsteemidega. See lahendas probleemi tihedalt muutuva v\u00e4lise s\u00fcsteemi API-dega, praktiliselt m\u00f5jutamata \u00e4ritegevuse funktsioone.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/da1dc58791fa28e89e289528e0fd2550.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00f5ik mikroteenused paigaldatakse OpenShifti klastrisse, mis lahendab nii iga mikroteenuse skaleerimise probleemi kui v\u00f5imaldab meil mitte kasutada v\u00e4liseid Service Discovery t\u00f6\u00f6riistu.<\/p>\n<p><b>\u00dclesanne 2. Vajadus toetada suurt koormust ja v\u00e4ga intensiivset andmevahetust platvormi teenuste vahel:<\/b> ainult projekti k\u00e4ivitamise faasis toimub keskmiselt 600 operatsiooni sekundis. Ootame, et see arv t\u00f5useb 5000 op\/sec-ni, kui meie platvormi liidetakse kaubandusobjekte.<\/p>\n<p>Selle probleemi lahendamiseks kasutati Kafka klastrite k\u00e4ivitamist ja peaaegu t\u00e4ielikku loobumist s\u00fcnkr.MSG suheldes platvormi mikroteenustega. See n\u00f5uab s\u00fcsteemi n\u00f5uete v\u00e4ga p\u00f5hjalikku anal\u00fc\u00fcsi, kuna mitte k\u00f5ik toimingud ei saa olla as\u00fcnkroonsed. Samuti edastame me s\u00fcndmusi mitte ainult vahendajate kaudu, vaid edastame s\u00f5numis kogu vajaliku \u00e4riinfo. Seega v\u00f5ib s\u00f5numi suurus ulatuda mitmesaja kilobaidi suuruseni. Kafka s\u00f5numite mahupiirang n\u00f5uab meilt t\u00e4pset s\u00f5numite suuruse prognoosimist ja vajadusel jagame neid, kuid see jagamine on loogiline, seostatuna \u00e4ritegevustega. <br \/>\nN\u00e4iteks jagame auto abil saabunud kauba kastideks. S\u00fcnkrontoimingute jaoks eraldatakse eraldi mikroteenused ja viiakse l\u00e4bi p\u00f5hjalik koormustestimine. Kafka kasutamine esitas meile uue v\u00e4ljakutse \u2014 meie teenuse t\u00f6\u00f6 kontrollimine Kafka integreerimise arvestamisel muudab k\u00f5ik meie \u00fcksustestid as\u00fcnkroonseteks. Selle \u00fclesande lahendamiseks kirjutasime oma utiliidi meetodid, kasutades Embedded Kafka Brokerit. See ei t\u00fchista vajadust kirjutada \u00fcksusteste eraldi meetodite jaoks, kuid keerulisi olukordi eelistame testida Kafka abil.<\/p>\n<p>Me p\u00f6\u00f6rasime v\u00e4ga palju t\u00e4helepanu logide j\u00e4lgimisele, et nende TraceId ei kaoks, kui teenustes tekivad erandid v\u00f5i t\u00f6\u00f6tatakse Kafka batchiga. Ja kui esimeses k\u00fcsimuses probleeme ei olnud, siis teisel juhul olime sunnitud logima k\u00f5ik TraceId, millega batch tuli, ja valima \u00fche j\u00e4tkuva j\u00e4lgimise jaoks. Sel juhul leiab kasutaja algse TraceId j\u00e4rgi otsides kergesti, millise j\u00e4lgimisega j\u00e4tkati.<\/p>\n<p><b>\u00dclesanne 3. Suure hulga andmete s\u00e4ilitamise vajadus: <\/b> \u00fcle 1 miljardi m\u00e4rgistuse aastas, mis on seotud vaid tubakaga, j\u00f5uab X5. Nendele on vajalik pidev ja kiire ligip\u00e4\u00e4s. Kokku peab s\u00fcsteem t\u00f6\u00f6tlema umbes 10 miljardit m\u00e4rgistega toodete andmeid.<\/p>\n<p>Kolmanda \u00fclesande lahendamiseks valiti NoSQL andmebaas MongoDB. Meil on loodud 5 s\u00f5lme shard ja igas s\u00f5lmes Replica Set 3 serveriga. See v\u00f5imaldab s\u00fcsteemi horisontaalselt skaleerida, lisades <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/\"   title=\"uus server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"781\">uus server<\/a> klasterisse ja tagada selle talitlush\u00e4ireteta t\u00f6\u00f6. Siin puutusime kokku teise probleemiga \u2014 tehingute tagamise korraldamine mongo klasteris, arvestades horisontaalselt skaleeritavate mikroteenuste kasutamist. N\u00e4iteks on meie s\u00fcsteemi \u00fcks \u00fclesandeid tuvastada katseid sama koodiga kaupade edasim\u00fc\u00fcgiks. Siin tekivad probleemid vale skaneerimise v\u00f5i vale kassapidamise toimingutega. Oleme avastanud, et sellised dubleeringud v\u00f5ivad tekkida nii \u00fche t\u00f6\u00f6tleva Kafka batch'i sisse kui ka kahe samaaegselt t\u00f6\u00f6tleva batch'i jooksul. Seet\u00f5ttu ei andnud dupleerimise kontrollimine andmebaasi p\u00e4ringute kaudu tulemusi. Iga mikroteenuse puhul lahendasime probleemi eraldi, l\u00e4htudes selle teenuse \u00e4riloogikast. N\u00e4iteks lisasime t\u0161ekkide jaoks kontrolli batch'i sees ja eraldi t\u00f6\u00f6tlemise dubleeringute tuvastamiseks sisestamise ajal. <\/p>\n<p>Kuna kasutajate tehinguajalugu ei tohi m\u00f5jutada meie \u00e4ri protsesside toimimist, oleme k\u00f5ik ajaloolised andmed eraldanud eraldi teenusesse koos eraldi andmebaasiga, mis saab teavet ka l\u00e4bi Kafka. Nii saavad kasutajad t\u00f6\u00f6tada isoleeritud teenusega, ilma et see m\u00f5jutaks teenuseid, mis t\u00f6\u00f6tlevad andmeid praeguste tehingute kohta.<\/p>\n<p><b>\u00dclesanne 4. Korduv t\u00f6\u00f6tlemine ja j\u00e4lgimine:<\/b><\/p>\n<p>Jaotatud s\u00fcsteemides tekivad paratamatult probleemid ja vigade t\u00f5ttu andmebaaside, j\u00e4rjekordade ja v\u00e4liste andmeallikate k\u00e4ttesaadavuses. \u201eMarkuse\u201c puhul on selliste vigade allikaks integreerimine v\u00e4liste s\u00fcsteemidega. Oli vajalik leida lahendus, mis v\u00f5imaldaks vigastele vastustele teha kordusettepanekuid kindla ootet\u00e4htaega, kuid samal ajal ei katkestaks p\u00f5hij\u00e4rjekorras edukaid ettepanekuid. Selleks valiti nii \u00f6elda \"teemap\u00f5hine kordamine\". Iga p\u00f5hiteema jaoks luuakse \u00fcks v\u00f5i mitu kordusteemat, kuhu suunatakse vigaste s\u00f5numite teated, erandina edasil\u00fckatud s\u00f5numite t\u00f6\u00f6tlemise p\u00f5hiteemast. Koost\u00f6\u00f6 schema \u2014 <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/922b3107d183312312713c213488fbe1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelle skeemi elluviimiseks vajasime j\u00e4rgmist \u2014 integreerida see lahendus Springiga ja v\u00e4ltida koodi dubleerimist. Veebis sattusime sarnasele lahendusele, mis p\u00f5hines Spring BeanPostProcessor'il, kuid see n\u00e4is meile liiga koormav. Meie meeskond t\u00f6\u00f6tas v\u00e4lja lihtsama lahenduse, mis v\u00f5imaldab integreeruda Springi loomise ts\u00fcklisse ja lisada t\u00e4iendavaid Retry consumer'eid. Meie lahenduse protot\u00fc\u00fcbi esitasime Springi meeskonnale, seda saab vaadata <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/issues\/1229\">siin<\/a><\/noindex>. Retry consumer'ite arv ja iga consumeri katsete arv seadistatakse parameetrite kaudu vastavalt \u00e4ri protsessi vajadustele, ning et k\u00f5ik t\u00f6\u00f6le hakkaks, on vajalik vaid lisada tuntud k\u00f5igile Springi arendajatele annotatsioon org.springframework.kafka.annotation.KafkaListener.<\/p>\n<p>Kui s\u00f5numit ei \u00f5nnestu k\u00f5igi retry katsete j\u00e4rel t\u00f6\u00f6delda, j\u00f5uab see DLT (dead letter topic) kaudu Spring DeadLetterPublishingRecoverer'isse. Toetuse n\u00f5udmisel oleme selle funktsionaalsust laiendanud ja loonud eraldi teenuse, mis v\u00f5imaldab vaadata DLT'sse j\u00f5udnud s\u00f5numeid, stackTrace'i, traceId-d ja muud kasulikku teavet nende kohta. Lisaks on lisatud j\u00e4lgimise ja hoiatamise s\u00fcsteemid k\u00f5igi DLT teemade jaoks, mist\u00f5ttu s\u00f5numi ilmumine DLT teemale on n\u00fc\u00fcdseks p\u00f5hjuseks l\u00e4hemaks uurimiseks ja defekti registreerimiseks. See on v\u00e4ga mugav \u2014 teema nime j\u00e4rgi m\u00f5istame kohe, millises protsessi etapis probleem tekkis, mis kiirendab oluliselt juurte p\u00f5hjuste leidmist.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/ba1110bf1c93249c73dd76c490f1d7aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHiljuti rakendasime liidese, mis v\u00f5imaldab meie toe abil s\u00f5numeid uuesti saata p\u00e4rast nende p\u00f5hjuste k\u00f5rvaldamist (n\u00e4iteks v\u00e4lise s\u00fcsteemi toimimise taastamine) ning loomulikult vastava defekti registreerimist anal\u00fc\u00fcsi jaoks. Siin tuli kasuks meie self-teemad, et mitte k\u00e4ivitada pikka t\u00f6\u00f6tlemisahelat uuesti, vaid alustada seda vajalikult sammult. <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2014 oot, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/78c7831131808732b74b27f055b60d54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Platvormi k\u00e4itamine<\/h3>\n<p>\nPlatvorm on juba tootmiseks valmiduses, iga p\u00e4ev viime l\u00e4bi tarnet ja lahtisi, \u00fchendame uusi jaotuskeskusi ja poode. Pilootprojekti raames t\u00f6\u00f6tab s\u00fcsteem kaubagruppidega \u201eTubakas\u201d ja \u201eJalad.\u201d <\/p>\n<p>Kogu meie meeskond osaleb pilootide l\u00e4biviimisel, anal\u00fc\u00fcsib tekkinud probleeme ja teeb ettepanekuid meie toote t\u00e4iustamiseks alates logide parandamisest kuni protsesside muutmiseni. <\/p>\n<p>Kuna me ei soovi oma vigu korrata, kajastuvad k\u00f5ik pilooti k\u00e4igus leitud juhtumid automatiseeritud testides. Suure testide ja unit-testide arvu olemasolu v\u00f5imaldab meil l\u00e4bi viia regressiooniteste ja rakendada hotfixe vaid m\u00f5ne tunni jooksul.<\/p>\n<p>Praegu j\u00e4tkame oma platvormi arendamist ja t\u00e4iendamist ning puutume pidevalt kokku uute v\u00e4ljakutsetega. Kui teid huvitab, r\u00e4\u00e4gime meie lahendustest j\u00e4rgmistes artiklites.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/X5RetailGroup\/blog\/509714\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 2019 \u0433\u043e\u0434\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0430\u043a\u043e\u043d \u043e\u0431 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u0417\u0430\u043a\u043e\u043d \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u0438 \u0441\u0440\u043e\u043a\u0438 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u043b\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u043d\u044b\u0435. \u041f\u0435\u0440\u0432\u044b\u043c\u0438 \u043f\u043e\u0434 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0442\u0430\u0431\u0430\u043a, \u043e\u0431\u0443\u0432\u044c, \u043b\u0435\u043a\u0430\u0440\u0441\u0442\u0432\u0430, \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0443\u0445\u0438, \u0442\u0435\u043a\u0441\u0442\u0438\u043b\u044c, \u043c\u043e\u043b\u043e\u043a\u043e. \u042d\u0442\u043e \u0437\u0430\u043a\u043e\u043d\u043e\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0431\u0443\u0434\u0438\u043b\u043e \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u043e\u0432\u044b\u0445 \u0418\u0422-\u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87373,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87372","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 2019 \u0433\u043e\u0434\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0430\u043a\u043e\u043d \u043e\u0431 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u0417\u0430\u043a\u043e\u043d \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u0438 \u0441\u0440\u043e\u043a\u0438 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u043b\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u043d\u044b\u0435.\" \/>\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\/walking-in-my-shoes-stop-a-oni-markirovannye\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\u00abWalking in my shoes\u00bb \u2014 \u0441\u0442\u043e\u043f, \u0430 \u043e\u043d\u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 2019 \u0433\u043e\u0434\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0430\u043a\u043e\u043d \u043e\u0431 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u0417\u0430\u043a\u043e\u043d \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u0438 \u0441\u0440\u043e\u043a\u0438 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u043b\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u043d\u044b\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye\" \/>\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-07-07T11:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-07T11:42:34+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\udd47\u00abWalking in my shoes\u00bb \u2014 oota, kas need on m\u00e4rgistatud? | ProHoster","description":"Alates 2019. aastast kehtib Venemaal kohustusliku t\u00e4histamise seadus. Seadus ei kehti k\u00f5igi kaubagruppide kohta ning kohustusliku t\u00e4histamise j\u00f5ustumise t\u00e4htajad erinevad kaubagruppide l\u00f5ikes.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","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\u00abWalking in my shoes\u00bb \u2014 \u0441\u0442\u043e\u043f, \u0430 \u043e\u043d\u0438 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435? | ProHoster","og:description":"\u0421 2019 \u0433\u043e\u0434\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0430\u043a\u043e\u043d \u043e\u0431 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0435. \u0417\u0430\u043a\u043e\u043d \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u0438 \u0441\u0440\u043e\u043a\u0438 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432 \u0441\u0438\u043b\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u043d\u044b\u0435.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","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-07-07T11:42:34+00:00","article:modified_time":"2020-07-07T11:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87372","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 13:52:22","updated":"2026-02-08 20:33: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\/87372","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=87372"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/87372\/revisions"}],"predecessor-version":[{"id":157972,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/87372\/revisions\/157972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/87373"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=87372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=87372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=87372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}