{"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":"\u00abWalking in my shoes\u00bb \u2014 oota, kas need on m\u00e4rgistatud?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Alates 2019. aastast kehtib Venemaal kohustusliku m\u00e4rgistamise seadus. Seadus ei kehti k\u00f5igi kaupade r\u00fchmade kohta ning kohustusliku m\u00e4rgistamise j\u00f5ustumise t\u00e4htajad erinevatele kaugroupadele on erinevad. Esmalt kuuluvad kohustuslikule m\u00e4rgistamisele tubakas, jalatsid, ravimid, hiljem lisanduvad ka teised tooted, n\u00e4iteks parf\u00fc\u00fcmid, tekstiil ja piim. See seadusandlik uuendus on k\u00e4ivitanud uute IT-lahenduste v\u00e4ljat\u00f6\u00f6tamise, mis v\u00f5imaldavad j\u00e4lgida kauba eluiga tootmisest kuni l\u00f5pptarbijani, k\u00f5ikide protsessis osalejate jaoks: nii riik kui ka k\u00f5ik organisatsioonid, kes m\u00fc\u00fcvad kohustusliku m\u00e4rgistamisega kaupu.<\/p>\n<p>X5-s sai s\u00fcsteem, mis j\u00e4lgib m\u00e4rgistatud kaupu ja vahetab andmeid riigi ja tarnijatega, nimeks \"Markus\". R\u00e4\u00e4gime j\u00e4rjestikku, kuidas ja kes seda arendas, milline on tema tehnoloogia toetav struktuur ja miks meil on p\u00f5hjust uhkust tunda.<\/p>\n<p><img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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>Reaalne HighLoad<\/h3>\n<p>\n\"Markus\" lahendab mitmeid \u00fclesandeid, peamine neist on integratsioonitegevus X5 teabelehtede ja riikliku m\u00e4rgistatud toodete teabe s\u00fcsteemi (GIS MP) vahel, et j\u00e4lgida m\u00e4rgistatud toodete liikumist. Lisaks salvestab platvorm k\u00f5ik meile laekunud m\u00e4rgistuskoodid ja nende koodide liikumise ajalugu objekte pidi, aitab k\u00f5rvaldada m\u00e4rgistatud toodete valejaotuse. N\u00e4iteks tubakatoodete osas, mis kuulusid esimesse m\u00e4rgistatud kaupade r\u00fchma, sisaldab \u00fcks kaubik sigarette umbes 600 000 pakki, millest iga\u00fchel on oma ainulaadne kood. Ja meie s\u00fcsteemi \u00fclesanne on j\u00e4lgida ja kontrollida iga sellise paki seaduslikkust liikumise osas ladude ja poodide vahel, ning l\u00f5puks kontrollida, kas nende m\u00fc\u00fck l\u00f5pptarbijale on lubatud. Kassatehingute puhul fikseerime umbes 125 000 tunni kohta ning tuleb veel fikseerida ka see, kuidas iga selline pakk poodi j\u00f5udis. Seega, arvestades k\u00f5iki objekte vahepealseid liikumisi, ootame aastas k\u00fcmneid miljardeid kirjeid.<\/p>\n<h3>Meeskond M<\/h3>\n<p>\nEhkki 'Markus' on projektina osa H5-st, viiakse seda ellu toote l\u00e4henemise abil. Meeskond t\u00f6\u00f6tab Scrum meetodil. Projekti algus oli eelmise aasta suvel, kuid esimesed tulemused ilmusid alles oktoobris \u2013 moodustati t\u00e4ielikult omak\u00e4eliselt meeskond, arendati v\u00e4lja s\u00fcsteemi arhitektuur ja osteti seadmed. Praegu on meeskonnas 16 inimest, kellest kuus tegelevad backend ja frontend arendamisega, kolm s\u00fcsteemianal\u00fc\u00fcsi ning veel kuus tegelevad k\u00e4sitsi, koormus- ja automatiseeritud testimise ning toote toetamisega. Lisaks on meie seas SRE-spetsialist. <\/p>\n<p>Meie meeskonnas kirjutavad koodi mitte ainult arendajad, vaid praktiliselt k\u00f5ik kolleegid oskavad programmeerida ja kirjutavad automatiseerimisteste, koormusskeeme ja automatiseerimise skripte. Me p\u00f6\u00f6rame sellele erilist t\u00e4helepanu, kuna isegi toote hooldus n\u00f5uab k\u00f5rget automatiseerimise taset. Kolleegidele, kes polnud varem programmeerinud, anname alati n\u00f5u ja abi, andes neile v\u00e4iksemaid \u00fclesandeid.<\/p>\n<p>Koroonaviiruse pandeemia t\u00f5ttu viisime kogu meeskonna \u00fcle kaugt\u00f6\u00f6le, k\u00f5ik arenduse juhtimiseks vajalikud t\u00f6\u00f6riistad, t\u00f6\u00f6tav t\u00f6\u00f6voog Jira-s ja GitLab-is, v\u00f5imaldasid selle etapi kergesti l\u00e4bida. Kaugt\u00f6\u00f6l veedetud kuukajad n\u00e4itasid, et meeskonna tootlikkus ei langenud, paljudele t\u00f5usis t\u00f6\u00f6 mugavus, ainus asi, mis puudu on, on elav suhtlemine.<\/p>\n<h3>Meeskonna koosolek enne kaugt\u00f6\u00f6d<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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\u00f6l<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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 alus<\/h3>\n<p>\nH5 standardne hoidla ja CI\/CD t\u00f6\u00f6riist on GitLab. Kasutame seda koodi hoidmiseks, pidevaks testimiseks ja testimis- ja tootmiserveritesse paigutamiseks. Samuti praktiseerime koodi \u00fclevaatust, kus v\u00e4hemalt kaks kolleegi peavad arendaja koodimuudatused heaks kiitma. Statistilised koodi anal\u00fcsaatorid SonarQube ja JaCoCo aitavad meil koodi puhtana hoida ja tagada n\u00f5utava taseme unit-testide katvust. K\u00f5ik koodimuudatused peavad kindlasti l\u00e4bi k\u00e4ima nende kontrollide. K\u00f5ik k\u00e4sitsi kontrollitud teststsenaariumid automatiseeritakse hiljem.<\/p>\n<p>Eduka \u00e4riprotsessi t\u00e4itmiseks 'Markus'iga pidime lahendama mitmeid tehnoloogilisi \u00fclesandeid, millest r\u00e4\u00e4gime j\u00e4rjestikku. <\/p>\n<p><b>\u00dclesanne 1. S\u00fcsteemi horisontaalse skaleeritavuse vajadus<\/b><\/p>\n<p>Selle \u00fclesande lahendamiseks valisime mikroteenuste arhitektuuri l\u00e4henemise. Selle juures oli v\u00e4ga t\u00e4htis m\u00f5ista teenuste vastutuse valdkondi. P\u00fc\u00fcdsime neid jagada \u00e4ritehingute j\u00e4rgi, arvestades protsesside spetsiifikat. N\u00e4iteks inventuuri vastuv\u00f5tt laos on haruldane, kuid mahukas operatsioon, mille k\u00e4igus on oluline v\u00f5imalikult kiiresti saada riiklikult reguleerivalt asutuselt teavet vastuv\u00f5etavate kaupade \u00fcksuste kohta, kus \u00fche saatmise kogus v\u00f5ib ulatuda kuni 600 000, kontrollida kauba vastuv\u00f5tmise lubatavust laos ning edastada kogu vajalik teave laotehnika s\u00fcsteemile. Kuid lao v\u00e4ljastamine toimub palju suurema intensiivsuse juures, kuid sellega seondub v\u00e4iksemate andmemahtude t\u00f6\u00f6tlemine. <\/p>\n<p>K\u00f5ik teenused rakendame stateless p\u00f5him\u00f5ttel ja p\u00fc\u00fcame isegi sisemisi operatsioone jagada sammudeks, kasutades meie enda nimel self-teemasid Kafka. See on olukord, kus mikroteenus saadab s\u00f5numi endale, mis aitab tasakaalustada koormust ressursside n\u00f5udlikumate operatsioonide puhul ja lihtsustab toote hooldust, kuid sellest r\u00e4\u00e4gime hiljem. <\/p>\n<p>Otsustasime eraldada eraldi teenustesse moodulid, mis suhtlevad v\u00e4listest s\u00fcsteemidest. See v\u00f5imaldas lahendada sageli muutuva v\u00e4listes\u00fcsteemide API probleemi, praktiliselt m\u00f5jutamata \u00e4rifunktsionaalsusega teenuseid.<\/p>\n<p><img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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 iga mikroteenuse skaleerimise probleemi ning v\u00f5imaldab meil mitte kasutada kolmandate osapoolte teenuste avastamise t\u00f6\u00f6riistu.<\/p>\n<p><b>\u00dclesanne 2. Vajadus hoida k\u00f5rget koormust ja v\u00e4ga intensiivset andmevahetust platvormi teenuste vahel:<\/b> ainult projekti k\u00e4ivitamise faasis toimub umbes 600 operatsiooni sekundis. Ootame selle n\u00e4itaja suurenemist kuni 5000 op\/sec loomisel kaubandusobjektide meie platvormiga liitumise k\u00e4igus.<\/p>\n<p>Selle \u00fclesande lahendamiseks rakendati Kafka klastrit ja peaaegu t\u00e4ielikult loobuti platformi mikroteenuste vahelisest s\u00fcnkroonsest suhtlemisest. See n\u00f5uab s\u00fcsteemi n\u00f5uete v\u00e4ga t\u00e4helepanelikku anal\u00fc\u00fcsi, kuna mitte k\u00f5ik toimingud ei saa olla as\u00fcnkroonsed. Samuti ei edasta me lihtsalt s\u00fcndmusi vahendaja kaudu, vaid edastame s\u00f5numis kogu vajaliku \u00e4riteabe. Seet\u00f5ttu v\u00f5ib s\u00f5numi suurus ulatuda sadadesse kilobaitidesse. Kafka s\u00f5numite mahupiirang n\u00f5uab meilt s\u00f5numite suuruste t\u00e4pset prognoosimist ja h\u00e4daolukordade korral jagame neid, kuigi jagamine on loogiline ning seotud \u00e4ritegevustega. <br \/>\nN\u00e4iteks toote, mis on j\u00f5udnud autoga, jagame kastidesse. S\u00fcnkroonsete toimingute 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 koos Kafka integreerimisega muudab k\u00f5ik meie unit-testid as\u00fcnkroonseteks. Selle \u00fclesande lahendamiseks kirjutasime enda abimeetodid Using Embedded Kafka Broker. See ei ocean't t\u00fchista vajadust kirjutada unit-teste eraldi meetodite jaoks, kuid keerulisi juhtumeid eelistame testida Kafka kasutamisel.<\/p>\n<p>Keskendume logide j\u00e4lgimisele, et nende TraceId ei kaoks teenuste t\u00f6\u00f6s tekkivate erandite v\u00f5i Kafka batch'i t\u00f6\u00f6tlemise k\u00e4igus. Kui esimesega ei tekkinud erilisi probleeme, siis teise puhul peame logima k\u00f5ik TraceId, millega batch saabus, ja valima \u00fche j\u00e4tkamiseks j\u00e4lgimisel. Nii suudab kasutaja algse TraceId j\u00e4rgi otsides kergesti leida, millega j\u00e4lgimine j\u00e4tkus.<\/p>\n<p><b>\u00dclesanne 3. Vajadus salvestada suures koguses andmeid: <\/b> \u00fcle 1 miljardi m\u00e4rgistuse aastas ainult tubaka kohta tuleb X5. Neid tuleb pidevalt ja kiiresti k\u00e4tte saada. Kokku peab s\u00fcsteem t\u00f6\u00f6tlema umbes 10 miljardit kirjet m\u00e4rgistega toodete andmete ajaloos.<\/p>\n<p>Kolmanda \u00fclesande lahendamiseks valiti NoSQL andmebaas MongoDB. Meie s\u00fcsteem on \u00fcles ehitatud 5 nodi shardist ja igas nodis on Replica Set 3 serveriga. See v\u00f5imaldab s\u00fcsteemi horisontaalselt skaleerida, lisades <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/\"   title=\"uusi servereid\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"781\">uusi servereid<\/a> konstruktsiooni ja tagada selle talitlush\u00e4ire kindel. Siin seisisime silmitsi teise probleemiga \u2013 tehingute tagamise tagamise Mongo klastris, arvestades horisontaalselt skaleeritavate mikroteenuste kasutamist. N\u00e4iteks on \u00fcheks meie s\u00fcsteemi \u00fclesandeks tuvastada kauba korduvm\u00fc\u00fcmise katseid sama m\u00e4rkekoodiga. Siit tekivad probleemid vale skaneerimise v\u00f5i vale kassaprotseduuri t\u00f5ttu. Oleme avastanud, et sellised dubleerimised v\u00f5ivad tekkida nii \u00fche t\u00f6\u00f6tleva Kafka partii sees kui ka kahe paralleelselt t\u00f6\u00f6deldava partii vahel. Seega ei andnud duplikaatide kontrollimine andmebaasi p\u00e4ringu kaudu mitte midagi. Iga mikroteenuse puhul lahendasime probleemi eraldi, l\u00e4htudes selle teenuse \u00e4ri loogikast. N\u00e4iteks, t\u0161ekkide puhul lisasime kontrolli partii sees ja eraldi t\u00f6\u00f6tlemise duplikaatide ilmnemiseks sisestamisel. <\/p>\n<p>Et kasutajate tegevus operatsioonide ajaloos ei m\u00f5jutaks meie \u00e4ri protsesside p\u00f5hilist toimimist, eraldasime k\u00f5ik ajaloolised andmed eraldi teenuseks koos eraldi andmebaasiga, mis samuti saab teavet \u00fcle Kafka. Nii saavad kasutajad t\u00f6\u00f6tada eraldi teenusega, ilma et see m\u00f5jutaks teenuseid, mis t\u00f6\u00f6tlevad andmeid praeguste operatsioonide kohta.<\/p>\n<p><b>\u00dclesanne 4. J\u00e4rjestuste uuesti t\u00f6\u00f6tlemine ja j\u00e4lgimine:<\/b><\/p>\n<p>Jaotatud s\u00fcsteemides tekivad v\u00e4ltimatult probleemid ja vigade esitamisega andmebaaside, j\u00e4rjekordade ja v\u00e4liste andmeallikate k\u00e4ttesaadavuses. 'Markuse' puhul on selliste vigade allikaks integreerimine v\u00e4liste s\u00fcsteemidega. Oli vajalik leida lahendus, mis v\u00f5imaldab vigu koguda ja saata re-definitsiooniga veinimajadele m\u00f5ningase m\u00e4\u00e4ratud ajaga, kuid ei takista edukaid p\u00e4ringute t\u00f6\u00f6tlemist peamises j\u00e4rjekorras. Selleks valiti nn kontseptsioon \"teema p\u00f5hineb uuesti proovima\". Iga p\u00f5hiteema jaoks luuakse \u00fcks v\u00f5i mitu retry teemat, kuhu suunatakse vigased s\u00f5numid ja seel\u00e4bi v\u00e4listatakse viivitus peamise teema s\u00f5numite t\u00f6\u00f6tlemisel. Koostoime skeem - <\/p>\n<p><img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, kas need on m\u00e4rgistatud?\" src=\"\/wp-content\/uploads\/2020\/07\/922b3107d183312312713c213488fbe1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSelle skeemi rakendamiseks vajasime j\u00e4rgmist - integreerida see lahendus Springiga ja v\u00e4ltida koodi dubleerimist. Internetis sattusime sarnasele lahendusele, mis p\u00f5hines Spring BeanPostProcessoril, kuid see tundus meile \u00fclem\u00e4\u00e4ra kohmakas. Meie meeskond leidis lihtsama lahenduse, mis v\u00f5imaldab integreeruda Springi consumerite loomise ts\u00fcklisse ja lisada t\u00e4iendavalt Retry consumer'eid. Meie lahenduse protot\u00fc\u00fcbi pakkusime Springi meeskonnale, seda saab vaadata <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/issues\/1229\">siit<\/a><\/noindex>. Retry consumer'ite arv ja iga consumer'i katsete arv seadistatakse parameetrite kaudu vastavalt \u00e4riprotsessi vajadustele, ning et k\u00f5ik t\u00f6\u00f6taks, tuleb lihtsalt paigaldada k\u00f5igile Springi arendajatele tuttav annotatsioon org.springframework.kafka.annotation.KafkaListener.<\/p>\n<p>Kui s\u00f5numit ei \u00f5nnestunud k\u00f5ikide retry katsete j\u00e4rel t\u00f6\u00f6delda, j\u00f5uab see DLT-le (dead letter topic) Spring DeadLetterPublishingRecoverer'i abil. Tugiteenuse soovil laiendasime seda funktsionaalsust ja l\u00f5ime eraldi teenuse, mis v\u00f5imaldab vaadata DLT-sse sattunud s\u00f5numeid, stackTrace'i, traceId-d ja muud kasulikku teavet. Lisaks lisatud monitooringud ja h\u00e4ires\u00fcsteemid k\u00f5igile DLT teemadele, ning n\u00fc\u00fcd on DLT teema s\u00f5numi ilmumine p\u00f5hjus probleemi anal\u00fc\u00fcsimiseks ja defekti avamiseks. See on v\u00e4ga mugav - teema nime j\u00e4rgi m\u00f5istame kohe, millises protsessi etapis probleem tekkis, mis kiirendab oluliselt juurep\u00f5hjuse otsimist.<\/p>\n<p><img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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 toetuse kaudu s\u00f5numeid uuesti saata p\u00e4rast nende p\u00f5hjuste k\u00f5rvaldamist (n\u00e4iteks, v\u00e4lise s\u00fcsteemi t\u00f6\u00f6v\u00f5ime taastamine) ja muidugi avada vastav defekt anal\u00fc\u00fcsiks. Siin tulid kasuks meie self-teemad, et mitte taask\u00e4ivitada pikka t\u00f6\u00f6tlemisahelat, saab seda taask\u00e4ivitada vajalikust sammust. <\/p>\n<p><img decoding=\"async\" alt=\"\u00abWalking in my shoes\u00bb \u2014 oota, 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 ekspluateerimine<\/h3>\n<p>\nPlatvorm on juba tootmiseksponeeritud, iga p\u00e4ev teeme tarnet ja laadimist, \u00fchendame uusi jaotuskeskusi ja poode. Pilootprojektina t\u00f6\u00f6tab s\u00fcsteem kaubagruppidega \"Tubakas\" ja \"Jalatsid\". <\/p>\n<p>Kogu meie meeskond osaleb pilootide l\u00e4biviimisel, anal\u00fc\u00fcsib tekkinud probleeme ja teeb ettepanekuid meie toote t\u00e4iustamiseks, alates logide t\u00e4iustamisest kuni protsesside muutmiseni. <\/p>\n<p>Kuna v\u00e4ltida oma vigade kordamist, kajastuvad k\u00f5ik pilootprojekti k\u00e4igus leitud juhtumid automatiseeritud testides. Suure arvu automatiseeritud ja unit-testide olemasolu v\u00f5imaldab l\u00e4bi viia regressiooniteste ja rakendada hotfixe sisuliselt paari tunni jooksul.<\/p>\n<p>Praegu j\u00e4tkame oma platvormi arendamist ja t\u00e4iustamist ning seisame pidevalt silmitsi uute v\u00e4ljakutsetega. Kui olete huvitatud, 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.1.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.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\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\u201eWalking in my shoes\u201c \u2014 oota, aga kas need on m\u00e4rgistatud? | ProHoster","description":"Alates 2019. aastast kehtib Venemaal kohustuslik m\u00e4rgistamise seadus. Seadus ei laiene k\u00f5ikidele kaubagruppidele ning kaupade grupi kohustusliku m\u00e4rgistamise j\u00f5ustumise t\u00e4htajad on erinevad.","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}]}}