{"id":92806,"date":"2020-08-31T07:42:03","date_gmt":"2020-08-31T05:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita"},"modified":"2020-08-31T07:42:03","modified_gmt":"2020-08-31T05:42:03","slug":"kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","title":{"rendered":"Hogyan hagyjuk abba az agg\u00f3d\u00e1st \u00e9s kezdj\u00fck el az \u00e9letet monolit n\u00e9lk\u00fcl","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hogyan hagyjuk abba az agg\u00f3d\u00e1st \u00e9s kezdj\u00fck el az \u00e9letet monolit n\u00e9lk\u00fcl\" src=\"\/wp-content\/uploads\/2020\/08\/eb6ab7fd08eeebd8cdad89b0e4e6588e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMindannyiunk kedvelj\u00fck a t\u00f6rt\u00e9neteket. Szeretj\u00fck, ha a t\u0171z mellett \u00fclve mes\u00e9lhet\u00fcnk kor\u00e1bbi gy\u0151zelmeinkr\u0151l, harcainkr\u00f3l vagy egyszer\u0171en arr\u00f3l, hogy milyen tapasztalataink voltak.<\/p>\n<p>Ma pont egy ilyen nap van. \u00c9s b\u00e1r lehet, hogy nem a t\u0171z mellett \u00fcl, de van egy t\u00f6rt\u00e9net\u00fcnk az \u00d6n sz\u00e1m\u00e1ra. Azt a t\u00f6rt\u00e9netet szeretn\u00e9nk elmes\u00e9lni, hogy hogyan kezdt\u00fcnk el dolgozni a Tarantool t\u00e1rol\u00f3j\u00e1val.<\/p>\n<p>Valaha a c\u00e9g\u00fcnkn\u00e9l volt n\u00e9h\u00e1ny \"monolit\" \u00e9s egy k\u00f6z\u00f6s \"mennyezet\", amelyhez ezek a monolitok lassan, de biztosan k\u00f6zeledtek, korl\u00e1tozva a c\u00e9g\u00fcnk fejl\u0151d\u00e9s\u00e9t. Egy\u00e9rtelm\u0171en tudtuk, hogy egyszer kem\u00e9nyen bele\u00fctk\u00f6z\u00fcnk ebbe a mennyezetbe.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMa m\u00e1r az a vez\u00e9relv\u00fcnk, hogy mindent \u00e9s mindenkit sz\u00e9tv\u00e1lasztunk, kezdve a hardvert\u0151l eg\u00e9szen az \u00fczleti logik\u00e1ig. Ennek eredm\u00e9nyek\u00e9nt p\u00e9ld\u00e1ul van k\u00e9t DC-nk, amelyek gyakorlatilag f\u00fcggetlenek h\u00e1l\u00f3zati szinten. Akkor viszont minden nagyon m\u00e1s volt.<\/p>\n<p>Ma m\u00e1r rengeteg eszk\u00f6z \u00e9s megold\u00e1s \u00e1ll rendelkez\u00e9s\u00fcnkre a v\u00e1ltoztat\u00e1sokhoz, mint p\u00e9ld\u00e1ul CI\/CD, K8S \u00e9s hasonl\u00f3k. A \"monolitikus\" id\u0151szakban viszont nem volt sz\u00fcks\u00e9g\u00fcnk ennyi idegen sz\u00f3ra. El\u00e9g volt egyszer\u0171en megjav\u00edtani a \"t\u00e1rol\u00f3t\" az adatb\u00e1zisban.<\/p>\n<p>De az id\u0151 telt, \u00e9s a k\u00e9r\u00e9sek sz\u00e1ma is egy\u00fctt haladt, olykor a RPS-t a kapacit\u00e1sunk felett l\u0151ve ki. Amikor megjelen\u00fcnk a K\u00f6z\u00e9p-\u00c1zsiai piacon, az els\u0151 monolit adatb\u00e1zis\u00e1nak terhel\u00e9se sosem esett 90% al\u00e1, a RPS szinten 2400-on tart\u00f3zkodott. Ezek nem csup\u00e1n apr\u00f3 lek\u00e9rdez\u00e9sek voltak, hanem hatalmas k\u00e9r\u00e9sek sok ellen\u0151rz\u00e9ssel \u00e9s JOIN-nal, amelyek szinte az adatok fel\u00e9n v\u00e9gigfutottak a nagy IO mellett.<\/p>\n<p>Amikor azonban megjelentek a komoly akci\u00f3k a \"Fekete p\u00e9nteken\" \u2014 \u00e9s a Wildberries kezdte el az els\u0151kk\u00e9nt Oroszorsz\u00e1gban \u2014 a helyzet igaz\u00e1n szomor\u00fara fordult. Mert ilyenkor a terhel\u00e9s h\u00e1romszoros\u00e1ra n\u0151.<br \/>\n\u00d3, ezek a \"monolitikus id\u0151k\"! Biztos vagyok benne, hogy \u00d6n is tal\u00e1lkozott hasonl\u00f3val, \u00e9s m\u00e9g mindig nem \u00e9rti, hogyan t\u00f6rt\u00e9nhetett meg ez \u00d6nnel.<\/p>\n<p>Mit lehet tenni \u2014 a trendek a technol\u00f3gi\u00e1kra is jellemz\u0151ek. M\u00e9g \u00f6t \u00e9vvel ezel\u0151tt \u00fajragondoltuk az egyik ilyen trendet, amely egy .NET \u00e9s MS SQL szerver alap\u00fa weboldal volt, amely gondosan \u0151rizte az oldal m\u0171k\u00f6d\u00e9s\u00e9nek logik\u00e1j\u00e1t. Annyira gondosan \u0151rizte, hogy egy ilyen monolithot sz\u00e9tszedni hossz\u00fa \u00e9s meglehet\u0151sen neh\u00e9z mulats\u00e1g volt.<br \/>\nEgy kis kit\u00e9r\u0151. <\/p>\n<p>K\u00fcl\u00f6nf\u00e9le esem\u00e9nyeken azt szoktam mondani: \u201eha nem v\u00e1gtad fel a monolitot, akkor nem n\u0151tt\u00e9l!\u201d K\u00edv\u00e1ncsi vagyok a v\u00e9lem\u00e9nyedre ezzel kapcsolatban, k\u00e9rlek, \u00edrd meg a megjegyz\u00e9sekben.<\/p>\n<h3>Megd\u00f6rrent az \u00e9g.<\/h3>\n<p>\nT\u00e9rj\u00fcnk vissza a \u201et\u00fczel\u0151nkh\u00f6z\u201d. Az \u201eegys\u00e9ges\u201d funkci\u00f3k terhel\u00e9s\u00e9nek eloszt\u00e1s\u00e1ra \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy a rendszert ny\u00edlt forr\u00e1sk\u00f3d\u00fa technol\u00f3gi\u00e1kra alapozva mikroszolg\u00e1ltat\u00e1sokra bontjuk. Mert legal\u00e1bbis a sk\u00e1l\u00e1zhat\u00f3s\u00e1guk olcs\u00f3bb. \u00c9s tudtuk, hogy sk\u00e1l\u00e1zni fogunk (\u00e9s nem is keveset) 100%-ban. M\u00e1r akkorra siker\u00fclt piacra l\u00e9pn\u00fcnk a szomsz\u00e9dos orsz\u00e1gokban, \u00e9s a regisztr\u00e1ci\u00f3k sz\u00e1ma, valamint a rendel\u00e9sek mennyis\u00e9ge m\u00e9g ink\u00e1bb n\u00f6vekedni kezdett.<\/p>\n<p>Az els\u0151 jel\u00f6lteket elemezve, akik a monolitb\u00f3l a mikroszolg\u00e1ltat\u00e1sokba t\u00e1voznak, r\u00e1j\u00f6tt\u00fcnk, hogy az \u00edr\u00e1s 80%-a 99%-ban a back office rendszerekb\u0151l t\u00f6rt\u00e9nik, m\u00edg az olvas\u00e1s a frontvonalb\u00f3l. Ez el\u0151sz\u00f6r is k\u00e9t fontos alrendszert \u00e9rintett \u2013 a felhaszn\u00e1l\u00f3i adatokat \u00e9s a term\u00e9kek v\u00e9gs\u0151 k\u00f6lts\u00e9g\u00e9nek kalkul\u00e1l\u00e1s\u00e1ra szolg\u00e1l\u00f3 rendszert, amely a kieg\u00e9sz\u00edt\u0151 \u00fcgyf\u00e9lkedvezm\u00e9nyek \u00e9s kuponok inform\u00e1ci\u00f3in alapul.<\/p>\n<p>Mell\u00e9kes megjegyz\u00e9sk\u00e9nt. Jelenleg f\u00e9lelmetes elk\u00e9pzelni, de a fent eml\u00edtett alrendszerek mellett a monolitunkb\u00f3l kiemel\u00e9sre ker\u00fclt a term\u00e9kkatal\u00f3gus, a felhaszn\u00e1l\u00f3i kos\u00e1r, a term\u00e9kek keres\u0151 rendszere, a term\u00e9kkatal\u00f3gusok sz\u0171r\u0151 rendszere \u00e9s k\u00fcl\u00f6nf\u00e9le aj\u00e1nl\u00f3rendszerek is. Mindegyik\u00fckh\u00f6z k\u00fcl\u00f6n oszt\u00e1lyokkal ell\u00e1tott, sz\u0171k ter\u00fclet\u0171 rendszerek l\u00e9teztek, de r\u00e9gen mindannyian egy \u201ekuck\u00f3ban\u201d \u00e9ltek. <\/p>\n<p>Az \u00fcgyfeleink adatait egy sharding rendszerbe tervezt\u00fck \u00e1tkonvert\u00e1lni. A term\u00e9kek v\u00e9gs\u0151 k\u00f6lts\u00e9g\u00e9nek kalkul\u00e1l\u00e1sa azonban j\u00f3 sk\u00e1l\u00e1zhat\u00f3s\u00e1got ig\u00e9nyelt az olvas\u00e1s ter\u00e9n, mivel ez okozta a legnagyobb terhel\u00e9st az RPS szempontj\u00e1b\u00f3l, \u00e9s a legnehezebb volt a v\u00e9grehajt\u00e1sra a b\u00e1zis sz\u00e1m\u00e1ra (nagyon sok adat volt \u00e9rintve a sz\u00e1m\u00edt\u00e1sok sor\u00e1n). <\/p>\n<p>Ennek k\u00f6vetkezt\u00e9ben sz\u00fcletett meg egy rendszer, amely j\u00f3l illeszkedik a Tarantoolhoz.<\/p>\n<p>Abban az id\u0151ben a mikroszolg\u00e1ltat\u00e1sok m\u0171k\u00f6dtet\u00e9s\u00e9re a virtu\u00e1lis \u00e9s hardveres g\u00e9pekkel rendelkez\u0151 t\u00f6bb adatk\u00f6zponttal val\u00f3 egy\u00fcttm\u0171k\u00f6d\u00e9st v\u00e1lasztottuk. Ahogy a k\u00e9peken is l\u00e1that\u00f3, a Tarantool replik\u00e1ci\u00f3s v\u00e1ltozatait alkalmaztuk master-master \u00e9s master-slave m\u00f3dokban. <\/p>\n<p><img decoding=\"async\" alt=\"Hogyan hagyjuk abba az agg\u00f3d\u00e1st \u00e9s kezdj\u00fck el az \u00e9letet monolit n\u00e9lk\u00fcl\" src=\"\/wp-content\/uploads\/2020\/08\/b7bf3d6646ec9f6a8f8af3a539adede1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architekt\u00fara. 1. lehet\u0151s\u00e9g. Felhaszn\u00e1l\u00f3i szolg\u00e1ltat\u00e1s.<\/i><\/p>\n<p>Jelenleg 24 shard l\u00e9tezik, mindegyikben 2 instance tal\u00e1lhat\u00f3 (egy a minden adatk\u00f6zpont sz\u00e1m\u00e1ra), mindegyik master-master m\u00f3dban m\u0171k\u00f6dik.<\/p>\n<p>Az adatb\u00e1zisok felett olyan alkalmaz\u00e1sok tal\u00e1lhat\u00f3k, amelyek a db replik\u00e1khoz fordulnak. Az alkalmaz\u00e1sok a Tarantool-lal m\u0171k\u00f6dnek a saj\u00e1t k\u00f6nyvt\u00e1runkon kereszt\u00fcl, amely megval\u00f3s\u00edtja a Go Tarantool illeszt\u0151program interf\u00e9szt. L\u00e1tja az \u00f6sszes replik\u00e1t, \u00e9s k\u00e9pes a mesterhez olvas\u00e1sra \u00e9s \u00edr\u00e1sra is csatlakozni. Gyakorlatilag a replikak\u00e9szlet modellt val\u00f3s\u00edtja meg, amelybe be\u00e9p\u00edtett\u00e9k a replik\u00e1k kiv\u00e1laszt\u00e1s\u00e1nak, az \u00fajrapr\u00f3b\u00e1lkoz\u00e1snak, a megszak\u00edt\u00f3 \u00e9s a sebess\u00e9gkorl\u00e1toz\u00e1s logik\u00e1j\u00e1t is.<\/p>\n<p>Lehet\u0151s\u00e9g van a replikav\u00e1laszt\u00e1si politika konfigur\u00e1l\u00e1s\u00e1ra a shardok szempontj\u00e1b\u00f3l is. P\u00e9ld\u00e1ul, round-robin m\u00f3dszerrel.<\/p>\n<p><img decoding=\"async\" alt=\"Hogyan hagyjuk abba az agg\u00f3d\u00e1st \u00e9s kezdj\u00fck el az \u00e9letet monolit n\u00e9lk\u00fcl\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architekt\u00fara. 2. v\u00e1ltozat. A term\u00e9k v\u00e9gs\u0151 \u00e1r\u00e1nak kisz\u00e1m\u00edt\u00e1si szolg\u00e1ltat\u00e1sa<\/i><\/p>\n<p>N\u00e9h\u00e1ny h\u00f3nappal ezel\u0151tt a term\u00e9kek v\u00e9gs\u0151 \u00e1r\u00e1nak kisz\u00e1m\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges k\u00e9r\u00e9sek nagy r\u00e9sze egy \u00faj szolg\u00e1ltat\u00e1sra ker\u00fclt \u00e1t, amely tulajdonk\u00e9ppen adatb\u00e1zisok n\u00e9lk\u00fcl m\u0171k\u00f6dik, de egy id\u0151ben a Tarantool-t haszn\u00e1l\u00f3 szolg\u00e1ltat\u00e1s kezelte az \u00f6sszes 100%-ot.<\/p>\n<p>A szolg\u00e1ltat\u00e1s adatb\u00e1zisa n\u00e9gy mesterb\u0151l \u00e1ll, amelyekben a szinkroniz\u00e1l\u00f3 gy\u0171jti az adatokat, \u00e9s ezek a mesterek replik\u00e1ci\u00f3 r\u00e9v\u00e9n osztj\u00e1k el az adatokat a readonly replik\u00e1knak. Minden mesterhez k\u00f6r\u00fclbel\u00fcl 15 ilyen replika tartozik.<\/p>\n<p>Mind a els\u0151, mind a m\u00e1sodik s\u00e9ma eset\u00e9ben, ha egy adatk\u00f6zpont nem el\u00e9rhet\u0151, az alkalmaz\u00e1s a m\u00e1sodikb\u00f3l kaphat adatokat.<\/p>\n<p>Meg kell jegyezni, hogy a Tarantool replik\u00e1ci\u00f3ja meglehet\u0151sen rugalmas \u00e9s runtime-ban konfigur\u00e1lhat\u00f3. M\u00e1s rendszerekben kor\u00e1bban neh\u00e9zs\u00e9gek ad\u00f3dtak. P\u00e9ld\u00e1ul a PostgreSQL max_wal_senders \u00e9s max_replication_slots param\u00e9terek m\u00f3dos\u00edt\u00e1s\u00e1hoz a mestert \u00fajra kell ind\u00edtani, ami bizonyos esetekben a kapcsolat megszakad\u00e1s\u00e1t okozhatja az alkalmaz\u00e1s \u00e9s az adatb\u00e1zis-kezel\u0151 k\u00f6z\u00f6tt.<\/p>\n<h3>Keresd \u00e9s tal\u00e1lni fogsz!<\/h3>\n<p>\nMi\u00e9rt nem csin\u00e1ltuk \u00fagy, ahogy a norm\u00e1lis emberek, \u00e9s v\u00e1lasztottunk egy szokatlan m\u00f3dszert? Att\u00f3l f\u00fcgg, mit tekint\u00fcnk norm\u00e1lisnak. Sokan egy Mongo klasztert csin\u00e1lnak, \u00e9s sz\u00e9tsz\u00f3rj\u00e1k h\u00e1rom geo-elosztott adatk\u00f6zpont k\u00f6z\u00f6tt.<\/p>\n<p>Abban az id\u0151ben m\u00e1r volt k\u00e9t projekt\u00fcnk Redis alatt. Az egyik egy cache, a m\u00e1sik pedig egy nem t\u00fal kritikus adatokhoz val\u00f3 tart\u00f3s t\u00e1rol\u00f3 volt. Ezzel viszont meglehet\u0151sen neh\u00e9z volt, r\u00e9szben a mi hib\u00e1nkb\u00f3l. N\u00e9ha el\u00e9g nagy mennyis\u00e9gek halmoz\u00f3dtak fel a kulcsokban, \u00e9s id\u0151nk\u00e9nt az oldalnak rosszul esett. Ezt a rendszert master-slave m\u00f3don haszn\u00e1ltuk. Sz\u00e1mos esetben el\u0151fordult, hogy valami t\u00f6rt\u00e9nt a mesterrel, \u00e9s a replik\u00e1ci\u00f3 megszakadt. <\/p>\n<p>Teh\u00e1t a Redis j\u00f3 a stateless feladatokhoz, nem pedig a stateful-hoz. Alapvet\u0151en megoldotta a legt\u00f6bb feladatot, de csak akkor, ha azok key-value megold\u00e1sok voltak n\u00e9h\u00e1ny indexszel. De a Redis ezen a ponton meglehet\u0151sen gyenge volt a tart\u00f3ss\u00e1g \u00e9s replik\u00e1ci\u00f3 ter\u00e9n. R\u00e1ad\u00e1sul, voltak panaszok a teljes\u00edtm\u00e9ny\u00e9re.<\/p>\n<p>A MySQL \u00e9s a PostgreSQL is sz\u00f3ba ker\u00fclt. De az els\u0151 valahogy nem terjedt el n\u00e1lunk, a m\u00e1sodik pedig \u00f6nmag\u00e1ban egy meglehet\u0151sen bonyolult term\u00e9k, \u00e9s egyszer\u0171 szolg\u00e1ltat\u00e1sok l\u00e9trehoz\u00e1sa rajta nem lenne c\u00e9lszer\u0171.<br \/>\nPr\u00f3b\u00e1ltuk a RIAK-ot, a Cassandr\u00e1t, s\u0151t m\u00e9g grafikus adatb\u00e1zist is. Ezek mind el\u00e9g niche megold\u00e1sok voltak, amelyek nem voltak alkalmasak egy \u00e1ltal\u00e1nos univerz\u00e1lis eszk\u00f6zk\u00e9nt val\u00f3 szolg\u00e1latra szolg\u00e1ltat\u00e1sok l\u00e9trehoz\u00e1s\u00e1hoz.<\/p>\n<p>V\u00e9g\u00fcl a Tarantool mellett d\u00f6nt\u00f6tt\u00fcnk.<\/p>\n<p>Kib\u0151v\u00edtett\u00fck, amikor a 1.6-os verzi\u00f3j\u00e1n\u00e1l j\u00e1rt. Az \u00e9rdekelt minket benne, hogy \u00f6tv\u00f6zi a key-value-t \u00e9s a rel\u00e1ci\u00f3s adatb\u00e1zis funkci\u00f3it. Vannak m\u00e1sodlagos indexek, tranzakci\u00f3k \u00e9s sp\u00e1cok, amelyek olyanok, mint a t\u00e1bl\u00e1zatok, de nem egyszer\u0171ek, k\u00fcl\u00f6nb\u00f6z\u0151 sz\u00e1m\u00fa oszlopot lehet benne t\u00e1rolni. De a Tarantool gyilkos funkci\u00f3ja a key-value-val \u00e9s tranzakcion\u00e1lis jellege kombin\u00e1lva m\u00e1sodlagos indexeik voltak.<\/p>\n<p>Ugyanakkor szerepet j\u00e1tszott a reakci\u00f3s orosz nyelv\u0171 k\u00f6z\u00f6ss\u00e9g, akik k\u00e9szen \u00e1lltak a seg\u00edts\u00e9gny\u00fajt\u00e1sra a chaten. Ezt akt\u00edvan kihaszn\u00e1ltuk, \u00e9s szinte ott \u00e9lt\u00fcnk a chatben. Ne felejts\u00fck el a megfelel\u0151 tart\u00f3ss\u00e1got, hib\u00e1k \u00e9s probl\u00e9m\u00e1k n\u00e9lk\u00fcl. Ha megn\u00e9zz\u00fck a Tarantool-lal kapcsolatos t\u00f6rt\u00e9net\u00fcnket, sok f\u00e1jdalmunk \u00e9s bakl\u00f6v\u00e9seink voltak a replik\u00e1ci\u00f3val, de egyszer sem vesz\u00edtett\u00fcnk adatokat miatta!<\/p>\n<h3>A bevezet\u00e9s nehezen indult.<\/h3>\n<p>\nAbban az id\u0151ben a fejleszt\u00e9si stack\u00fcnk a .NET volt, amelyhez nem volt Tarantool csatlakoz\u00f3. Azonnal elkezdt\u00fcnk valamit csin\u00e1lni Go nyelven. A Lua-val is j\u00f3l ment. A legf\u0151bb probl\u00e9ma az volt, hogy a hibakeres\u00e9s neh\u00e9zkes volt: a .NET-ben ez kiv\u00e1l\u00f3an m\u0171k\u00f6dik, de ut\u00e1na \u00e1tker\u00fclni az embedded Lua vil\u00e1g\u00e1ba, ahol csak napl\u00f3z\u00e1sok vannak, nem egyszer\u0171. R\u00e1ad\u00e1sul a replik\u00e1ci\u00f3 valami\u00e9rt id\u0151nk\u00e9nt \u00f6sszeomlott, bele kellett \u00e1snunk magunkat a Tarantool motor szerkezet\u00e9be. Ebben a chat seg\u00edtett, kisebb m\u00e9rt\u00e9kben \u2014 a dokument\u00e1ci\u00f3, n\u00e9ha olvastuk a k\u00f3dot. Abban az id\u0151ben a dokument\u00e1ci\u00f3 nem volt t\u00fal j\u00f3.<\/p>\n<p>\u00cdgy n\u00e9h\u00e1ny h\u00f3nap alatt siker\u00fclt tapasztalatokat szerezni \u00e9s megfelel\u0151 eredm\u00e9nyeket el\u00e9rni a Tarantool-lal val\u00f3 munka sor\u00e1n. Git-be helyezt\u00fck az etalonszer\u0171 fejleszt\u00e9seket, amelyek seg\u00edtettek \u00faj mikroszolg\u00e1ltat\u00e1sok kialak\u00edt\u00e1s\u00e1ban. P\u00e9ld\u00e1ul, amikor az volt a feladat, hogy egy \u00faj mikroszolg\u00e1ltat\u00e1st k\u00e9sz\u00edts\u00fcnk, a fejleszt\u0151 az etalonszer\u0171 megold\u00e1s forr\u00e1sk\u00f3dj\u00e1t n\u00e9zte a t\u00e1rol\u00f3ban, \u00e9s a \u00faj l\u00e9trehoz\u00e1sa nem tartott tov\u00e1bb egy h\u00e9tn\u00e9l. <\/p>\n<p>Ezek k\u00fcl\u00f6nleges id\u0151k voltak. Akkoriban nyugodtan odamehett\u00e9l a szomsz\u00e9d asztalhoz l\u00e9v\u0151 adminisztr\u00e1torhoz, \u00e9s k\u00e9rhetted: \u201eAdj egy virtu\u00e1lis g\u00e9pet\u201d. Harminc perc m\u00falva m\u00e1r a ti\u00e9d volt a g\u00e9p. Te magad csatlakozt\u00e1l, mindent telep\u00edtett\u00e9l, \u00e9s m\u00e1r indulhatott is a forgalom.<\/p>\n<p>Ma m\u00e1r nem \u00edgy m\u0171k\u00f6dik: meg kell val\u00f3s\u00edtani a szolg\u00e1ltat\u00e1s monitoroz\u00e1s\u00e1t, napl\u00f3z\u00e1s\u00e1t, teszteket kell \u00edrni a funkcionalit\u00e1sra, virtu\u00e1lis g\u00e9pet kell rendelni, vagy csak az \u00faj Kubernetes telep\u00edt\u00e9s\u00e9rt kell agg\u00f3dni, stb. \u00d6sszess\u00e9g\u00e9ben ez jobb lesz, de tov\u00e1bb tart \u00e9s t\u00f6bb vele a macera.<\/p>\n<h3>Osztani \u00e9s uralkodni. Mi a helyzet a Lua-val?<\/h3>\n<p>\nKomoly dilemma mer\u00fclt fel: egyes csapatoknak nem siker\u00fclt megb\u00edzhat\u00f3an kigur\u00edtani a v\u00e1ltoztat\u00e1sokat egy logikailag komplexebb Lua-ba \u00edrt szolg\u00e1ltat\u00e1sban. Gyakran ez a szolg\u00e1ltat\u00e1s m\u0171k\u00f6d\u00e9sk\u00e9ptelens\u00e9g\u00e9vel j\u00e1rt. <\/p>\n<p>Ez\u00e9rt a fejleszt\u0151k k\u00e9sz\u00edtenek valamilyen m\u00f3dos\u00edt\u00e1st. A Tarantool elkezdi a migr\u00e1ci\u00f3t, m\u00edg a replika m\u00e9g a r\u00e9gi k\u00f3dot haszn\u00e1lja; be\u00e9rkezik valamilyen DDL replik\u00e1ci\u00f3 \u00e1ltal, vagy egy\u00e9b valami, \u00e9s a k\u00f3d egyszer\u0171en \u00f6sszeomlik, mert ez nincs figyelembe v\u00e9ve. Ennek eredm\u00e9nyek\u00e9nt az adminisztr\u00e1torok friss\u00edt\u00e9si elj\u00e1r\u00e1sa egy A4-es lapra volt fel\u00edrva: le\u00e1ll\u00edtani a replik\u00e1ci\u00f3t, friss\u00edteni ezt, elind\u00edtani a replik\u00e1ci\u00f3t, le\u00e1ll\u00edtani itt, friss\u00edteni ott. R\u00e9m\u00e1lom! <\/p>\n<p>V\u00e9g\u00fcl mostan\u00e1ban \u00e1ltal\u00e1ban pr\u00f3b\u00e1lunk a Lua-val semmit sem csin\u00e1lni. Egyszer\u0171en az iproto (a szerverrel val\u00f3 kommunik\u00e1ci\u00f3s bin\u00e1ris protokoll) seg\u00edts\u00e9g\u00e9vel dolgozunk, \u00e9s ennyi. Lehets\u00e9ges, hogy ez a fejleszt\u0151k tud\u00e1s\u00e1nak hi\u00e1nya, de ebb\u0151l a szempontb\u00f3l a rendszer bonyolult.<\/p>\n<p>Nem mindig k\u00f6vetj\u00fck vakon ezt a forgat\u00f3k\u00f6nyvet. Ma m\u00e1r nincs fekete \u00e9s feh\u00e9r: vagy minden a Lua, vagy minden a Go. M\u00e1r \u00e9rtj\u00fck, hogyan lehet kombin\u00e1lni, hogy k\u00e9s\u0151bb ne legyen migr\u00e1ci\u00f3s probl\u00e9m\u00e1nk.<\/p>\n<p>Hol tal\u00e1lhat\u00f3 jelenleg a Tarantool?<br \/>\nA Tarantool-t a term\u00e9kek v\u00e9gs\u0151 \u00e1r\u00e1nak kisz\u00e1m\u00edt\u00e1s\u00e1\u00e9rt felel\u0151s szolg\u00e1ltat\u00e1sban haszn\u00e1lj\u00e1k, amely a \u201ePromotizer\u201d. Ahogy m\u00e1r eml\u00edtettem, mostan\u00e1ban h\u00e1tt\u00e9rbe szorul: egy \u00faj katal\u00f3gus szolg\u00e1ltat\u00e1s v\u00e1ltja fel, amely el\u0151re kisz\u00e1molt \u00e1rakat biztos\u00edt, de m\u00e9g f\u00e9l \u00e9vvel ezel\u0151tt minden sz\u00e1m\u00edt\u00e1s a \u201ePromotizer\u201d-ben zajlott. Akkoriban a logika fele Lua nyelven \u00edr\u00f3dott. K\u00e9t \u00e9ve a szolg\u00e1ltat\u00e1st t\u00e1rol\u00f3k\u00e9nt haszn\u00e1lj\u00e1k, \u00e9s a logik\u00e1t Go nyelvre \u00edrt\u00e1k \u00e1t, mivel a kedvezm\u00e9nyek m\u0171k\u00f6d\u00e9s\u00e9nek mechanik\u00e1ja kiss\u00e9 megv\u00e1ltozott, \u00e9s a szolg\u00e1ltat\u00e1s teljes\u00edtm\u00e9nye nem volt elegend\u0151. <\/p>\n<p>Az egyik legkritikusabb szolg\u00e1ltat\u00e1s a felhaszn\u00e1l\u00f3i profil. Ez azt jelenti, hogy a Wildberries \u00f6sszes felhaszn\u00e1l\u00f3j\u00e1t Tarantool-ban t\u00e1rolj\u00e1k, \u00e9s k\u00f6r\u00fclbel\u00fcl 50 milli\u00f3an vannak. Az ID szerint shardingolt rendszer, amely t\u00f6bb adatk\u00f6zpontban van elosztva, Go-szolg\u00e1ltat\u00e1sokkal \u00f6sszek\u00f6tve. <br \/>\nAk\u00e1r 6 ezer lek\u00e9rdez\u00e9st is el\u00e9rte a \u201ePromotizer\u201d RPS (Request Per Second) mindennap, egy pillanatban 50-60 p\u00e9ld\u00e1nyunk volt. Jelenleg a felhaszn\u00e1l\u00f3i profilok jelentik az RPS vezet\u0151j\u00e9t, ami k\u00f6r\u00fclbel\u00fcl 12 ezer. Ebben a szolg\u00e1ltat\u00e1sban egyedi shardingot alkalmaznak, amely a felhaszn\u00e1l\u00f3i ID-k tartom\u00e1nyai alapj\u00e1n van felosztva. A szolg\u00e1ltat\u00e1s t\u00f6bb mint 20 g\u00e9pet szolg\u00e1l ki, de ez t\u00fal sok, tervezz\u00fck cs\u00f6kkenteni az er\u0151forr\u00e1sokat, mert 4-5 g\u00e9p elegend\u0151 lenne.<\/p>\n<p>A session service - ez az els\u0151 szolg\u00e1ltat\u00e1sunk a vshard-on \u00e9s a Cartridge-on. A vshard be\u00e1ll\u00edt\u00e1sa \u00e9s a Cartridge friss\u00edt\u00e9se bizonyos munkaid\u0151t ig\u00e9nyelt, de v\u00e9g\u00fcl minden rendben lett.<\/p>\n<p>A k\u00fcl\u00f6nb\u00f6z\u0151 bannerek megjelen\u00edt\u00e9s\u00e9re szolg\u00e1l\u00f3 szolg\u00e1ltat\u00e1s a weboldalon \u00e9s a mobilalkalmaz\u00e1sban az egyik els\u0151, amelyet k\u00f6zvetlen\u00fcl Tarantool-ra \u00edrtak. Ez a szolg\u00e1ltat\u00e1s figyelemre m\u00e9lt\u00f3, mivel k\u00f6r\u00fclbel\u00fcl 6-7 \u00e9ves, m\u00e9g mindig m\u0171k\u00f6dik, \u00e9s egyszer sem kellett \u00fajraind\u00edtani. Master-master replik\u00e1ci\u00f3t alkalmaztak. Soha nem romlott el semmi.<\/p>\n<p>Van p\u00e9lda a Tarantool haszn\u00e1lat\u00e1ra gyors referencia funkci\u00f3k sz\u00e1m\u00e1ra a rakt\u00e1ri rendszerben, hogy sz\u00fcks\u00e9g eset\u00e9n gyorsan ellen\u0151rizhess\u00fck az inform\u00e1ci\u00f3kat. Pr\u00f3b\u00e1ltuk kipr\u00f3b\u00e1lni a Redis-t erre a c\u00e9lra, de az adatok a mem\u00f3ri\u00e1ban t\u00f6bb helyet foglaltak el, mint a Tarantool.<\/p>\n<p>A v\u00e1r\u00f3list\u00e1s szolg\u00e1ltat\u00e1sok, a kliens el\u0151fizet\u00e9sek, a manaps\u00e1g divatos t\u00f6rt\u00e9netek \u00e9s a k\u00e9sleltetett term\u00e9kek szint\u00e9n Tarantool-lal m\u0171k\u00f6dnek. Az utols\u00f3 szolg\u00e1ltat\u00e1s a mem\u00f3ri\u00e1ban k\u00f6r\u00fclbel\u00fcl 120 GB-ot foglal el. Ez a legnagyobb szolg\u00e1ltat\u00e1s az eml\u00edtett szolg\u00e1ltat\u00e1sok k\u00f6z\u00fcl. <\/p>\n<h3>Z\u00e1r\u00e1s<\/h3>\n<p>\nA m\u00e1sodlagos indexek \u00e9s a key-value t\u00e1rol\u00e1s kombin\u00e1ci\u00f3j\u00e1val, valamint a tranzakcion\u00e1liss\u00e1ggal a Tarantool kiv\u00e1l\u00f3an alkalmas mikroszolg\u00e1ltat\u00e1sok alap\u00fa architekt\u00far\u00e1khoz. Azonban neh\u00e9zs\u00e9gekbe \u00fctk\u00f6zt\u00fcnk, amikor olyan szolg\u00e1ltat\u00e1sok friss\u00edt\u00e9seit hajtottuk v\u00e9gre, amelyekben sok logika volt Lua nyelven \u2014 a szolg\u00e1ltat\u00e1sok gyakran le\u00e1lltak. Ezt legy\u0151zni nem tudtuk, \u00e9s id\u0151vel k\u00fcl\u00f6nb\u00f6z\u0151 Lua \u00e9s Go kombin\u00e1ci\u00f3kra jutottunk: tudjuk, hol \u00e9rdemes haszn\u00e1lni az egyes nyelveket.<\/p>\n<p><b>Mit \u00e9rdemes m\u00e9g olvasni a t\u00e9m\u00e1ban<\/b><\/p>\n<ul>\n<li>Magas terhel\u00e9s\u0171 alkalmaz\u00e1st k\u00e9sz\u00edt\u00fcnk a Tarantool-ra null\u00e1r\u00f3l <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/510440\/\">habr.com\/ru\/company\/mailru\/blog\/510440<\/a><\/noindex><\/li>\n<li>A Tarantool Cartridge megb\u00edzhat\u00f3 v\u00e1laszt\u00e1s a vezet\u0151 sz\u00e1m\u00e1ra <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/513912\/\">habr.com\/ru\/company\/mailru\/blog\/513912<\/a><\/noindex><\/li>\n<li>Tarantool Telegram csatorna a term\u00e9k h\u00edreivel <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantool_news\">t.me\/tarantool_news<\/a><\/noindex><\/li>\n<li>Besz\u00e9lgess\u00fcnk a Tarantool-r\u00f3l a k\u00f6z\u00f6ss\u00e9gi chaten <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantoolru\">t.me\/tarantoolru<\/a><\/noindex><\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516932\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0441\u0438\u0434\u044f \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0431\u044b\u043b\u044b\u0445 \u043f\u043e\u0431\u0435\u0434\u0430\u0445, \u0441\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e \u0441\u0432\u043e\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u043d\u044c. \u0418 \u043f\u0443\u0441\u0442\u044c \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u043d\u043e \u0437\u0430\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0441. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043d\u0430 Tarantool. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92807,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92806","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=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\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\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\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-08-31T05:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:03+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\udd47Hogyan szabaduljunk meg a stresszt\u0151l \u00e9s \u00e9lj\u00fcnk monolit n\u00e9lk\u00fcl | ProHoster","description":"Mindannyian szeretj\u00fck a t\u00f6rt\u00e9neteket.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","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\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster","og:description":"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","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-08-31T05:42:03+00:00","article:modified_time":"2020-08-31T05:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92806","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 12:01:23","updated":"2022-10-01 20:28:38","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\/92806","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=92806"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/92806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/92807"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=92806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=92806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=92806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}