{"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\/hu\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","title":{"rendered":"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>2019 \u00f3ta Oroszorsz\u00e1gban k\u00f6telez\u0151 term\u00e9kbejegyz\u00e9si t\u00f6rv\u00e9ny van \u00e9rv\u00e9nyben. A t\u00f6rv\u00e9ny nem vonatkozik minden term\u00e9kcsoportra, \u00e9s a k\u00f6telez\u0151 bejegyz\u00e9s hat\u00e1lyba l\u00e9p\u00e9s\u00e9nek id\u0151pontjai a k\u00fcl\u00f6nb\u00f6z\u0151 term\u00e9kcsoportra elt\u00e9r\u0151ek. Az els\u0151k\u00e9nt k\u00f6telez\u0151 bejegyz\u00e9s al\u00e1 es\u0151 term\u00e9kek k\u00f6z\u00e9 tartozik a doh\u00e1ny, a l\u00e1bbeli \u00e9s a gy\u00f3gyszerek, k\u00e9s\u0151bb m\u00e1s term\u00e9kek, mint p\u00e9ld\u00e1ul a parf\u00fcm, text\u00edli\u00e1k \u00e9s tej is hozz\u00e1ad\u00f3dnak. Ez a jogszab\u00e1lyi \u00faj\u00edt\u00e1s \u00faj informatikai megold\u00e1sok kifejleszt\u00e9s\u00e9re inspir\u00e1lta a teljes term\u00e9k \u00e9letciklus\u00e1nak nyomon k\u00f6vet\u00e9s\u00e9re, a gy\u00e1rt\u00e1st\u00f3l a v\u00e9gfelhaszn\u00e1l\u00f3 v\u00e1s\u00e1rl\u00e1s\u00e1ig, mind az \u00e1llam, mind pedig a k\u00f6telez\u0151 bejegyz\u00e9s al\u00e1 es\u0151 term\u00e9keket forgalmaz\u00f3 szervezetek sz\u00e1m\u00e1ra.<\/p>\n<p>Az X5-n\u00e9l a term\u00e9kek nyomon k\u00f6vet\u00e9s\u00e9re \u00e9s az \u00e1llammal, valamint a besz\u00e1ll\u00edt\u00f3kkal val\u00f3 adatcser\u00e9re szolg\u00e1l\u00f3 rendszer neve \u201eMarkus\u201d. R\u00e9szletesen bemutatjuk, hogyan \u00e9s ki fejlesztette ki, milyen technol\u00f3giai stackkel rendelkezik, \u00e9s mi\u00e9rt lehet\u00fcnk b\u00fcszk\u00e9k r\u00e1.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" 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>Igazi HighLoad<\/h3>\n<p>\nA \u201eMarkus\u201d sz\u00e1mos feladatot megold, ezek k\u00f6z\u00fcl a legfontosabb az integr\u00e1lt egy\u00fcttm\u0171k\u00f6d\u00e9s a X5 informatikai rendszerei \u00e9s az \u00e1llami nyilv\u00e1ntart\u00e1s (GIS MP) k\u00f6z\u00f6tt, amely a nyomon k\u00f6vet\u00e9sre szolg\u00e1l. A platform t\u00e1rolja az \u00f6sszes hozz\u00e1nk be\u00e9rkezett bejegyz\u00e9si k\u00f3dot \u00e9s azok mozg\u00e1s\u00e1nak t\u00f6rt\u00e9net\u00e9t, valamint seg\u00edt a bejegyzett term\u00e9kek \u00e1tsorol\u00e1s\u00e1nak megsz\u00fcntet\u00e9s\u00e9ben. P\u00e9ld\u00e1ul a doh\u00e1nyterm\u00e9kek eset\u00e9ben, amelyek az els\u0151 bejegyzett term\u00e9kcsoportok k\u00f6z\u00e9 tartoznak, egyetlen teheraut\u00f3 cigaretta k\u00f6r\u00fclbel\u00fcl 600 000 dobozt tartalmaz, mindegyiknek saj\u00e1t egyedi k\u00f3dja van. Rendszer\u00fcnk feladata, hogy nyomon k\u00f6vesse \u00e9s ellen\u0151rizze minden ilyen doboz leg\u00e1lis mozgat\u00e1s\u00e1t a rakt\u00e1rak \u00e9s boltok k\u00f6z\u00f6tt, \u00e9s v\u00e9gs\u0151 soron ellen\u0151rizze azok \u00e9rt\u00e9kes\u00edt\u00e9s\u00e9nek lehet\u0151s\u00e9g\u00e9t a v\u00e9gfelhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra. Egy \u00f3r\u00e1ban k\u00f6r\u00fclbel\u00fcl 125 000 p\u00e9nzt\u00e1ri tranzakci\u00f3t regisztr\u00e1lunk, \u00e9s azt is r\u00f6gz\u00edteni kell, hogyan ker\u00fclt be minden egyes doboz a boltba. \u00cdgy, figyelembe v\u00e9ve az \u00f6sszes mozg\u00e1st, \u00e9vente t\u00f6bb t\u00edzmilli\u00e1rd bejegyz\u00e9sre sz\u00e1m\u00edtunk.<\/p>\n<h3>A csapat M<\/h3>\n<p>\nB\u00e1r a \"Markus\" az X5 keretein bel\u00fcl projektnek sz\u00e1m\u00edt, term\u00e9kmegk\u00f6zel\u00edt\u00e9ssel val\u00f3sul meg. A csapat Scrum m\u00f3dszertant alkalmaz. A projekt kezdete tavaly ny\u00e1ron volt, de az els\u0151 eredm\u00e9nyek csak okt\u00f3berre \u00e9rkeztek meg - teljes m\u00e9rt\u00e9kben \u00f6sszegy\u0171lt a saj\u00e1t csapat, ki\u00e9p\u00fclt a rendszer architekt\u00far\u00e1ja \u00e9s megv\u00e1s\u00e1roltuk a sz\u00fcks\u00e9ges berendez\u00e9seket. Jelenleg a csapat 16 f\u0151b\u0151l \u00e1ll, k\u00f6z\u00fcl\u00fck hatan foglalkoznak backend \u00e9s frontend fejleszt\u00e9ssel, h\u00e1rman pedig rendszerszint\u0171 elemz\u00e9ssel. A manu\u00e1lis, terhel\u00e9si, automatiz\u00e1lt tesztel\u00e9s \u00e9s a term\u00e9k t\u00e1mogat\u00e1sa tov\u00e1bbi hat embert \u00e9rint. Emellett van egy SRE-specialist\u00e1nk. <\/p>\n<p>A csapatunkban nemcsak a fejleszt\u0151k programoznak, szinte mindenki tud programozni, \u00edr automatikus teszteket, terhel\u00e9si szkripteket \u00e9s automatiz\u00e1l\u00e1si szkripteket. K\u00fcl\u00f6n\u00f6s figyelmet ford\u00edtunk erre, mivel a term\u00e9kt\u00e1mogat\u00e1s is magas szint\u0171 automatiz\u00e1l\u00e1st ig\u00e9nyel. A koll\u00e9g\u00e1knak, akik kor\u00e1bban nem programoztak, mindig pr\u00f3b\u00e1lunk seg\u00edteni \u00e9s ir\u00e1nymutat\u00e1st adni, hogy kisebb feladatokat kapjanak.<\/p>\n<p>A koronav\u00edrus-j\u00e1rv\u00e1ny miatt teljes csapatunkat t\u00e1voli munkav\u00e9gz\u00e9sre \u00e1ll\u00edtottuk \u00e1t, a fejleszt\u00e9s ir\u00e1ny\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges \u00f6sszes eszk\u00f6z \u00e9s a Jira \u00e9s GitLab munkafolyamat-k\u00e9pz\u00e9se lehet\u0151v\u00e9 tette, hogy k\u00f6nnyen \u00e1tmenj\u00fcnk ezen a szakaszon. Az otthoni munka h\u00f3napjai bebizony\u00edtott\u00e1k, hogy a csapat teljes\u00edtm\u00e9nye nem szenvedett csorb\u00e1t, sokak sz\u00e1m\u00e1ra pedig k\u00e9nyelmesebb\u00e9 v\u00e1lt a munkav\u00e9gz\u00e9s, az egyetlen dolog, ami hi\u00e1nyzik, a szem\u00e9lyes interakci\u00f3.<\/p>\n<h3>A csapat tal\u00e1lkoz\u00f3ja a t\u00e1voli munkav\u00e9gz\u00e9s el\u0151tt<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/c1095316fd5e3dcc147b3dd968013152.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tal\u00e1lkoz\u00f3k t\u00e1voli munkav\u00e9gz\u00e9s alatt<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/0c705ebbe28afbecd439c0ce2fcf04cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>A megold\u00e1s technol\u00f3giai stackje<\/h3>\n<p>\nAz X5 standard t\u00e1rol\u00f3ja \u00e9s CI\/CD eszk\u00f6ze a GitLab. Ezt haszn\u00e1ljuk a k\u00f3d t\u00e1rol\u00e1s\u00e1ra, folyamatos tesztel\u00e9s\u00e9re, \u00e9s a teszt- \u00e9s \u00e9les szerverekre val\u00f3 telep\u00edt\u00e9s\u00e9re. Tov\u00e1bb\u00e1 alkalmazzuk a k\u00f3dellen\u0151rz\u00e9s gyakorlat\u00e1t, amikor legal\u00e1bb 2 koll\u00e9g\u00e1nak kell j\u00f3v\u00e1hagynia a fejleszt\u0151 \u00e1ltal v\u00e9gzett m\u00f3dos\u00edt\u00e1sokat. A SonarQube \u00e9s a JaCoCo statikus k\u00f3delemz\u0151k seg\u00edtenek a k\u00f3d tiszt\u00e1n tart\u00e1s\u00e1ban \u00e9s a sz\u00fcks\u00e9ges egys\u00e9gteszt-lefedetts\u00e9g biztos\u00edt\u00e1s\u00e1ban. Minden k\u00f3dv\u00e1ltoztat\u00e1snak k\u00f6telez\u0151en \u00e1t kell mennie ezeken az ellen\u0151rz\u00e9seken. Az \u00f6sszes manu\u00e1lisan v\u00e9grehajtott tesztel\u00e9si forgat\u00f3k\u00f6nyvet k\u00e9s\u0151bb automatiz\u00e1lni kell.<\/p>\n<p>A \"Markus\" \u00fczleti folyamatainak sikeres v\u00e9grehajt\u00e1s\u00e1hoz sz\u00e1mos technol\u00f3giai feladatot kellett megoldanunk, amelyeket sorban fogunk bemutatni. <\/p>\n<p><b>Feladat 1. A rendszer horizont\u00e1lis sk\u00e1l\u00e1zhat\u00f3s\u00e1g\u00e1nak sz\u00fcks\u00e9gess\u00e9ge<\/b><\/p>\n<p>Ezen feladat megold\u00e1s\u00e1ra mikro-szolg\u00e1ltat\u00e1si megk\u00f6zel\u00edt\u00e9st v\u00e1lasztottunk az architekt\u00far\u00e1ban. Ezenk\u00edv\u00fcl nagyon fontos volt meg\u00e9rteni a szolg\u00e1ltat\u00e1sok felel\u0151ss\u00e9gi k\u00f6r\u00e9t. Igyekezt\u00fcnk \u0151ket \u00fczleti m\u0171veletek szerint sz\u00e9tv\u00e1lasztani, figyelembe v\u00e9ve a folyamatok saj\u00e1toss\u00e1gait. P\u00e9ld\u00e1ul a rakt\u00e1rba \u00e9rkez\u00e9s nem gyakori, de nagyon nagy volumen\u0171 m\u0171velet, amely sor\u00e1n maxim\u00e1lisan gyorsan kell megszerezn\u00fcnk az \u00e1llami szab\u00e1lyoz\u00f3t\u00f3l a fogadott \u00e1rucikkek adatait, amelyek egy sz\u00e1ll\u00edtm\u00e1nyn bel\u00fcl el\u00e9rhetik a 600000 darabot, ellen\u0151rizni kell a term\u00e9k rakt\u00e1rba val\u00f3 fogad\u00e1s\u00e1nak enged\u00e9lyezhet\u0151s\u00e9g\u00e9t \u00e9s \u00e1tadni az \u00f6sszes sz\u00fcks\u00e9ges inform\u00e1ci\u00f3t a rakt\u00e1roz\u00e1si automatiz\u00e1l\u00f3 rendszer r\u00e9sz\u00e9re. Ezzel szemben a rakt\u00e1rr\u00f3l val\u00f3 kisz\u00e1ll\u00edt\u00e1s sokkal nagyobb intenzit\u00e1ssal zajlik, de a folyamatban kisebb adatmennyis\u00e9gekkel dolgozik. <\/p>\n<p>Minden szolg\u00e1ltat\u00e1st stateless elv alapj\u00e1n val\u00f3s\u00edtunk meg, \u00e9s m\u00e9g a bels\u0151 m\u0171veleteket is igyeksz\u00fcnk l\u00e9p\u00e9sekre bontani, \u00f6n\u00e1ll\u00f3, \u00fagynevezett self-t\u00e9m\u00e1k haszn\u00e1lat\u00e1val a Kafka rendszer\u00e9n. Ez lehet\u0151v\u00e9 teszi, hogy a mikro-szolg\u00e1ltat\u00e1s \u00fczenetet k\u00fcldj\u00f6n saj\u00e1t mag\u00e1nak, ami seg\u00edt a nagyobb er\u0151forr\u00e1st ig\u00e9nyl\u0151 m\u0171veletek terhel\u00e9s\u00e9nek kiegyens\u00falyoz\u00e1s\u00e1ban \u00e9s egyszer\u0171s\u00edti a term\u00e9k karbantart\u00e1s\u00e1t, de err\u0151l k\u00e9s\u0151bb. <\/p>\n<p>D\u00f6nt\u00f6tt\u00fcnk arr\u00f3l, hogy a k\u00fcls\u0151 rendszerekkel val\u00f3 kapcsolattart\u00f3 modulokat k\u00fcl\u00f6n szolg\u00e1ltat\u00e1sk\u00e9nt val\u00f3s\u00edtunk meg. Ez lehet\u0151v\u00e9 tette a k\u00fcls\u0151 rendszerek gyakran v\u00e1ltoz\u00f3 API-j\u00e1nak probl\u00e9m\u00e1j\u00e1t szinte teljesen f\u00fcggetlen\u00fcl kezelni az \u00fczleti funkci\u00f3kkal rendelkez\u0151 szolg\u00e1ltat\u00e1sokt\u00f3l.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/da1dc58791fa28e89e289528e0fd2550.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMinden mikro-szolg\u00e1ltat\u00e1s az OpenShift klaszterben fut, amely megoldja minden mikro-szolg\u00e1ltat\u00e1s sk\u00e1l\u00e1z\u00e1si probl\u00e9m\u00e1it, \u00e9s lehet\u0151v\u00e9 teszi sz\u00e1munkra, hogy ne haszn\u00e1ljunk k\u00fcls\u0151 Service Discovery eszk\u00f6z\u00f6ket.<\/p>\n<p><b>Feladat 2. A platformon bel\u00fcli szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tti intenz\u00edv adatcsere \u00e9s magas terhel\u00e9s fenntart\u00e1s\u00e1nak sz\u00fcks\u00e9gess\u00e9ge:<\/b> csak a projekt ind\u00edt\u00e1si f\u00e1zis\u00e1ban k\u00f6r\u00fclbel\u00fcl 600 m\u0171veletet hajtunk v\u00e9gre m\u00e1sodpercenk\u00e9nt. Ezt a sz\u00e1mot v\u00e1rhat\u00f3an 5000 m\u0171velet\/m\u00e1sodpercre emelj\u00fck a kereskedelmi objektumok platformunkhoz t\u00f6rt\u00e9n\u0151 csatlakoz\u00e1s\u00e1val.<\/p>\n<p>Ezt a feladatot a Kafka klaszter telep\u00edt\u00e9s\u00e9vel \u00e9s a platform mikroservizjei k\u00f6z\u00f6tti szinkron interakci\u00f3k gyakorlatilag teljes mell\u0151z\u00e9s\u00e9vel oldottuk meg. Ez nagyon alapos elemz\u00e9st ig\u00e9nyel a rendszer k\u00f6vetelm\u00e9nyeir\u0151l, mivel nem minden m\u0171velet lehet aszinkron. Emellett nem csup\u00e1n esem\u00e9nyeket tov\u00e1bb\u00edtunk a br\u00f3ker-en kereszt\u00fcl, hanem az \u00f6sszes sz\u00fcks\u00e9ges \u00fczleti inform\u00e1ci\u00f3t is tov\u00e1bb\u00edtunk az \u00fczenetben. \u00cdgy az \u00fczenet m\u00e9rete ak\u00e1r t\u00f6bb sz\u00e1z kilob\u00e1tra is n\u0151het. A Kafka \u00fczenetm\u00e9ret\u00e9re vonatkoz\u00f3 korl\u00e1toz\u00e1sok pontos el\u0151rejelz\u00e9st k\u00f6vetelnek meg az \u00fczenetek m\u00e9ret\u00e9r\u0151l, \u00e9s sz\u00fcks\u00e9g eset\u00e9n felosztjuk \u0151ket, de ez a feloszt\u00e1s logikai, amely az \u00fczleti m\u0171veletekhez kapcsol\u00f3dik. <br \/>\nP\u00e9ld\u00e1ul, a g\u00e9pj\u00e1rm\u0171vel \u00e9rkezett term\u00e9ket l\u00e1d\u00e1kra bontjuk. A szinkron m\u0171veletekhez k\u00fcl\u00f6n mikroservizeket \u00e1ll\u00edtunk fel, \u00e9s alapos terhel\u00e9ses tesztel\u00e9st v\u00e9gz\u00fcnk. A Kafka haszn\u00e1lata egy \u00faj kih\u00edv\u00e1st jelentett sz\u00e1munkra \u2014 a Kafka integr\u00e1ci\u00f3 figyelembev\u00e9tel\u00e9vel a szolg\u00e1ltat\u00e1sunk m\u0171k\u00f6d\u00e9s\u00e9nek ellen\u0151rz\u00e9se minden unit teszt\u00fcnket aszinkronn\u00e1 tette. Ezt a feladatot saj\u00e1t hasznos seg\u00e9dfunkci\u00f3k \u00edr\u00e1s\u00e1val oldottuk meg Embedded Kafka Broker haszn\u00e1lat\u00e1val. Ez nem z\u00e1rja ki az egyes met\u00f3dusokra vonatkoz\u00f3 unit tesztel\u00e9s sz\u00fcks\u00e9gess\u00e9g\u00e9t, de a bonyolult eseteket sz\u00edvesebben tesztelj\u00fck Kafka haszn\u00e1lat\u00e1val.<\/p>\n<p>Nagyon sok figyelmet ford\u00edtottunk a napl\u00f3z\u00e1s k\u00f6vet\u00e9s\u00e9re, hogy a TraceId ne vesszen el, amikor kiv\u00e9telek mer\u00fclnek fel a szolg\u00e1ltat\u00e1sok m\u0171k\u00f6d\u00e9se sor\u00e1n, vagy a Kafka batch haszn\u00e1latakor. Az els\u0151 esetben nem mer\u00fclt fel k\u00fcl\u00f6n\u00f6sebb k\u00e9rd\u00e9s, de a m\u00e1sodik esetben k\u00e9nytelenek voltunk napl\u00f3zni az \u00f6sszes TraceId-t, amellyel a batch \u00e9rkezett, \u00e9s v\u00e1lasztani egyet a k\u00f6vet\u00e9s folytat\u00e1s\u00e1hoz. \u00cdgy ha az eredeti TraceId alapj\u00e1n keres\u00fcnk, a felhaszn\u00e1l\u00f3 k\u00f6nnyen megtal\u00e1lja, hogy mivel folytat\u00f3dott a k\u00f6vet\u00e9s.<\/p>\n<p><b>3. feladat. Nagy mennyis\u00e9g\u0171 adat t\u00e1rol\u00e1s\u00e1nak sz\u00fcks\u00e9gess\u00e9ge: <\/b> \u00e9vente t\u00f6bb mint 1 milli\u00e1rd c\u00edmk\u00e9t hoz be az X5, csak a doh\u00e1nyra vonatkoz\u00f3an. Ezekhez folyamatos \u00e9s gyors hozz\u00e1f\u00e9r\u00e9s sz\u00fcks\u00e9ges. A rendszernek k\u00f6r\u00fclbel\u00fcl 10 milli\u00e1rd bejegyz\u00e9st kell kezelnie a c\u00edmk\u00e9zett term\u00e9kek adatainak mozg\u00e1s\u00e1r\u00f3l.<\/p>\n<p>A harmadik feladat megold\u00e1s\u00e1ra a MongoDB NoSQL adatb\u00e1zist v\u00e1lasztottuk. 5 nodb\u00f3l \u00e1ll\u00f3 shardingot \u00e9p\u00edtett\u00fcnk ki, \u00e9s minden nodban 3 szerverb\u0151l \u00e1ll\u00f3 Replica Set tal\u00e1lhat\u00f3. Ez lehet\u0151v\u00e9 teszi a rendszer horizont\u00e1lis sk\u00e1l\u00e1z\u00e1s\u00e1t, \u00faj <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/server\/\"   title=\"\u00faj szervereket\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"781\">\u00faj szervereket<\/a> a klaszterbe, \u00e9s biztos\u00edtania kell annak hibamentess\u00e9g\u00e9t. Itt egy m\u00e1sik probl\u00e9m\u00e1val szembes\u00fclt\u00fcnk \u2014 a tranzakcionalit\u00e1s biztos\u00edt\u00e1sa a mongo klaszterben, figyelembe v\u00e9ve a v\u00edzszintesen sk\u00e1l\u00e1zhat\u00f3 mikroszolg\u00e1ltat\u00e1sok haszn\u00e1lat\u00e1t. P\u00e9ld\u00e1ul a rendszer\u00fcnk egyik feladata, hogy felfedje a term\u00e9kek aj\u00e1nlott k\u00f3d\u00fa t\u00f6bbsz\u00f6r\u00f6s \u00e9rt\u00e9kes\u00edt\u00e9si k\u00eds\u00e9rleteit. Itt probl\u00e9m\u00e1k l\u00e9pnek fel a hib\u00e1s beolvas\u00e1sokkal vagy a p\u00e9nzt\u00e1rosok hib\u00e1s m\u0171veleteivel. Felfedezt\u00fck, hogy az ilyen duplik\u00e1ci\u00f3k egyetlen, feldolgozott Kafka batchen bel\u00fcl, valamint k\u00e9t p\u00e1rhuzamosan feldolgozott batchen is el\u0151fordulhatnak. \u00cdgy a duplik\u00e1ci\u00f3k \u00e9szlel\u00e9se az adatb\u00e1zis lek\u00e9rdez\u00e9s\u00e9vel nem hozott eredm\u00e9nyt. Minden egyes mikroszolg\u00e1ltat\u00e1sn\u00e1l k\u00fcl\u00f6n-k\u00fcl\u00f6n oldottuk meg a probl\u00e9m\u00e1t, figyelembe v\u00e9ve az adott szolg\u00e1ltat\u00e1s \u00fczleti logik\u00e1j\u00e1t. P\u00e9ld\u00e1ul a blokk m\u00e9r\u00e9sekhez bels\u0151 batch ellen\u0151rz\u00e9st \u00e9s k\u00fcl\u00f6n feldolgoz\u00e1st adtunk a duplik\u00e1tumok el\u0151fordul\u00e1s\u00e1ra a besz\u00far\u00e1s sor\u00e1n. <\/p>\n<p>Annak \u00e9rdek\u00e9ben, hogy a felhaszn\u00e1l\u00f3k m\u0171veleteik t\u00f6rt\u00e9net\u00e9vel val\u00f3 munk\u00e1ja ne befoly\u00e1solja a legfontosabbat \u2014 \u00fczleti folyamataik m\u0171k\u00f6d\u00e9s\u00e9t, minden t\u00f6rt\u00e9neti adatot egy k\u00fcl\u00f6n szolg\u00e1ltat\u00e1sba emelt\u00fcnk egy k\u00fcl\u00f6n adatb\u00e1zissal, amely szint\u00e9n kafka-n kereszt\u00fcl kap inform\u00e1ci\u00f3t. \u00cdgy a felhaszn\u00e1l\u00f3k egy elszigetelt szolg\u00e1ltat\u00e1ssal dolgoznak, amely nem befoly\u00e1solja a jelenlegi m\u0171veletek adatait feldolgoz\u00f3 szolg\u00e1ltat\u00e1sokat.<\/p>\n<p><b>Feladat 4. Ism\u00e9telt feldolgoz\u00e1s a sorokban \u00e9s monitoroz\u00e1s:<\/b><\/p>\n<p>A megosztott rendszerekben elker\u00fclhetetlen, hogy probl\u00e9m\u00e1k \u00e9s adatb\u00e1zisok, sorok, k\u00fcls\u0151 adatforr\u00e1sok hib\u00e1i mer\u00fcljenek fel. A \"Markus\" eset\u00e9ben ezeknek a hib\u00e1knak a forr\u00e1sa a k\u00fcls\u0151 rendszerekkel val\u00f3 integr\u00e1ci\u00f3. Olyan megold\u00e1st kellett tal\u00e1lni, amely lehet\u0151v\u00e9 teszi a hib\u00e1s v\u00e1laszok ism\u00e9telt lek\u00e9rdez\u00e9s\u00e9t valamilyen meghat\u00e1rozott id\u0151korl\u00e1ttal, de e k\u00f6zben nem \u00e1ll\u00edtja le a sikeres lek\u00e9rdez\u00e9sek feldolgoz\u00e1s\u00e1t a f\u0151 sorban. Ehhez v\u00e1lasztott\u00e1k az \u00fagynevezett 't\u00e9mak\u00f6zpont\u00fa \u00fajrapr\u00f3b\u00e1lkoz\u00e1s' koncepci\u00f3t. Minden f\u0151 t\u00e9m\u00e1hoz egy vagy t\u00f6bb \u00fajrapr\u00f3b\u00e1lkoz\u00e1si t\u00e9ma j\u00f6n l\u00e9tre, ahov\u00e1 a hib\u00e1s \u00fczeneteket ir\u00e1ny\u00edtj\u00e1k, \u00e9s \u00edgy megsz\u00fcntetik a k\u00e9sleked\u00e9st a f\u0151 t\u00e9ma \u00fczeneteinek feldolgoz\u00e1sa sor\u00e1n. Az egy\u00fcttm\u0171k\u00f6d\u00e9s s\u00e9ma \u2014 <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/922b3107d183312312713c213488fbe1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEgy ilyen rendszer megval\u00f3s\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9g\u00fcnk volt a k\u00f6vetkez\u0151kre \u2013 integr\u00e1lni ezt a megold\u00e1st a Spring-el \u00e9s elker\u00fclni a k\u00f3d duplik\u00e1ci\u00f3t. Az interneten r\u00e1bukkantunk egy hasonl\u00f3 megold\u00e1sra, amely a Spring BeanPostProcessor-ra alapult, de t\u00fals\u00e1gosan bonyolultnak t\u0171nt sz\u00e1munkra. Csapatunk egy egyszer\u0171bb megold\u00e1st k\u00e9sz\u00edtett, amely lehet\u0151v\u00e9 teszi a Spring fogyaszt\u00f3 l\u00e9trehoz\u00e1si ciklus\u00e1ba val\u00f3 be\u00e9p\u00fcl\u00e9st, valamint tov\u00e1bbi Retry fogyaszt\u00f3k hozz\u00e1ad\u00e1s\u00e1t. A megold\u00e1sunk protot\u00edpus\u00e1t bemutattuk a Spring csapat\u00e1nak, amit meg lehet n\u00e9zni. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/issues\/1229\">itt<\/a><\/noindex>. A Retry fogyaszt\u00f3k sz\u00e1ma \u00e9s az egyes fogyaszt\u00f3k k\u00eds\u00e9rleteinek sz\u00e1ma param\u00e9tereken kereszt\u00fcl \u00e1ll\u00edthat\u00f3 be, a \u00fczleti folyamat ig\u00e9nyei szerint, \u00e9s hogy minden m\u0171k\u00f6dj\u00f6n, mind\u00f6ssze annyit kell tenn\u00fcnk, hogy elhelyezz\u00fck a j\u00f3l ismert org.springframework.kafka.annotation.KafkaListener annot\u00e1ci\u00f3t a Spring-fejleszt\u0151k sz\u00e1m\u00e1ra.<\/p>\n<p>Abban az esetben, ha az \u00fczenetet nem siker\u00fclt feldolgozni minden retry pr\u00f3b\u00e1lkoz\u00e1s ut\u00e1n, a DLT-be (dead letter topic) ker\u00fcl a Spring DeadLetterPublishingRecoverer seg\u00edts\u00e9g\u00e9vel. A t\u00e1mogat\u00e1s k\u00e9r\u00e9s\u00e9re ezt a funkci\u00f3t kiterjesztett\u00fck, \u00e9s k\u00fcl\u00f6n szolg\u00e1ltat\u00e1st hoztunk l\u00e9tre, amely lehet\u0151v\u00e9 teszi a DLT-be ker\u00fclt \u00fczenetek, stackTrace, traceId \u00e9s m\u00e1s hasznos inform\u00e1ci\u00f3k megtekint\u00e9s\u00e9t. Ezen k\u00edv\u00fcl monitoroz\u00e1sokat \u00e9s riaszt\u00e1sokat is hozz\u00e1adtunk az \u00f6sszes DLT t\u00e9m\u00e1hoz, \u00e9s mostant\u00f3l az \u00fczenet megjelen\u00e9se a DLT t\u00e9m\u00e1ban alkalmat ad a vizsg\u00e1latra \u00e9s a hiba bejegyz\u00e9s\u00e9re. Ez nagyon k\u00e9nyelmes \u2013 a t\u00e9ma neve alapj\u00e1n azonnal tudjuk, hogy a folyamat mely l\u00e9p\u00e9s\u00e9n mer\u00fclt fel a probl\u00e9ma, ami jelent\u0151sen felgyors\u00edtja a gy\u00f6k\u00e9rok keres\u00e9s\u00e9t.<\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/ba1110bf1c93249c73dd76c490f1d7aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNemr\u00e9giben megval\u00f3s\u00edtottunk egy fel\u00fcletet, amely lehet\u0151v\u00e9 teszi az \u00fczenetek \u00fajrak\u00fcld\u00e9s\u00e9t a t\u00e1mogat\u00e1sunk seg\u00edts\u00e9g\u00e9vel, miut\u00e1n elh\u00e1r\u00edtott\u00e1k az okokat (p\u00e9ld\u00e1ul egy k\u00fcls\u0151 rendszer m\u0171k\u00f6d\u00e9s\u00e9nek helyre\u00e1ll\u00edt\u00e1sa) \u00e9s term\u00e9szetesen a megfelel\u0151 hiba bejegyz\u00e9se az elemz\u00e9shez. Itt j\u00f6ttek j\u00f3l a self-t\u00e9m\u00e1ink, hogy ne kelljen \u00fajraind\u00edtani a hossz\u00fa feldolgoz\u00e1si l\u00e1ncot, lehet\u0151s\u00e9g van \u00fajraind\u00edtani azt a megfelel\u0151 l\u00e9p\u00e9st\u0151l. <\/p>\n<p><img decoding=\"async\" alt=\"\u201eWalking in my shoes\u201d \u2013 \u00e1llj, \u00e9s ezek c\u00edmk\u00e9zettek?\" src=\"\/wp-content\/uploads\/2020\/07\/78c7831131808732b74b27f055b60d54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>A platform \u00fczemeltet\u00e9se<\/h3>\n<p>\nA platform m\u00e1r produkt\u00edv haszn\u00e1latban van, minden nap sz\u00e1ll\u00edt\u00e1sokat v\u00e9gz\u00fcnk, \u00faj eloszt\u00f3k\u00f6zpontokat \u00e9s \u00fczleteket csatlakoztatunk. A pilot keretein bel\u00fcl a rendszer a \"Doh\u00e1ny\" \u00e9s a \"L\u00e1bbelik\" term\u00e9kcsoportokkal m\u0171k\u00f6dik. <\/p>\n<p>Csapatunk minden tagja r\u00e9szt vesz a pilotok lebonyol\u00edt\u00e1s\u00e1ban, elemzi a felmer\u00fcl\u0151 probl\u00e9m\u00e1kat \u00e9s javaslatokat tesz a term\u00e9k\u00fcnk fejleszt\u00e9s\u00e9re, a napl\u00f3k jav\u00edt\u00e1s\u00e1t\u00f3l kezdve a folyamatok megv\u00e1ltoztat\u00e1s\u00e1ig. <\/p>\n<p>Annak \u00e9rdek\u00e9ben, hogy elker\u00fclj\u00fck a kor\u00e1bbi hib\u00e1inkat, minden pil\u00f3ta sor\u00e1n tal\u00e1lt esetet automatikus tesztekben t\u00fckr\u00f6z\u00fcnk. A sok automatikus \u00e9s egys\u00e9gteszt lehet\u0151v\u00e9 teszi a regresszi\u00f3s tesztel\u00e9st \u00e9s a hotfixek telep\u00edt\u00e9s\u00e9t sz\u00f3 szerint n\u00e9h\u00e1ny \u00f3r\u00e1n bel\u00fcl.<\/p>\n<p>Jelenleg tov\u00e1bbfejlesztj\u00fck \u00e9s t\u00f6k\u00e9letes\u00edtj\u00fck a platformunkat, \u00e9s folyamatosan \u00faj kih\u00edv\u00e1sokkal szembes\u00fcl\u00fcnk. Ha \u00e9rdekli, sz\u00edvesen mes\u00e9l\u00fcnk a megold\u00e1sainkr\u00f3l a k\u00f6vetkez\u0151 cikkekben.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\u201d \u2014 \u00e1llj, de azok c\u00edmk\u00e9zettek?","description":"2019 \u00f3ta Oroszorsz\u00e1gban hat\u00e1lyban van a k\u00f6telez\u0151 c\u00edmk\u00e9z\u00e9sr\u0151l sz\u00f3l\u00f3 t\u00f6rv\u00e9ny. A t\u00f6rv\u00e9ny nem vonatkozik minden term\u00e9kcsoportban, \u00e9s a k\u00f6telez\u0151 c\u00edmk\u00e9z\u00e9s hat\u00e1lybal\u00e9p\u00e9si hat\u00e1ridejei elt\u00e9r\u0151ek.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/walking-in-my-shoes-stop-a-oni-markirovannye","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/87372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=87372"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/87372\/revisions"}],"predecessor-version":[{"id":157972,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/87372\/revisions\/157972"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/87373"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=87372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=87372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=87372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}