{"id":30785,"date":"2019-10-31T21:37:25","date_gmt":"2019-10-31T18:37:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\/"},"modified":"2019-10-31T21:37:25","modified_gmt":"2019-10-31T18:37:25","slug":"stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","title":{"rendered":"Stavebn\u00ed bloky distribuovan\u00fdch aplikac\u00ed. Nult\u00e9 p\u0159ibl\u00ed\u017een\u00ed","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Stavebn\u00ed bloky distribuovan\u00fdch aplikac\u00ed. Nult\u00e9 p\u0159ibl\u00ed\u017een\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/88d4e363538bdfc67690c8339dca790b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sv\u011bt se neposunuje d\u00e1l. Pokrok vytv\u00e1\u0159\u00ed nov\u00e9 technologick\u00e9 v\u00fdzvy. V souladu se zm\u011bn\u011bn\u00fdmi po\u017eadavky mus\u00ed evolvovat i architektura informa\u010dn\u00edch syst\u00e9m\u016f. Dnes budeme mluvit o ud\u00e1lostn\u011b orientovan\u00e9 architektu\u0159e, konkuren\u010dnosti, paralelnosti, asynchronnosti a o tom, jak s t\u00edm v\u0161\u00edm lze v Erlangu bez probl\u00e9m\u016f \u017e\u00edt.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"vvedenie\">\u00davod<\/h2>\n<p><\/p>\n<p>V z\u00e1vislosti na velikosti navrhovan\u00e9ho syst\u00e9mu a jeho po\u017eadavc\u00edch si, jako v\u00fdvoj\u00e1\u0159i, vyb\u00edr\u00e1me zp\u016fsob v\u00fdm\u011bny informac\u00ed v syst\u00e9mu. V\u011bt\u0161inou, pro zaji\u0161t\u011bn\u00ed interakce slu\u017eeb, m\u016f\u017ee b\u00fdt pracovn\u00ed variantou sch\u00e9ma s brokerem, nap\u0159\u00edklad na b\u00e1zi RabbitMQ nebo Kafka. Ale n\u011bkdy jsou tok ud\u00e1lost\u00ed, SLA a \u00farove\u0148 kontroly nad syst\u00e9mem takov\u00e9, \u017ee p\u0159ipraven\u00e9 messaging n\u00e1m nevyhovuje. Samoz\u0159ejm\u011b, m\u016f\u017eeme syst\u00e9m trochu zkomplikovat t\u00edm, \u017ee p\u0159evezmeme odpov\u011bdnost za transportn\u00ed \u00farove\u0148 a formov\u00e1n\u00ed clustera, nap\u0159\u00edklad pomoc\u00ed ZeroMQ nebo nanomsg. Ale pokud syst\u00e9mu sta\u010d\u00ed propustnost a mo\u017enosti standardn\u00edho Erlang clusteru, pak ot\u00e1zka zav\u00e1d\u011bn\u00ed dal\u0161\u00ed entity vy\u017eaduje podrobn\u00e9 prozkoum\u00e1n\u00ed a ekonomick\u00e9 od\u016fvodn\u011bn\u00ed.<\/p>\n<p><\/p>\n<p>T\u00e9ma reaktivn\u00edch distribuovan\u00fdch aplikac\u00ed je pom\u011brn\u011b rozs\u00e1hl\u00e9. Abychom se ve\u0161li do form\u00e1tu \u010dl\u00e1nku, p\u0159edm\u011btem dne\u0161n\u00edho diskuse budou pouze homogenn\u00ed prost\u0159ed\u00ed zalo\u017een\u00e1 na Erlangu\/Elixiru. Ekosyst\u00e9m Erlang\/OTP umo\u017e\u0148uje implementaci reaktivn\u00ed architektury s minim\u00e1ln\u00edm pracovn\u00edm \u00fasil\u00edm. Ale v ka\u017ed\u00e9m p\u0159\u00edpad\u011b budeme pot\u0159ebovat vrstvu pro v\u00fdm\u011bnu zpr\u00e1v. <\/p>\n<p><\/p>\n<h2 id=\"teoreticheskiy-bazis\">Teoretick\u00fd z\u00e1klad<\/h2>\n<p><\/p>\n<p>N\u00e1vrh za\u010d\u00edn\u00e1 ur\u010dov\u00e1n\u00edm c\u00edl\u016f a omezen\u00ed. Hlavn\u00edm c\u00edlem nen\u00ed b\u00fdt ve v\u00fdvoji kv\u016fli v\u00fdvoji. Pot\u0159ebujeme z\u00edskat bezpe\u010dn\u00fd a \u0161k\u00e1lovateln\u00fd n\u00e1stroj, na jeho\u017e z\u00e1klad\u011b lze vytv\u00e1\u0159et, a co je nejd\u016fle\u017eit\u011bj\u0161\u00ed \u2013 rozv\u00edjet modern\u00ed aplikace r\u016fzn\u00e9ho stupn\u011b: za\u010d\u00ednaj\u00edc\u00ed od jedno-serverov\u00fdch, kter\u00e9 obsluhuj\u00ed malou c\u00edlovou skupinu, je\u017e se m\u016f\u017ee pozd\u011bji vyvinout v clustery a\u017e 50-60 uzl\u016f, kon\u010de federacemi cluster\u016f. T\u00edm p\u00e1dem hlavn\u00ed c\u00edl \u2013 maximalizace zisku prost\u0159ednictv\u00edm sn\u00ed\u017een\u00ed n\u00e1klad\u016f na v\u00fdvoj a vlastnictv\u00ed kone\u010dn\u00e9ho syst\u00e9mu.<\/p>\n<p><\/p>\n<p>Vy\u010dle\u0148me 4 hlavn\u00ed po\u017eadavky na kone\u010dn\u00fd syst\u00e9m:<\/p>\n<p><\/p>\n<ul>\n<li><strong>S<\/strong>orientovanost na ud\u00e1losti.<br \/>\nSyst\u00e9m je v\u017edy p\u0159ipraven propustit proud ud\u00e1lost\u00ed a vykonat pot\u0159ebn\u00e9 akce;<\/li>\n<li><strong>M<\/strong>\u011b\u0159itelnost.<br \/>\nJednotliv\u00e9 bloky mohou b\u00fdt \u0161k\u00e1lov\u00e1ny vertik\u00e1ln\u011b i horizont\u00e1ln\u011b. Cel\u00fd syst\u00e9m by m\u011bl m\u00edt mo\u017enost nekone\u010dn\u00e9ho horizont\u00e1ln\u00edho r\u016fstu;<\/li>\n<li><strong>O<\/strong>dolnost.<br \/>\nV\u0161echny \u00farovn\u011b a v\u0161echny slu\u017eby mus\u00ed m\u00edt mo\u017enost automatick\u00e9ho obnoven\u00ed v p\u0159\u00edpad\u011b selh\u00e1n\u00ed;<\/li>\n<li><strong>G<\/strong>arantovan\u00e1 doba odezvy.<br \/>\n\u010cas je cenn\u00fd a u\u017eivatel\u00e9 by nem\u011bli \u010dekat p\u0159\u00edli\u0161 dlouho.<\/li>\n<\/ul>\n<p><\/p>\n<p>Pamatujte na starou poh\u00e1dku o \"Mal\u00e9m parn\u00ed\u010dku, kter\u00fd mohl\"? Aby navrhovan\u00fd syst\u00e9m \u00fasp\u011b\u0161n\u011b p\u0159e\u0161el z prototypu do pokro\u010dil\u00e9 f\u00e1ze, mus\u00ed jeho z\u00e1klad spl\u0148ovat minim\u00e1ln\u00ed po\u017eadavky. <strong>MOHL<\/strong>.<\/p>\n<p><\/p>\n<p>K messagingu jako infrastrukturn\u00edmu n\u00e1stroji a z\u00e1kladu pro v\u0161echny slu\u017eby se p\u0159id\u00e1v\u00e1 dal\u0161\u00ed bod: u\u017eivatelsk\u00e1 p\u0159\u00edv\u011btivost pro program\u00e1tory.<\/p>\n<p><\/p>\n<h3 id=\"orientirovannost-na-sobytiya\">Orientace na ud\u00e1losti<\/h3>\n<p><\/p>\n<p>Aby aplikace mohla p\u0159ej\u00edt z jednoho <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/cs\/server\/dts-los-angeles\/\"   title=\"serveru\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3480\">serveru<\/a> do clusteru, jej\u00ed architektura mus\u00ed zaji\u0161\u0165ovat slabou prov\u00e1zanost. Tato po\u017eadavek spl\u0148uje asynchronn\u00ed model. V n\u011bm se o informa\u010dn\u00ed z\u00e1t\u011b\u017e zpr\u00e1vy staraj\u00ed odes\u00edlatel a p\u0159\u00edjemce, ani\u017e by se starali o p\u0159enos a sm\u011brov\u00e1n\u00ed v syst\u00e9mu.<\/p>\n<p><\/p>\n<h3 id=\"masshtabiruemost\">\u0160k\u00e1lovatelnost<\/h3>\n<p><\/p>\n<p>\u0160k\u00e1lovatelnost a efektivita syst\u00e9mu jdou ruku v ruce. Komponenty aplikace mus\u00ed b\u00fdt schopny vyu\u017e\u00edt v\u0161echny dostupn\u00e9 zdroje. \u010c\u00edm efektivn\u011bji m\u016f\u017eeme vyu\u017e\u00edvat kapacity a \u010d\u00edm optim\u00e1ln\u011bji jsou na\u0161e metody zpracov\u00e1n\u00ed, t\u00edm m\u00e9n\u011b utr\u00e1c\u00edme za vybaven\u00ed. <\/p>\n<p><\/p>\n<p>V r\u00e1mci jednoho stroje vytv\u00e1\u0159\u00ed Erlang vysoce konkurenceschopn\u00e9 prost\u0159ed\u00ed. Rovnov\u00e1ha mezi konkurenc\u00ed a paralelnost\u00ed m\u016f\u017ee b\u00fdt nastavena v\u00fdb\u011brem po\u010dtu vl\u00e1ken opera\u010dn\u00edho syst\u00e9mu dostupn\u00fdch pro Erlang VM a po\u010dtem pl\u00e1nova\u010d\u016f, kte\u0159\u00ed tyto vl\u00e1kna vyu\u017e\u00edvaj\u00ed.<br \/>\nErlang procesy nemaj\u00ed spole\u010dn\u00fd stav a pracuj\u00ed v neblokuj\u00edc\u00edm re\u017eimu. To zaji\u0161\u0165uje relativn\u011b n\u00edzkou latenci a vy\u0161\u0161\u00ed pr\u016ftok ne\u017e tradi\u010dn\u00ed aplikace postaven\u00e9 na blokuj\u00edc\u00ed synchronizaci. Pl\u00e1nova\u010d Erlang se star\u00e1 o spravedliv\u00e9 rozd\u011blen\u00ed CPU a IO a absence z\u00e1mk\u016f umo\u017e\u0148uje aplikaci reagovat i v re\u017eimu vrcholov\u00fdch z\u00e1t\u011b\u017e\u00ed nebo poruch. <\/p>\n<p><\/p>\n<p>Na \u00farovni clusteru je tak\u00e9 probl\u00e9m s vyu\u017eit\u00edm. Je d\u016fle\u017eit\u00e9, aby byly v\u0161echny stroje v clusteru rovnom\u011brn\u011b zat\u00ed\u017eeny a s\u00ed\u0165 nebyla p\u0159et\u00ed\u017een\u00e1. P\u0159edstavme si situaci: u\u017eivatelsk\u00fd provoz p\u0159ist\u00e1v\u00e1 na p\u0159\u00edchoz\u00edch vyrovn\u00e1va\u010d\u00edch zat\u00ed\u017een\u00ed (haproxy, nginx, atd.), kter\u00e9 co nejrovnom\u011brn\u011bji rozd\u011bluj\u00ed po\u017eadavky mezi sadu dostupn\u00fdch backend\u016f. V r\u00e1mci infrastruktury aplikace je slu\u017eba, kter\u00e1 realizuje po\u017eadovan\u00fd rozhran\u00ed, pouze posledn\u00ed m\u00edle a bude muset po\u017e\u00e1dat o \u0159adu dal\u0161\u00edch slu\u017eeb, aby odpov\u011bd\u011bla na p\u016fvodn\u00ed po\u017eadavek. Vnit\u0159n\u00ed po\u017eadavky tak\u00e9 vy\u017eaduj\u00ed sm\u011brov\u00e1n\u00ed a vyrovn\u00e1v\u00e1n\u00ed z\u00e1t\u011b\u017ee.<br \/>\nAby se efektivn\u011b spravovaly toky dat, mus\u00ed messaging poskytovat v\u00fdvoj\u00e1\u0159\u016fm rozhran\u00ed pro spr\u00e1vu sm\u011brov\u00e1n\u00ed a rozd\u011blen\u00ed zat\u00ed\u017een\u00ed. D\u00edky tomu budou moci v\u00fdvoj\u00e1\u0159i pomoc\u00ed mikroservisn\u00edch vzor\u016f (aggreg\u00e1tor, proxy, chain, branch, atd.) \u0159e\u0161it jak standardn\u00ed \u00fakoly, tak i ty, kter\u00e9 se vyskytuj\u00ed z\u0159\u00eddka. <\/p>\n<p><\/p>\n<p>Z obchodn\u00edho hlediska je \u0161k\u00e1lovatelnost jedn\u00edm z n\u00e1stroj\u016f \u0159\u00edzen\u00ed rizik. Hlavn\u00ed je uspokojit po\u017eadavky klient\u016f s optim\u00e1ln\u00edm vyu\u017eit\u00edm vybaven\u00ed:<\/p>\n<p><\/p>\n<ul>\n<li>Zv\u00fd\u0161en\u00ed v\u00fdkonu vybaven\u00ed d\u00edky pokroku. Nebude stagnovat kv\u016fli nedokonalosti softwaru. Erlang se skv\u011ble \u0161k\u00e1luje vertik\u00e1ln\u011b a v\u017edy dok\u00e1\u017ee vyu\u017e\u00edt v\u0161echny CPU j\u00e1dra a dostupnou pam\u011b\u0165;<\/li>\n<li>V podm\u00ednk\u00e1ch cloudov\u00fdch prost\u0159ed\u00ed m\u016f\u017eeme \u0159\u00eddit po\u010det za\u0159\u00edzen\u00ed podle aktu\u00e1ln\u00edho nebo p\u0159edpokl\u00e1dan\u00e9ho zat\u00ed\u017een\u00ed a zaru\u010dit SLA.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"otkazoustoychivost\">Odolnost proti v\u00fdpadk\u016fm<\/h3>\n<p><\/p>\n<p>Uva\u017eujme o dvou axiomech: \"V\u00fdpadky jsou nep\u0159ijateln\u00e9\" a \"V\u00fdpadky se v\u017edy stanou\". Pro podnik\u00e1n\u00ed je v\u00fdpadek softwaru ztr\u00e1tou pen\u011bz, a co je hor\u0161\u00ed \u2013 ztr\u00e1tou reputace. Balancov\u00e1n\u00edm mezi mo\u017en\u00fdmi ztr\u00e1tami a n\u00e1klady na v\u00fdvoj softwaru odoln\u00e9ho proti v\u00fdpadk\u016fm lze \u010dasto naj\u00edt kompromis.<\/p>\n<p><\/p>\n<p>V kr\u00e1tkodob\u00e9m horizontu architektura, kter\u00e1 zahrnuje odolnost proti v\u00fdpadk\u016fm, \u0161et\u0159\u00ed pen\u00edze na n\u00e1kupu hotov\u00fdch \u0159e\u0161en\u00ed clusteringu. Ta jsou drah\u00e1 a tak\u00e9 obsahuj\u00ed chyby.<br \/>\nV dlouhodob\u00e9m horizontu se odoln\u00e1 architektura mnohokr\u00e1t vr\u00e1t\u00ed na n\u00e1klady, kter\u00e9 byly vynalo\u017eeny na jej\u00ed aplikaci ve v\u0161ech f\u00e1z\u00edch v\u00fdvoje.<br \/>\nMessaging v r\u00e1mci k\u00f3dov\u00e9 z\u00e1kladny je st\u00e1le ve f\u00e1zi v\u00fdvoje, co\u017e umo\u017e\u0148uje podrobn\u011bji zpracovat interakci komponent\u016f v syst\u00e9mu. To usnad\u0148uje \u00fakol reagovat a spravovat selh\u00e1n\u00ed, proto\u017ee v\u0161echny odpov\u011bdn\u00e9 komponenty zpracov\u00e1vaj\u00ed selh\u00e1n\u00ed a samotn\u00fd syst\u00e9m v\u00ed, jak se automaticky vr\u00e1tit do norm\u00e1ln\u00edho stavu po selh\u00e1n\u00ed, navr\u017een\u00e9ho t\u00edmto zp\u016fsobem.<\/p>\n<p><\/p>\n<h3 id=\"otzyvchivost\">Reaktivita<\/h3>\n<p><\/p>\n<p>Bez ohledu na selh\u00e1n\u00ed by aplikace m\u011bla odpov\u00eddat na po\u017eadavky a spl\u0148ovat SLA. Realita je takov\u00e1, \u017ee lid\u00e9 necht\u011bj\u00ed \u010dekat, a proto se podniky mus\u00ed p\u0159izp\u016fsobit. Od st\u00e1le v\u00edce aplikac\u00ed se o\u010dek\u00e1v\u00e1 vysok\u00e1 reaktivita.<br \/>\nReaktivn\u00ed aplikace funguj\u00ed v re\u017eimu, kter\u00fd se bl\u00ed\u017e\u00ed re\u00e1ln\u00e9mu \u010dasu. Erlang VM funguje v re\u017eimu m\u011bkk\u00e9ho re\u00e1ln\u00e9ho \u010dasu. Pro n\u011bkter\u00e9 oblasti, jako je burzovn\u00ed obchod, medic\u00edna, \u0159\u00edzen\u00ed pr\u016fmyslov\u00e9ho vybaven\u00ed, je d\u016fle\u017eit\u00fd re\u017eim tvrd\u00e9ho re\u00e1ln\u00e9ho \u010dasu.<br \/>\nReaktivn\u00ed syst\u00e9my zlep\u0161uj\u00ed UX a jsou u\u017eite\u010dn\u00e9 pro podnik\u00e1n\u00ed.<\/p>\n<p><\/p>\n<h2 id=\"predvaritelnyy-itog\">P\u0159edb\u011b\u017en\u00fd v\u00fdsledek<\/h2>\n<p><\/p>\n<p>P\u0159i pl\u00e1nov\u00e1n\u00ed tohoto \u010dl\u00e1nku jsem cht\u011bl sd\u00edlet zku\u0161enosti se vytv\u00e1\u0159en\u00edm zprost\u0159edkovatele zpr\u00e1v a stavbou slo\u017eit\u00fdch syst\u00e9m\u016f na jeho z\u00e1klad\u011b. Ale teoretick\u00e1 a motiva\u010dn\u00ed \u010d\u00e1st se uk\u00e1zala jako pom\u011brn\u011b rozs\u00e1hl\u00e1.<br \/>\nVe druh\u00e9 \u010d\u00e1sti \u010dl\u00e1nku budu hovo\u0159it o nuanc\u00edch implementace v\u00fdm\u011bnn\u00fdch bod\u016f, vzorc\u00edch v\u00fdm\u011bny zpr\u00e1v a jejich pou\u017eit\u00ed.<br \/>\nVe t\u0159et\u00ed \u010d\u00e1sti se zam\u011b\u0159\u00edme na obecn\u00e9 ot\u00e1zky organizace slu\u017eeb, sm\u011brov\u00e1n\u00ed a vyva\u017eov\u00e1n\u00ed. Probereme praktickou str\u00e1nku \u0161k\u00e1lovatelnosti a odolnosti syst\u00e9m\u016f.<\/p>\n<p><\/p>\n<p>Konec prvn\u00ed \u010d\u00e1sti.<\/p>\n<p><\/p>\n<p>Foto <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/SRjZtxsK3Os\">@lucabravo<\/a><\/noindex>.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446028\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0438\u0440 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0434\u043e\u043b\u0436\u043d\u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432 Erlang \u043c\u043e\u0436\u043d\u043e \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0436\u0438\u0442\u044c \u043c\u0438\u0440\u043d\u043e. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043d\u0435\u0439, \u043c\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22770,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30785","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=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie\" \/>\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=\"2019-10-31T18:37:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:25+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\udd47Stavebn\u00ed bloky distribuovan\u00fdch aplikac\u00ed. Nult\u00e9 p\u0159ibl\u00ed\u017een\u00ed | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041d\u0443\u043b\u0435\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/stroitelnye-bloki-raspredelennyh-prilozhenij-nulevoe-priblizhenie","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":"2019-10-31T18:37:25+00:00","article:modified_time":"2019-10-31T18:37:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30785","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":"2026-02-22 15:31:13","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:29:56","updated":"2026-02-22 15:31:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=30785"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30785\/revisions"}],"predecessor-version":[{"id":162006,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30785\/revisions\/162006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/22770"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=30785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=30785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=30785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}