{"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\/sl\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","title":{"rendered":"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Od leta 2019 v Rusiji velja zakon o obveznem ozna\u010devanju. Zakon se ne uporablja za vse skupine blaga, roki uveljavitve obveznega ozna\u010devanja za razli\u010dne skupine blaga pa so razli\u010dni. Med prve blago, ki mora biti ozna\u010deno, spadajo tobak, obutev in zdravila, kasneje pa bodo dodane \u0161e druge kategorije, na primer parfumi, tekstil in mleko. To zakonodajno novost je spodbudilo razvoj novih IT-re\u0161itev, ki omogo\u010dajo sledenje celotni \u017eivljenjski verigi blaga od proizvajalca do kon\u010dnega potro\u0161nika, vklju\u010dno z vsemi udele\u017eenci v procesu: tako dr\u017eava kot vse organizacije, ki prodajajo blago z obveznim ozna\u010devanjem.<\/p>\n<p>V podjetju X5 je sistem, ki bo sledil ozna\u010denemu blagu in izmenjeval podatke z dr\u017eavo in dobavitelji, dobil ime \u201cMarkus\u201d. Opi\u0161emo, kako in kdo ga je razvijal, kak\u0161no je njegovo tehnolo\u0161ko okolje in zakaj se lahko ponosimo na dose\u017eke.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" 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>Pravi HighLoad<\/h3>\n<p>\n\u201cMarkus\u201d re\u0161uje \u0161tevilne naloge, najpomembnej\u0161a pa je integracijsko sodelovanje med informacijskimi sistemi X5 in dr\u017eavno informacijsko sistem ozna\u010denih proizvodov (GIS MP) za sledenje gibanju ozna\u010denega blaga. Platforma prav tako hrani vse prejeti kode ozna\u010devanja in celotno zgodovino gibanja teh kod po objektih ter pomaga prepre\u010diti zamenjavo ozna\u010denega blaga. Na primeru toba\u010dnega blaga, ki je bilo vklju\u010deno v prve skupine ozna\u010denih izdelkov, samo en tovorni avto cigaret vsebuje pribli\u017eno 600.000 paketov, od katerih ima vsak svoj edinstven kodo. Naloga na\u0161ega sistema je slediti in preveriti zakonitost premikov vsakega tak\u0161nega paketa med skladi\u0161\u010di in trgovinami ter v kon\u010dni fazi preveriti ustreznost njihove prodaje kon\u010dnemu kupcu. Zabele\u017eimo pribli\u017eno 125.000 blagajni\u0161kih transakcij na uro, hkrati pa je potrebno zabele\u017eiti, kako je vsak tak paket pri\u0161el v trgovino. Tako upo\u0161tevajo\u010d vse preme\u0161\u010danja med objekti pri\u010dakujemo desetine milijard zapisov na leto.<\/p>\n<h3>Ekipa M<\/h3>\n<p>\nKljub temu, da je projekt \u201eMarkus\u201c znotraj H5 obravnavan kot projekt, se izvaja po produktnem pristopu. Ekipa dela po metodi Scrum. Projekt se je za\u010del poleti lani, prvi rezultati pa so bili vidni \u0161ele oktobra, ko je bila povsem oblikovana lastna ekipa, razvita arhitektura sistema in kupljena oprema. Trenutno ima ekipa 16 \u010dlanov, od katerih se \u0161est ukvarja z razvojem backend in frontend, trije pa sistemsko analizo. \u0160est oseb se ukvarja z ro\u010dnim, obremenitvenim in avtomatiziranim testiranjem ter podporo izdelku. Poleg tega imamo tudi specialista SRE. <\/p>\n<p>Kodo v na\u0161i ekipi ne pi\u0161ejo le razvijalci, prakti\u010dno vsi fantje znajo programirati in pi\u0161ejo avtomatske teste, obremenitvene skripte in skripte za avtomatizacijo. Temu posve\u010damo posebno pozornost, saj tudi podpora izdelku zahteva visoko raven avtomatizacije. Kolegom, ki prej niso programirali, vedno posku\u0161amo svetovati in pomagati ter jim dodeliti manj\u0161e naloge.<\/p>\n<p>Zaradi pandemije koronavirusne oku\u017ebe smo celotno ekipo prestavili na delo na daljavo, prisotnost vseh orodij za upravljanje razvoja, zgrajen delovni tok v Jiri in GitLabu pa je omogo\u010dila, da smo ta korak enostavno prestali. Meseci dela na daljavo so pokazali, da produktivnost ekipe ni trpela, za mnoge je bilo delo bolj udobno, edina stvar, ki jo primanjkuje, je osebno sre\u010danje.<\/p>\n<h3>Sre\u010danje ekipe pred delom na daljavo<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/c1095316fd5e3dcc147b3dd968013152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Sre\u010danja med delom na daljavo<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/0c705ebbe28afbecd439c0ce2fcf04cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tehnolo\u0161ki sklad re\u0161itve<\/h3>\n<p>\nStandardno skladi\u0161\u010de in orodje CI\/CD za H5 je GitLab. Uporabljamo ga za shranjevanje kode, neprekinjeno testiranje, uvajanje na testne in produkcijske stre\u017enike. Uporabljamo tudi prakso pregleda kode, pri kateri morata vsaj dva kolega odobriti spremembe, ki jih je predlagal razvijalec. Stati\u010dni analizatorji kode SonarQube in JaCoCo nam pomagajo ohranjati kodo \u010disto in zagotavljati zahtevano raven kritja enotnih testov. Vse spremembe v kodi morajo obvezno prestati te preglede. Vsi testni scenariji, ki jih izvedemo ro\u010dno, se nato avtomatizirajo.<\/p>\n<p>Za uspe\u0161no izvajanje poslovnih procesov s \u201eMarkusom\u201c smo morali re\u0161iti vrsto tehnolo\u0161kih nalog, o vsaki posebej. <\/p>\n<p><b>Naloga 1. Potreba po horizontalni raz\u0161irljivosti sistema<\/b><\/p>\n<p>Za re\u0161itev te naloge smo izbrali mikrostoritevni pristop k arhitekturi. Pri tem je bilo zelo pomembno razumeti podro\u010dja odgovornosti storitev. Posku\u0161ali smo jih razdeliti po poslovnih operacijah ob upo\u0161tevanju specifike procesov. Na primer, sprejem blaga v skladi\u0161\u010de je redka, a zelo obse\u017ena operacija, pri kateri je treba \u010dim hitreje pridobiti od dr\u017eavnega regulatorja informacije o sprejetih enotah blaga, katerih koli\u010dina v enem po\u0161iljanju dose\u017ee do 600000, preveriti dopustnost sprejema tega blaga v skladi\u0161\u010de in predati vse potrebne informacije sistemu avtomatizacije skladi\u0161\u010da. Odpremanje iz skladi\u0161\u010d pa je veliko intenzivnej\u0161a, vendar se ukvarja z manj\u0161imi volumni podatkov. <\/p>\n<p>Vse storitve implementiramo po na\u010delu stateless in tudi notranje operacije posku\u0161amo razdeliti na korake, pri \u010demer uporabljamo, kot jih imenujemo, self-teme Kafka. To je, ko mikrostoritev po\u0161lje sporo\u010dilo samo sebi, kar omogo\u010da uravnove\u0161anje obremenitve pri bolj zahtevnih operacijah in poenostavi vzdr\u017eevanje produkta, vendar o tem kasneje. <\/p>\n<p>Odlo\u010dili smo se, da bomo v lo\u010dene storitve izlo\u010dili module za interakcijo z zunanjimi sistemi. To je omogo\u010dilo re\u0161itev te\u017eave pogosto spreminjajo\u010dih se API-jev zunanjih sistemov skoraj brez vpliva na storitve s poslovno funkcionalnostjo.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/da1dc58791fa28e89e289528e0fd2550.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVse mikrostoritve se uvajajo v klaster OpenShift, kar re\u0161uje tako problem raz\u0161irljivosti vsake mikrostoritve, kot nam omogo\u010da, da ne uporabljamo zunanjih orodij za odkrivanje storitev.<\/p>\n<p><b>Naloga 2. Potreba po ohranjanju visoke obremenitve in zelo intenzivnem izmenjavanju podatkov med storitvami platforme:<\/b> samo v fazi zagon projekta se izvede pribli\u017eno 600 operacij na sekundo. Pri\u010dakujemo pove\u010danje te vrednosti na 5000 operacij\/sekund, ko bomo povezali trgovske objekte z na\u0161o platformo.<\/p>\n<p>To solve this task, we deployed a Kafka cluster and practically completely eliminated synchronous interactions between the platform's microservices. This requires a very careful analysis of system requirements, as not all operations can be asynchronous. Additionally, we not only transmit events through the broker but also include all necessary business information in the message. As a result, the message size can reach several hundred kilobytes. The limitation on message size in Kafka requires us to accurately predict message sizes, and if necessary, we split them logically, related to business operations. <br \/>\nFor example, goods arriving in a vehicle are divided by boxes. Separate microservices are allocated for synchronous operations, and thorough load testing is conducted. Using Kafka presented us with another challenge \u2014 ensuring our service operates effectively under Kafka integration turns all our unit tests into asynchronous ones. We addressed this task by writing our utility methods using the Embedded Kafka Broker. This does not negate the need for writing unit tests for individual methods, but we prefer to test complex cases using Kafka.<\/p>\n<p>We paid a lot of attention to tracing logs to ensure that their TraceId are not lost when exceptions occur during service operations or when working with Kafka batch. While this did not raise particular issues in the first case, in the second case, we were compelled to log all TraceIds that came with the batch and select one to continue tracing. Thus, when searching by the original TraceId, the user can easily find which one the tracing continued with.<\/p>\n<p><b>Task 3. The need to store a large volume of data: <\/b> over 1 billion markings per year for tobacco alone is received by X5. They require constant and quick access. The system must process about 10 billion records regarding the movement history of marked goods.<\/p>\n<p>To solve the third problem, we chose the NoSQL database MongoDB. We have built a shard consisting of 5 nodes, and each node contains a Replica Set of 3 servers. This allows us to scale the system horizontally by adding <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sl\/server\/\"   title=\"new servers\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"781\">new servers<\/a> v klaster, in zagotoviti njegovo odpornost proti napakam. Tukaj se soo\u010damo z drugim problemom \u2013 zagotavljanje transak\u010dnosti v klasterju mongo z upo\u0161tevanjem uporabe vodoravno skalabilnih mikroservisov. Na primer, ena od nalog na\u0161ega sistema je prepoznavanje poskusov ponovnega prodaje blaga z enakimi \u0161tevilkami ozna\u010db. Tukaj prihaja do te\u017eav z napa\u010dnimi skeniranji ali napa\u010dnimi operacijami blagajnikov. Ugotovili smo, da se tak\u0161ne kopije lahko pojavijo tako znotraj enega obdelovanega batcha Kafka, kot tudi znotraj dveh hkrati obdelovanih batchov. Tako preverjanje pojava podvojitev s poizvedbo v bazi ni dajalo rezultatov. Za vsak mikroservis smo te\u017eavo re\u0161evali lo\u010deno glede na poslovno logiko tega servisa. Na primer, za ra\u010dune smo dodali preverjanje znotraj batcha in lo\u010deno obdelavo za pojav podvojenih zapisov pri vstavljanju. <\/p>\n<p>Da delo uporabnikov z zgodovino operacij ne bi vplivalo na najpomembnej\u0161e \u2013 delovanje na\u0161ih poslovnih procesov, smo vse zgodovinske podatke izlo\u010dili v lo\u010den servis z lo\u010deno bazo podatkov, ki prav tako prejema informacije prek Kafka. Tako uporabniki delajo z izoliranim servisom, ne da bi vplivali na servise, ki obdelujejo podatke o trenutnih operacijah.<\/p>\n<p><b>Naloga 4. Ponovna obdelava vrstic in spremljanje:<\/b><\/p>\n<p>V razdeljenih sistemih se neizogibno pojavljajo te\u017eave in napake pri dostopnosti baz podatkov, vrstic in zunanjih virov podatkov. V primeru 'Markusa' je vir tak\u0161nih napak integracija z zunanjimi sistemi. Potrebno je bilo najti re\u0161itev, ki omogo\u010da ponovno po\u0161iljanje zahtevkov glede na napake s predpisanim timeoutom, vendar ne prekine obdelave uspe\u0161nih zahtevkov v glavni vrstici. Za to je bila izbrana tako imenovana koncept 'topic based retry'. Za vsak glavni topic se ustvari ena ali ve\u010d retry topicov, v katere se usmerjajo sporo\u010dila z napakami, pri \u010demer se izklju\u010duje zamuda pri obdelavi sporo\u010dil iz glavnega topic-a. Shema interakcije \u2014 <\/p>\n<p><img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/922b3107d183312312713c213488fbe1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa izvajanje tovrstne sheme smo potrebovali tole \u2014 integrirati to re\u0161itev s Springom in se izogniti podvajanju kode. Na spletu smo naleteli na podobno re\u0161itev, ki temelji na Spring BeanPostProcessorju, vendar se nam je zdela preve\u010d obse\u017ena. Na\u0161a ekipa je razvila preprostej\u0161o re\u0161itev, ki se omogo\u010da vklju\u010ditev v krog Spring pri ustvarjanju porabnikov in dodatno dodajanje Retry porabnikov. Prototip na\u0161e re\u0161itve smo predlo\u017eili ekipi Spring, ogledate si ga lahko <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/issues\/1229\">tukaj<\/a><\/noindex>. \u0160tevilo Retry porabnikov in \u0161tevilo poskusov vsakega porabnika se nastavi preko parametrov, odvisno od potreb poslovnega procesa, in da vse deluje, je dovolj, da preprosto dodamo vsem Spring razvijalcem znano oznako org.springframework.kafka.annotation.KafkaListener.<\/p>\n<p>V primeru, da sporo\u010dila ni bilo mogo\u010de obdelati po vseh poskusih ponovne obdelave, le-to preide v DLT (dead letter topic) s pomo\u010djo Spring DeadLetterPublishingRecoverer. Na pro\u0161njo podpore smo raz\u0161irili to funkcionalnost in ustvarili poseben storitev, ki omogo\u010da ogled prejetih sporo\u010dil v DLT, stackTrace, traceId in druge koristne informacije o njih. Poleg tega smo dodali spremljanje in opozorila za vse DLT teme, in zdaj dejansko pojavitev sporo\u010dila v DLT temi pomeni razlog za analizo in odprtje napake. To je zelo priro\u010dno \u2014 \u017ee po imenu teme takoj razumemo, na kateri stopnji procesa se je te\u017eava pojavila, kar mo\u010dno pospe\u0161i iskanje njene osnovne vzro\u010dne te\u017eave.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/ba1110bf1c93249c73dd76c490f1d7aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPred kratkim smo izvedli vmesnik, ki omogo\u010da ponovno po\u0161iljanje sporo\u010dil s pomo\u010djo na\u0161e podpore, po odpravi njihovih vzrokov (na primer, obnova delovanja zunanjega sistema) in seveda odprtje ustrezne napake za analizo. Tukaj so nam pri\u0161li prav na\u0161i self-teme, da ne bi morali znova zagnati dolge verige obdelave, jo lahko za\u017eenemo znova s potrebne stopnje. <\/p>\n<p><img decoding=\"async\" alt=\"\u201eHodim v mojih \u010devljih\u201c \u2014 po\u010dakaj, ali so ozna\u010deni?\" src=\"\/wp-content\/uploads\/2020\/07\/78c7831131808732b74b27f055b60d54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Izvajanje platforme<\/h3>\n<p>\nPlatforma je \u017ee v produktivni uporabi, vsak dan izvajamo dobave in naloge, povezujemo nove distribucijske centre in trgovine. V okviru pilotnega projekta sistem deluje s skupinami izdelkov 'Toba\u010dna' in 'Obutev'. <\/p>\n<p>Vsa na\u0161a ekipa sodeluje pri izvajanju pilotnih projektov, analizira nastale te\u017eave in predlaga izbolj\u0161ave na\u0161ega izdelka, od izbolj\u0161anja logov do sprememb v procesih. <\/p>\n<p>Da ne ponavljamo svoje napake, vsi primeri, ki smo jih na\u0161li med pilotiranjem, najdejo svoj odsev v avtomatiziranih testih. Veliko \u0161tevilo avto-testov in unit-testov omogo\u010da izvajanje regresijskega testiranja in uvajanje hotfix-a prakti\u010dno v nekaj urah.<\/p>\n<p>Trenutno nadaljujemo z razvojem in izbolj\u0161evanjem na\u0161e platforme ter se nenehno sre\u010dujemo z novimi izzivi. \u010ce vas zanima, vam bomo o na\u0161ih re\u0161itvah povedali v naslednjih \u010dlankih.<br \/>\n<br \/>Izvor: <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.4 - 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\/sl\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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 po\u010dakajte, a so ti ozna\u010deni? | ProHoster","description":"Od leta 2019 v Rusiji velja zakon o obveznem ozna\u010devanju. Zakon se ne nana\u0161a na vse skupine blaga, roki za za\u010detek veljavnosti obveznega ozna\u010devanja pa so za razli\u010dne blage skupine razli\u010dni.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/87372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=87372"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/87372\/revisions"}],"predecessor-version":[{"id":157972,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/87372\/revisions\/157972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/87373"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=87372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=87372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=87372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}