{"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\/de\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","title":{"rendered":"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Seit 2019 gilt in Russland ein Gesetz zur obligatorischen Kennzeichnung. Das Gesetz betrifft nicht alle Warengruppen, und die Fristen f\u00fcr den Inkrafttreten der Kennzeichnungsanforderungen variieren je nach Warengruppe. Zun\u00e4chst sind Tabak, Schuhe und Medikamente von der obligatorischen Kennzeichnung betroffen, sp\u00e4ter werden auch weitere Produkte wie Parf\u00fcm, Textilien und Milch hinzukommen. Diese gesetzliche Neuerung hat die Entwicklung neuer IT-L\u00f6sungen angeregt, die es erm\u00f6glichen, die gesamte Lebensdauer eines Produkts vom Herstellungsprozess bis zum Kauf durch den Endverbraucher nachzuvollziehen. Dies betrifft alle Beteiligten: sowohl den Staat als auch alle Unternehmen, die Produkte mit obligatorischer Kennzeichnung vertreiben.<\/p>\n<p>Bei X5 erhielt das System zur Verfolgung von gekennzeichneten Produkten und zum Austausch von Daten mit dem Staat und den Lieferanten den Namen \u201eMarkus\u201c. Lassen Sie uns der Reihe nach erkl\u00e4ren, wie und von wem es entwickelt wurde, welchen Technologie-Stack es hat und warum wir stolz darauf sein k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" 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>Echter HighLoad<\/h3>\n<p>\n\u201eMarkus\u201c l\u00f6st zahlreiche Aufgaben, wobei die Hauptaufgabe die Integration zwischen den Informationssystemen von X5 und dem staatlichen Informationssystem f\u00fcr die R\u00fcckverfolgbarkeit von markierten Produkten (GIS MP) ist. Die Plattform speichert auch alle erhaltenen Markierungscodes und die gesamte Historie ihrer Bewegungen zwischen Objekten, was hilft, \u00dcberbest\u00e4nde in den markierten Produkten zu vermeiden. Nehmen wir als Beispiel Tabakprodukte, die zu den ersten Gruppen markierter Waren geh\u00f6ren: Ein Lkw mit Zigaretten enth\u00e4lt etwa 600.000 Schachteln, von denen jede einen einzigartigen Code hat. Die Aufgabe unseres Systems besteht darin, die Legalit\u00e4t der Bewegungen jeder dieser Schachteln zwischen Lagern und Gesch\u00e4ften zu verfolgen und schlie\u00dflich zu \u00fcberpr\u00fcfen, ob deren Verkauf an den Endverbraucher zul\u00e4ssig ist. Wir erfassen etwa 125.000 Kassenvorg\u00e4nge pro Stunde und m\u00fcssen auch dokumentieren, wie jede dieser Schachteln ins Gesch\u00e4ft gelangt ist. Unter Ber\u00fccksichtigung aller Bewegungen zwischen den Objekten erwarten wir in einem Jahr Dutzende von Milliarden Datens\u00e4tzen.<\/p>\n<h3>Team M<\/h3>\n<p>\nObwohl \"Markus\" innerhalb von X5 als Projekt angesehen wird, erfolgt die Umsetzung nach einem produktorientierten Ansatz. Das Team arbeitet nach Scrum. Der Projektstart war im Sommer letzten Jahres, aber die ersten Ergebnisse kamen erst im Oktober \u2013 unser eigenes Team wurde vollst\u00e4ndig zusammengestellt, die Systemarchitektur wurde entworfen und die Hardware wurde angeschafft. Aktuell besteht das Team aus 16 Personen, von denen sechs an der Entwicklung von Backend und Frontend arbeiten, drei Systemanalysen durchf\u00fchren. Weitere sechs Personen sind f\u00fcr manuelle, lastbasierte und automatisierte Tests sowie die Produktbetreuung verantwortlich. Zudem haben wir einen SRE-Spezialisten. <\/p>\n<p>Nicht nur Entwickler schreiben den Code in unserem Team, fast alle Kollegen k\u00f6nnen programmieren und erstellen automatisierte Tests, Lasttests und Skripte zur Automatisierung. Wir legen gro\u00dfen Wert darauf, da sogar die Produktpflege ein hohes Ma\u00df an Automatisierung erfordert. Den Kollegen, die zuvor nicht programmiert haben, versuchen wir stets, Unterst\u00fctzung zu bieten und kleine Aufgaben zu geben.<\/p>\n<p>Aufgrund der Coronavirus-Pandemie haben wir unser gesamtes Team ins Homeoffice versetzt. Mit allen notwendigen Tools f\u00fcr das Entwicklungsmanagement, einem etablierten Workflow in Jira und GitLab konnten wir diese Phase problemlos meistern. Die Monate im Homeoffice haben gezeigt, dass die Produktivit\u00e4t des Teams davon nicht beeintr\u00e4chtigt wurde. F\u00fcr viele Mitarbeiter hat sich der Komfort bei der Arbeit erh\u00f6ht. Einzig fehlt der pers\u00f6nliche Austausch.<\/p>\n<h3>Team-Meeting vor dem Homeoffice<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/c1095316fd5e3dcc147b3dd968013152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Meetings w\u00e4hrend des Homeoffice<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/0c705ebbe28afbecd439c0ce2fcf04cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Technologischer Stack der L\u00f6sung<\/h3>\n<p>\nDas Standard-Repository und CI\/CD-Tool f\u00fcr X5 ist GitLab. Wir nutzen es zur Speicherung des Codes, f\u00fcr kontinuierliche Tests und f\u00fcr das Deployment auf Test- und Produktivserver. Zudem praktizieren wir Code-Reviews, bei denen mindestens zwei Kollegen die vom Entwickler vorgenommenen \u00c4nderungen am Code genehmigen m\u00fcssen. Statische Code-Analyzer wie SonarQube und JaCoCo helfen uns, den Code sauber zu halten und das erforderliche Niveau an Unit-Test-Abdeckung zu gew\u00e4hrleisten. Alle \u00c4nderungen im Code m\u00fcssen diese Pr\u00fcfungen durchlaufen. Alle manuellen Testf\u00e4lle werden anschlie\u00dfend automatisiert.<\/p>\n<p>Um die Gesch\u00e4ftsprozesse erfolgreich mit \"Markus\" durchzuf\u00fchren, mussten wir eine Reihe von technologischen Herausforderungen meistern, die wir der Reihe nach angehen. <\/p>\n<p><b>Aufgabe 1. Die Notwendigkeit der horizontalen Skalierbarkeit des Systems<\/b><\/p>\n<p>F\u00fcr diese Herausforderung haben wir einen mikroservicebasierten Architekturansatz gew\u00e4hlt. Es war dabei besonders wichtig, die Verantwortungsbereiche der einzelnen Services zu verstehen. Wir haben uns bem\u00fcht, diese auf Basis der Gesch\u00e4ftsoperationen unter Ber\u00fccksichtigung der spezifischen Prozesse zu gliedern. Die Warenannahme im Lager ist beispielsweise eine nicht sehr h\u00e4ufig durchgef\u00fchrte, aber sehr umfangreiche Operation, bei der wir so schnell wie m\u00f6glich Informationen \u00fcber die akzeptierten Warenmengen, die in einer Lieferung bis zu 600.000 Einzelteile erreichen k\u00f6nnen, vom staatlichen Regulierungsbeh\u00f6rde erhalten m\u00fcssen, um die Zul\u00e4ssigkeit der Annahme dieser Waren im Lager zu \u00fcberpr\u00fcfen und alle notwendigen Informationen dem Lagersystem zu \u00fcbergeben. Im Gegensatz dazu ist die Auslagerung von Waren viel intensiver, arbeitet jedoch mit kleineren Datenmengen. <\/p>\n<p>Alle unsere Dienste basieren auf dem Prinzip des Stateless und selbst interne Operationen versuchen wir in Schritte zu unterteilen, indem wir, wie wir sie nennen, self-Themen von Kafka verwenden. Das ist, wenn ein Microservice eine Nachricht an sich selbst sendet, wodurch die Last bei ressourcenintensiven Operationen besser verteilt wird und die Wartung des Produkts vereinfacht wird \u2013 dazu sp\u00e4ter mehr. <\/p>\n<p>Wir haben uns entschieden, die Module zur Interaktion mit externen Systemen in separate Dienste auszulagern. Dadurch konnten wir das Problem der h\u00e4ufig wechselnden APIs externer Systeme l\u00f6sen, ohne dabei die Dienste mit Business-Funktionalit\u00e4t zu beeintr\u00e4chtigen.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/da1dc58791fa28e89e289528e0fd2550.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlle Mikrodienste werden in einem OpenShift-Cluster bereitgestellt, der sowohl das Problem der Skalierung jedes Mikrodienstes l\u00f6st als auch erm\u00f6glicht, dass wir keine externen Tools f\u00fcr die Service Discovery verwenden m\u00fcssen.<\/p>\n<p><b>Aufgabe 2. Die Notwendigkeit, eine hohe Last und einen sehr intensiven Datenaustausch zwischen den Diensten der Plattform aufrechtzuerhalten:<\/b> Zu Beginn des Projekts werden etwa 600 Operationen pro Sekunde ausgef\u00fchrt. Wir erwarten, dass dieser Wert mit der Anbindung der Handelsobjekte an unsere Plattform auf 5000 ops\/sec ansteigt.<\/p>\n<p>Wir haben dieses Problem durch das Bereitstellen eines Kafka-Clusters gel\u00f6st und nahezu vollst\u00e4ndig auf synchrone Interaktionen zwischen den Mikrodiensten der Plattform verzichtet. Dies erfordert eine sehr sorgf\u00e4ltige Analyse der Systemanforderungen, da nicht alle Operationen asynchron sein k\u00f6nnen. Dabei \u00fcbermitteln wir nicht nur Ereignisse \u00fcber den Broker, sondern auch alle erforderlichen Gesch\u00e4ftsinformationen in der Nachricht. Infolgedessen kann die Nachrichtenl\u00e4nge mehrere hundert Kilobyte erreichen. Das Limit f\u00fcr die Nachrichtengr\u00f6\u00dfe in Kafka zwingt uns zu einer pr\u00e4zisen Prognose der Nachrichtenl\u00e4ngen, und wenn n\u00f6tig, teilen wir sie, wobei die Teilung logisch und gesch\u00e4ftsorientiert ist. <br \/>\nBeispielsweise teilen wir Waren, die mit dem Auto angekommen sind, nach Kisten auf. F\u00fcr synchronisierte Abl\u00e4ufe werden separate Microservices bereitgestellt und es erfolgt eine gr\u00fcndliche Lastpr\u00fcfung. Der Einsatz von Kafka stellte uns vor eine neue Herausforderung \u2013 die \u00dcberpr\u00fcfung der Funktionsweise unseres Dienstes unter Ber\u00fccksichtigung der Integration von Kafka macht alle unsere Unit-Tests asynchron. Diese Aufgabe haben wir gel\u00f6st, indem wir eigene Utility-Methoden mit einem Embedded Kafka Broker erstellt haben. Dies mindert nicht die Notwendigkeit, Unit-Tests f\u00fcr einzelne Methoden zu schreiben, jedoch bevorzugen wir es, komplexe F\u00e4lle mithilfe von Kafka zu testen.<\/p>\n<p>Wir haben viel Wert auf das Tracing von Logs gelegt, damit ihre TraceId bei Auftreten von Ausnahmen w\u00e4hrend des Betriebs der Services oder bei der Verarbeitung von Kafkabatches nicht verloren gehen. W\u00e4hrend es bei ersterem keine besonderen Probleme gab, mussten wir im zweiten Fall alle TraceIds, die mit dem Batch ankamen, in das Log schreiben und eine f\u00fcr die fortgesetzte Nachverfolgung ausw\u00e4hlen. So kann der Benutzer bei der Suche nach der urspr\u00fcnglichen TraceId leicht herausfinden, mit welcher die Nachverfolgung fortgesetzt wurde.<\/p>\n<p><b>Aufgabe 3. Die Notwendigkeit der Speicherung gro\u00dfer Datenmengen: <\/b> \u00dcber 1 Milliarde Markierungen pro Jahr f\u00fcr Tabak gelangen zu X5. Daf\u00fcr ist ein st\u00e4ndiger und schneller Zugriff erforderlich. Insgesamt muss das System ungef\u00e4hr 10 Milliarden Datens\u00e4tze zur Historie der Bewegung von markierten Waren verarbeiten.<\/p>\n<p>F\u00fcr die L\u00f6sung der dritten Aufgabe wurde die NoSQL-Datenbank MongoDB ausgew\u00e4hlt. Wir haben einen Shard aus 5 Knoten, und in jedem Knoten befindet sich ein Replica Set aus 3 Servern. Das erm\u00f6glicht eine horizontale Skalierung des Systems durch Hinzuf\u00fcgen <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/server\/\"   title=\"neuer Server.\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"781\">neuer Server.<\/a> in einen Cluster und dessen Ausfallsicherheit zu gew\u00e4hrleisten. Hier stie\u00dfen wir auf ein weiteres Problem - die Sicherstellung der Transaktionsf\u00e4higkeit im MongoDB-Cluster unter Ber\u00fccksichtigung der Nutzung horizontal skalierbarer Mikroservices. Ein Beispiel hierf\u00fcr ist eine unserer Aufgaben, die darin besteht, Wiederverkaufsversuche von Produkten mit identischen Kennzeichnungscodes zu identifizieren. In diesem Kontext treten Probleme mit fehlerhaften Scans oder fehlerhaften Kassiervorg\u00e4ngen auf. Wir haben festgestellt, dass solche Duplikate sowohl innerhalb eines einzelnen verarbeiteten Kafka-Batches als auch in zwei parallel verarbeiteten Batches entstehen k\u00f6nnen. Daher f\u00fchrte die \u00dcberpr\u00fcfung auf Duplikate durch eine Abfrage an die Datenbank zu nichts. F\u00fcr jeden unserer Mikroservices haben wir das Problem entsprechend der Gesch\u00e4ftslogik dieses Dienstes separat gel\u00f6st. Zum Beispiel haben wir f\u00fcr die Belege eine \u00dcberpr\u00fcfung innerhalb des Batches und eine separate Verarbeitung zur Erkennung von Duplikaten bei der Einf\u00fcgung hinzugef\u00fcgt. <\/p>\n<p>Um sicherzustellen, dass die Nutzung der Benutzer mit Transaktionshistorien keinen Einfluss auf das Wichtigste hat \u2013 den Betrieb unserer Gesch\u00e4ftsprozesse \u2013 haben wir alle historischen Daten in einen separaten Dienst mit einer eigenen Datenbank ausgelagert, der ebenfalls \u00fcber Kafka Informationen erh\u00e4lt. Auf diese Weise arbeiten die Benutzer mit einem isolierten Dienst, der die Dienste, die aktuelle Transaktionen verarbeiten, nicht beeinflusst.<\/p>\n<p><b>Aufgabe 4. Wiederverarbeitung von Warteschlangen und Monitoring:<\/b><\/p>\n<p>In verteilten Systemen treten unvermeidlich Probleme und Verf\u00fcgbarkeitsfehler bei Datenbanken, Warteschlangen und externen Datenquellen auf. Im Fall von \"Markus\" sind externe Systemintegrationen eine Quelle solcher Fehler. Es war notwendig, eine L\u00f6sung zu finden, die es erm\u00f6glicht, fehlerhafte Antworten mit einem festgelegten Timeout erneut anzufordern, ohne gleichzeitig die Verarbeitung erfolgreicher Anfragen in der Hauptwarteschlange zu unterbrechen. Daher wurde das Konzept des \"topic based retry\" gew\u00e4hlt. F\u00fcr jedes Hauptthema wird ein oder mehrere Retry-Themen erstellt, in die fehlerhafte Nachrichten geleitet werden, wobei eine Verz\u00f6gerung bei der Verarbeitung der Nachrichten aus dem Hauptthema ausgeschlossen wird. Das Interaktionsschema ist \u2014 <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/922b3107d183312312713c213488fbe1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr die Umsetzung dieses Schemas ben\u00f6tigten wir Folgendes \u2013 die Integration dieser L\u00f6sung mit Spring und die Vermeidung von Code-Duplikaten. Im Internet stie\u00dfen wir auf eine \u00e4hnliche L\u00f6sung, die auf Spring BeanPostProcessor basierte, allerdings erschien uns diese zu umst\u00e4ndlich. Unser Team entwickelte eine einfachere L\u00f6sung, die sich in den Spring-Zyklus zur Erstellung von Consumer integrieren l\u00e4sst und zus\u00e4tzlich Retry-Consumers hinzuf\u00fcgt. Ein Prototyp unserer L\u00f6sung wurde dem Spring-Team vorgestellt, den Sie sich ansehen k\u00f6nnen. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/issues\/1229\">hier<\/a><\/noindex>Die Anzahl der Retry-Consumers und die Anzahl der Versuche jedes Consumers lassen sich \u00fcber Parameter konfigurieren, abh\u00e4ngig von den Anforderungen des Gesch\u00e4ftsprozesses. Damit alles funktioniert, muss lediglich die jedem Spring-Entwickler bekannte Annotation org.springframework.kafka.annotation.KafkaListener hinzugef\u00fcgt werden.<\/p>\n<p>Wenn eine Nachricht nach allen Wiederholungsversuchen nicht verarbeitet werden konnte, gelangt sie mithilfe des Spring DeadLetterPublishingRecoverer in das DLT (Dead Letter Topic). Auf Wunsch des Supports haben wir diese Funktionalit\u00e4t erweitert und einen separaten Service erstellt, der es erm\u00f6glicht, die in das DLT gelangten Nachrichten, den StackTrace, die traceId und andere n\u00fctzliche Informationen dazu zu betrachten. Zudem wurden \u00dcberwachungen und Alarme f\u00fcr alle DLT-Topics hinzugef\u00fcgt, sodass das Auftreten einer Nachricht im DLT-Topic jetzt im Grunde genommen Anlass zur Analyse und zur Erstellung eines Fehlerscheins ist. Das ist sehr praktisch \u2013 an der Bezeichnung des Topics erkennen wir sofort, an welchem Schritt des Prozesses das Problem aufgetreten ist, was die Suche nach der Hauptursache erheblich beschleunigt.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/ba1110bf1c93249c73dd76c490f1d7aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVor kurzem haben wir eine Schnittstelle implementiert, die es unserem Support erm\u00f6glicht, Nachrichten erneut zu senden, nachdem die Ursachen behoben wurden (zum Beispiel die Wiederherstellung der Funktionalit\u00e4t eines externen Systems) und nat\u00fcrlich die entsprechende Fehlermeldung zur Analyse erstellt wurde. Hier kamen unsere Self-Topics ins Spiel, um nicht die gesamte lange Verarbeitungskette neu zu starten; stattdessen kann sie ab dem ben\u00f6tigten Schritt erneut gestartet werden. <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201c \u2013 Moment mal, sind die gekennzeichnet?\" src=\"\/wp-content\/uploads\/2020\/07\/78c7831131808732b74b27f055b60d54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Betrieb der Plattform<\/h3>\n<p>\nDie Plattform ist bereits im produktiven Einsatz. Jeden Tag f\u00fchren wir Lieferungen und Versand durch und schlie\u00dfen neue Verteilzentren und Gesch\u00e4fte an. Im Rahmen des Piloten arbeitet das System mit den Produktgruppen \"Tabak\" und \"Schuhe\". <\/p>\n<p>Unser gesamtes Team ist an der Durchf\u00fchrung der Piloten beteiligt, analysiert auftretende Probleme und bringt Verbesserungsvorschl\u00e4ge f\u00fcr unser Produkt ein, von der Optimierung der Logs bis hin zu \u00c4nderungen in den Prozessen. <\/p>\n<p>Um unsere Fehler nicht zu wiederholen, werden alle w\u00e4hrend des Piloten gefundenen F\u00e4lle in automatisierten Tests dokumentiert. Eine gro\u00dfe Anzahl von automatisierten und Unit-Tests erm\u00f6glicht Regressionstests, sodass wir Hotfixes buchst\u00e4blich innerhalb weniger Stunden anwenden k\u00f6nnen.<\/p>\n<p>Momentan entwickeln und verbessern wir unsere Plattform weiter und stehen st\u00e4ndig neuen Herausforderungen gegen\u00fcber. Wenn Sie interessiert sind, werden wir in den kommenden Artikeln \u00fcber unsere L\u00f6sungen berichten.<br \/>\n<br \/>Quelle: <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 4.9.10 - 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. \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\" \/>\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\/de\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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 Halt, sind die etwa markiert? | ProHoster","description":"Seit 2019 gilt in Russland ein Gesetz zur verpflichtenden Kennzeichnung. Dieses Gesetz betrifft nicht alle Warengruppen, und die Fristen f\u00fcr die Einf\u00fchrung der verpflichtenden Kennzeichnung variieren je nach Warengruppe. Zun\u00e4chst fallen Tabakwaren, Schuhe und Medikamente unter die Kennzeichnungspflicht, sp\u00e4ter werden weitere Produkte wie Parfums, Textilien und Milch hinzukommen. Diese gesetzliche Neuerung hat die Entwicklung neuer IT-L\u00f6sungen angesto\u00dfen, die es erm\u00f6glichen,","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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. \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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/87372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=87372"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/87372\/revisions"}],"predecessor-version":[{"id":157972,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/87372\/revisions\/157972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/87373"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=87372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=87372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=87372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}