{"id":80031,"date":"2020-05-02T13:42:49","date_gmt":"2020-05-02T11:42:49","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/top-fakapov-czian"},"modified":"2020-05-02T13:42:49","modified_gmt":"2020-05-02T11:42:49","slug":"top-fakapov-czian","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/top-fakapov-czian","title":{"rendered":"Topul e\u0219ecurilor Cian","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Topul e\u0219ecurilor Cian\" src=\"\/wp-content\/uploads\/2020\/05\/61cf8d25f1f3e858a3b9541cb026cf3c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSalutare tuturor!\u00a0<\/p>\n<p>M\u0103 numesc Nikita, sunt liderul echipei de ingineri de la Cian. Una dintre responsabilit\u0103\u021bile mele \u00een companie este de a reduce la zero num\u0103rul incidentelor legate de infrastructur\u0103 \u00een produc\u021bie.<br \/>\nCeea ce urmeaz\u0103 va fi discutat a adus multe durei, iar scopul acestui articol este de a \u00eempiedica alte persoane s\u0103 repete gre\u0219elile noastre sau m\u0103car s\u0103 minimizeze impactul acestora.\u00a0<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Preambul<\/h3>\n<p>\nDemult, c\u00e2nd Cian era format din monolituri \u0219i nu existau indicii despre microservicii, m\u0103suram disponibilitatea resursei prin verificarea a 3-5 pagini.\u00a0<\/p>\n<p>Dac\u0103 acestea r\u0103spundeau \u2014 era bine, iar dac\u0103 nu r\u0103spundeau pentru o perioad\u0103 \u00eendelungat\u0103 \u2014 se activa un alert. C\u00e2t timp trebuiau s\u0103 nu func\u021bioneze pentru a fi considerate un incident, decideau oamenii \u00een \u00eent\u00e2lniri. Echipa de ingineri participa \u00eentotdeauna la investigarea incidentului. C\u00e2nd investiga\u021bia se termina, se scria un postmortem \u2014 un fel de raport pe email \u00een format: ce s-a \u00eent\u00e2mplat, c\u00e2t a durat, ce am f\u0103cut atunci \u0219i ce vom face \u00een viitor.\u00a0<\/p>\n<h3>Pagini principale ale site-ului sau cum \u00een\u021belegem c\u0103 am atins fundul.<\/h3>\n<p>\u00a0<br \/>\nPentru a putea evalua priorit\u0103\u021bile erorilor, am eviden\u021biat cele mai critice pagini func\u021bionalit\u0103\u021bii de afaceri ale site-ului. Pe acestea, num\u0103r\u0103m cantitatea de solicit\u0103ri reu\u0219ite\/nereu\u0219ite \u0219i timeout-uri. Astfel, m\u0103sur\u0103m uptime-ul.\u00a0<\/p>\n<p>S\u0103 presupunem c\u0103 am stabilit c\u0103 exist\u0103 o serie de sec\u021biuni extrem de importante ale site-ului care r\u0103spund de principalul serviciu \u2014 c\u0103utarea \u0219i publicarea anun\u021burilor. Dac\u0103 procentul de solicit\u0103ri care s-au terminat cu eroare dep\u0103\u0219e\u0219te 1% \u2014 acesta este un incident critic. Dac\u0103, \u00een timpul v\u00e2rfului de trafic, procentul de erori dep\u0103\u0219e\u0219te 0,1% \u00een decurs de 15 minute \u2014 aceasta este, de asemenea, considerat\u0103 un incident critic. Aceste criterii acoper\u0103 cea mai mare parte a incidentelor, restul ie\u0219ind din sfera acestui articol.<\/p>\n<p><img decoding=\"async\" alt=\"Topul e\u0219ecurilor Cian\" src=\"\/wp-content\/uploads\/2020\/05\/f5d76b1784c9a52ae1dc4728f1509ccc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Cele mai bune incidente de la Cian<\/h3>\n<p>\nA\u0219adar, cu siguran\u021b\u0103 am \u00eenv\u0103\u021bat s\u0103 identific\u0103m faptul c\u0103 un incident a avut loc.\u00a0<\/p>\n<p>Acum, fiecare incident este detaliat \u0219i reflectat \u00een epicul Jira. Apropo: pentru asta am \u00eenfiin\u021bat un proiect separat, l-am numit FAIL \u2014 \u00een care se pot crea doar epice.\u00a0<\/p>\n<p>Dac\u0103 am aduna toate e\u0219ecurile din ultimii ani, iat\u0103 ce iese \u00een eviden\u021b\u0103:\u00a0<\/p>\n<ul>\n<li>incidente legate de mssql;<\/li>\n<li>incidente cauzate de factori externi;<\/li>\n<li>eroare de administrator.<\/li>\n<\/ul>\n<p>\nVom detalia mai am\u0103nun\u021bit erorile administratorilor, precum \u0219i unele alte e\u0219ecuri interesante.<\/p>\n<h4>Locul cinci \u2014 \u201eFacem ordine \u00een DNS\u201d<\/h4>\n<p>\nA fost o mar\u021bi ploioas\u0103. Am decis s\u0103 facem ordine \u00een clusterul DNS.\u00a0<\/p>\n<p>Mi-a venit ideea s\u0103 trec serverele DNS interne de la bind la powerdns, dedic\u00e2nd pentru aceasta servere complet separate, unde nu exista nimic altceva \u00een afar\u0103 de DNS.\u00a0<\/p>\n<p>Am plasat c\u00e2te un server DNS \u00een fiecare loca\u021bie a datacentrelor noastre, iar a venit momentul s\u0103 transfer\u0103m zonele de la bind la powerdns \u0219i s\u0103 schimb\u0103m infrastructura pe noile servere.\u00a0<\/p>\n<p>\u00cen plin proces de transfer, dintre toate <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"servere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1484\">servere<\/a>, care erau specificate \u00een cache-urile locale bind de pe toate serverele, a r\u0103mas doar unul, care se afla \u00een data center-ul din Sankt-Petersburg. Acest datacenter ini\u021bial a fost declarat ca fiind necritic pentru noi, dar dintr-o dat\u0103 a devenit un punct unic de defec\u021biune.<br \/>\nChiar \u00een acea perioad\u0103 de transfer, canalul \u00eentre Moscova \u0219i Sankt-Petersburg a cedat. Practic, am r\u0103mas f\u0103r\u0103 DNS timp de cinci minute \u0219i ne-am revenit c\u00e2nd <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/\"   title=\"hoster\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1206\">hoster<\/a> a remediat problemele.\u00a0<\/p>\n<p><b>Concluzii: <\/b><\/p>\n<p>Dac\u0103 \u00eenainte neglijam factorii externi \u00een timpul preg\u0103tirii lucr\u0103rilor, acum i-am inclus \u0219i pe ace\u0219tia \u00een lista a ceea ce ne preg\u0103tim. \u0218i acum ne str\u0103duim ca toate componentele s\u0103 fie rezervate n-2, iar pe durata lucr\u0103rilor putem reduce acest nivel la n-1.<\/p>\n<ul>\n<li>\u00cen timpul elabor\u0103rii planului de ac\u021biune, marca\u021bi punctele unde serviciul poate c\u0103dea \u0219i g\u00e2ndi\u021bi-v\u0103 la scenariul \u00een care totul a mers \u201e\u00eengrozitor de r\u0103u\u201d, din timp.<\/li>\n<li>Distribui\u021bi serverele DNS interne \u00een diferite geoloca\u021bii\/datacentere\/rack-uri\/comutatoare\/introduceri.<\/li>\n<li>Pe fiecare server, instala\u021bi un server DNS local de cache care redirec\u021bioneaz\u0103 cererile c\u0103tre serverele DNS principale, iar \u00een cazul indisponibilit\u0103\u021bii acestuia, va r\u0103spunde din cache.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Locul patru \u2014 \u201eFacem ordine \u00een Nginx\u201d<\/h4>\n<p>\n\u00centr-o zi frumoas\u0103, echipa noastr\u0103 a decis c\u0103 \u201ea fost destul\u201d \u0219i a \u00eenceput procesul de refactorizare a configura\u021biilor nginx. Scopul principal \u2014 a aduce configura\u021biile la o structur\u0103 intuitiv\u0103. \u00cen trecut, totul era \u201eistoric\u201d \u0219i nu avea nicio logic\u0103. Acum fiecare server_name a fost mutat \u00een fi\u0219ierele corespunz\u0103toare \u0219i toate configura\u021biile au fost distribuite pe foldere. Apropo \u2014 configura\u021bia con\u021bine 253949 de linii sau 7836520 de caractere \u0219i ocup\u0103 aproape 7 megabytes. Nivelul superior al structurii:\u00a0<\/p>\n<p>                        <b class=\"spoiler_title\">Structura Nginx<\/b><\/p>\n<pre><code class=\"plaintext\">\u251c\u2500\u2500 acces\n\u2502 \u00a0 \u251c\u2500\u2500 allow.list\n...\n\u2502 \u00a0 \u2514\u2500\u2500 whitelist.conf\n\u251c\u2500\u2500 geobaz\u0103\n\u2502 \u00a0 \u251c\u2500\u2500 exclude.conf\n...\n\u2502 \u00a0 \u2514\u2500\u2500 geo_ip_to_region_id.conf\n\u251c\u2500\u2500 geodb\n\u2502 \u00a0 \u251c\u2500\u2500 GeoIP.dat\n\u2502 \u00a0 \u251c\u2500\u2500 GeoIP2-Country.mmdb\n\u2502 \u00a0 \u2514\u2500\u2500 GeoLiteCity.dat\n\u251c\u2500\u2500 inc\n\u2502 \u00a0 \u251c\u2500\u2500 error.inc\n...\n\u2502 \u00a0 \u2514\u2500\u2500 proxy.inc\n\u251c\u2500\u2500 lists.d\n\u2502 \u00a0 \u251c\u2500\u2500 bot.conf\n...\n\u2502 \u00a0 \u251c\u2500\u2500 dinamic\n\u2502 \u00a0 \u2514\u2500\u2500 geo.conf\n\u251c\u2500\u2500 lua\n\u2502 \u00a0 \u251c\u2500\u2500 cookie.lua\n\u2502 \u00a0 \u251c\u2500\u2500 log\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 log.lua\n\u2502 \u00a0 \u251c\u2500\u2500 logici\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 include.lua\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 utils.lua\n\u2502 \u00a0 \u2514\u2500\u2500 prom\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 stats.lua\n\u2502 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 stats_prometheus.lua\n\u251c\u2500\u2500 map.d\n\u2502 \u00a0 \u251c\u2500\u2500 access.conf\n\u2502 \u00a0 \u251c\u2500\u2500 ..\u00a0\n\u2502 \u00a0 \u2514\u2500\u2500 zones.conf\n\u251c\u2500\u2500 nginx.conf\n\u251c\u2500\u2500 robots.txt\n\u251c\u2500\u2500 server.d\n\u2502 \u00a0 \u251c\u2500\u2500 cian.ro\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 cian.ro.conf\n\u2502 \u00a0 \u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 my.cian.ro.conf\n\u251c\u2500\u2500 service.d\n\u2502 \u00a0 \u251c\u2500\u2500 ...\n\u2502 \u00a0 \u2514\u2500\u2500 status.conf\n\u2514\u2500\u2500 upstream.d\n\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 cian-mcs.conf\n\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 ...\n\u00a0\u00a0\u00a0\u00a0\u2514\u2500\u2500 wafserver.conf<\/code><\/pre>\n<p>A devenit semnificativ mai bine, dar \u00een procesul de redenumire \u0219i redistribu\u021bie a configura\u021biilor, o parte dintre ele au avut extensia gre\u0219it\u0103 \u0219i nu au intrat \u00een directiva include *.conf. Drept urmare \u2014 unele g\u0103zduiri au devenit inaccesibile \u0219i au returnat 301 la pagina principal\u0103. Din cauza faptului c\u0103 codul de r\u0103spuns nu era 5xx\/4xx, acest lucru nu a fost observat imediat, ci abia diminea\u021ba. Dup\u0103 aceasta, am \u00eenceput s\u0103 scriem teste pentru a verifica componentele infrastructurii.<\/p>\n<p><b>Concluzii:<\/b>\u00a0<\/p>\n<ul>\n<li>Structura\u021bi corect configura\u021biile (nu doar nginx) \u0219i g\u00e2ndi\u021bi structura \u00eenc\u0103 din etapa ini\u021bial\u0103 a proiectului. A\u0219a ve\u021bi face ca acestea s\u0103 fie mai clare pentru echip\u0103, ceea ce va reduce timpul de livrare.<\/li>\n<li>Pentru unele componente ale infrastructurii, scrie\u021bi teste. De exemplu: verifica\u021bi c\u0103 toate numele cheie server_name returneaz\u0103 statutul corect, plus corpul r\u0103spunsului. Va fi suficient s\u0103 ave\u021bi c\u00e2teva scripturi care verific\u0103 func\u021biile esen\u021biale ale componentei, astfel \u00eenc\u00e2t s\u0103 nu v\u0103 agita\u021bi \u00een miez de noapte \u00eentreb\u00e2ndu-v\u0103 ce altceva trebuie s\u0103 verifica\u021bi.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Locul trei \u2014 \u201eA r\u0103mas brusc f\u0103r\u0103 loc \u00een Cassandra\u201d<\/h4>\n<p>\nDatele au crescut constant \u0219i totul a fost bine p\u00e2n\u0103 \u00een momentul \u00een care \u00een clusterul Cassandra au \u00eenceput s\u0103 e\u0219ueze repara\u021biile pentru mari case de date, deoarece compac\u021bia nu putea func\u021biona pe acestea.\u00a0<\/p>\n<p>\u00centr-o zi mohor\u00e2t\u0103, clusterul s-a transformat aproape \u00eentr-o dovleac\u0103, mai exact:<\/p>\n<ul>\n<li>mai r\u0103m\u0103sese aproximativ 20% din capacitatea total\u0103 a clusterului;<\/li>\n<li>nu se pot ad\u0103uga noduri, deoarece nu se finalizeaz\u0103 cur\u0103\u021barea dup\u0103 ad\u0103ugarea unui nod din cauza lipsei de spa\u021biu pe parti\u021bii;<\/li>\n<li>performan\u021ba scade treptat, deoarece compac\u021bia nu func\u021bioneaz\u0103;\u00a0<\/li>\n<li>clusterul func\u021bioneaz\u0103 \u00een modul de urgen\u021b\u0103.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Topul e\u0219ecurilor Cian\" src=\"\/wp-content\/uploads\/2020\/05\/1d036fbc500a49a285fa4b0014e2a70d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIe\u0219irea \u2014 am ad\u0103ugat \u00eenc\u0103 5 noduri f\u0103r\u0103 cur\u0103\u021bare, dup\u0103 care am \u00eenceput s\u0103 scoatem sistematic din cluster \u0219i s\u0103 introducem din nou, ca noduri goale, pe care nu mai era spa\u021biu. Timpul petrecut a fost mult mai mare dec\u00e2t ne-am fi dorit. A existat riscul de nedisponibilitate par\u021bial\u0103 sau total\u0103 a cluster-ului.\u00a0<\/p>\n<p><b>Concluzii:<\/b><\/p>\n<ul>\n<li>Pe toate serverele Cassandra, nu ar trebui s\u0103 fie ocupat mai mult de 60% din spa\u021biul fiec\u0103rei parti\u021bii.\u00a0<\/li>\n<li>Acestea ar trebui s\u0103 fie \u00eenc\u0103rcate la mai mult de 50% din CPU.<\/li>\n<li>Nu trebuie s\u0103 neglij\u0103m planificarea capacit\u0103\u021bii, \u0219i aceasta trebuie g\u00e2ndit\u0103 pentru fiecare component\u0103, \u00een func\u021bie de specificul s\u0103u.<\/li>\n<li>Cu c\u00e2t sunt mai multe noduri \u00een cluster, cu at\u00e2t mai bine. Serverele care con\u021bin un volum mic de date se reconecteaz\u0103 mai repede, iar un astfel de cluster este mai u\u0219or de recuperat.\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h4>Locul doi \u2014 \u201eDatele au disp\u0103rut din stocarea key-value consul\u201d<\/h4>\n<p>\nPentru descoperirea serviciilor, noi, ca \u0219i mul\u021bi al\u021bii, folosim consul. Dar la noi, key-value este folosit \u0219i pentru desf\u0103\u0219urarea blue-green a monolitului. Acolo se stocheaz\u0103 informa\u021biile despre upstream-urile active \u0219i inactive, care se schimb\u0103 \u00eentre ele \u00een timpul desf\u0103\u0219ur\u0103rii. A fost scris un serviciu de desf\u0103\u0219urare care interac\u021biona cu KV. La un moment dat, datele din KV au disp\u0103rut. Le-am recuperat din memorie, dar cu o serie de erori. Drept urmare, la desf\u0103\u0219urare, sarcina pe upstream-uri s-a distribuit neuniform, iar noi am primit multe erori 502 din cauza suprasarcinii backend-urilor pe CPU. \u00cen cele din urm\u0103, am trecut de la consul KV la postgres, de unde eliminarea acestora nu mai este at\u00e2t de simpl\u0103.\u00a0\u00a0<\/p>\n<p><b>Concluzii:<br \/>\n<\/b><\/p>\n<ul>\n<li>Serviciile f\u0103r\u0103 nicio autorizare nu ar trebui s\u0103 con\u021bin\u0103 date critice pentru func\u021bionarea site-ului. De exemplu, dac\u0103 nu ave\u021bi autorizare \u00een ES, ar fi mai bine s\u0103 interzice\u021bi accesul la nivel de re\u021bea din toate locurile unde acesta nu este necesar, l\u0103s\u00e2nd doar cele esen\u021biale, \u0219i s\u0103 face\u021bi action.destructive_requires_name: true.<\/li>\n<li>Exersa\u021bi mecanismul de backup \u0219i restaurare din timp. De exemplu, crea\u021bi din timp un script (de exemplu, \u00een Python) care s\u0103 poat\u0103 at\u00e2t s\u0103 fac\u0103 backup, c\u00e2t \u0219i s\u0103 restaureze.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Locul \u00eent\u00e2i \u2014 \u201eC\u0103pitanul neocvios\u201d\u00a0<\/h4>\n<p>\nLa un moment dat, am observat o distribu\u021bie inegal\u0103 a \u00eenc\u0103rc\u0103turii pe upstream-urile nginx atunci c\u00e2nd \u00een backend erau 10+ servere. Deoarece round-robin redirec\u021biona cererile de la primul la ultimul upstream \u00een ordine, iar fiecare re\u00eenc\u0103rcare nginx \u00eencepea de la \u00eenceput, primele upstream-uri primeau \u00eentotdeauna mai multe cereri dec\u00e2t celelalte. Drept consecin\u021b\u0103, ele func\u021bionau mai lent, afect\u00e2nd \u00eentregul site. Acest lucru devenea din ce \u00een ce mai evident pe m\u0103sur\u0103 ce volumul de trafic cre\u0219tea. Pur \u0219i simplu actualizarea nginx pentru a include random nu a fost suficient\u0103 \u2014 a fost necesar s\u0103 refacem o mul\u021bime de cod lua, care nu a func\u021bionat \u00een versiunea 1.15 (la acel moment). A fost nevoie s\u0103 patch-uim nginx 1.14.2, introduc\u00e2nd suport pentru random. Aceasta a rezolvat problema. Aceast\u0103 eroare c\u00e2\u0219tig\u0103 la categoria \u201ec\u0103pitanul neobservabil\u201d.<\/p>\n<p><b>Concluzii:<\/b><\/p>\n<p>A fost foarte interesant \u0219i captivant s\u0103 investighez aceast\u0103 eroare).\u00a0<\/p>\n<ul>\n<li>Configura\u021bi monitorizarea astfel \u00eenc\u00e2t s\u0103 ajute la identificarea rapid\u0103 a fluctua\u021biilor similare. De exemplu, pute\u021bi folosi ELK pentru a observa rps pentru fiecare backend al fiec\u0103rui upstream, urm\u0103rind timpii lor de r\u0103spuns \u00een ceea ce prive\u0219te nginx. \u00cen acest caz, acest lucru ne-a ajutat s\u0103 identific\u0103m problema.\u00a0<\/li>\n<\/ul>\n<p>\nO mare parte din e\u0219ecuri ar fi putut fi evitate printr-o abordare mai minu\u021bioas\u0103 a ceea ce faci. Trebuie s\u0103 ne amintim \u00eentotdeauna de legea lui Murphy:\u00a0<i>Orice ar putea merge prost, va merge prost, <\/i>\u0219i s\u0103 construim componente av\u00e2nd \u00een vedere acest lucru.\u00a0<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/cian\/blog\/499542\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430!\u00a0 \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435, \u0434\u043e \u043d\u0443\u043b\u044f. \u0422\u043e, \u043e \u0447\u0435\u043c \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0434\u0430\u043b\u0435\u0435, \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u043e \u043d\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0438, \u0438 \u0446\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u043d\u0435 \u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u043b\u044e\u0434\u044f\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043d\u0430\u0448\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u043b\u0438\u044f\u043d\u0438\u0435.\u00a0 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80032,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80031","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.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.\" \/>\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\/ro\/blog\/administrirovanie\/top-fakapov-czian\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\u0422\u043e\u043f \u0444\u0430\u043a\u0430\u043f\u043e\u0432 \u0426\u0438\u0430\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/top-fakapov-czian\" \/>\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-05-02T11:42:49+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-02T11:42:49+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\udd47Top gre\u0219eli de la Cian | ProHoster","description":"Toat\u0103 bun\u0103voin\u021ba! M\u0103 numesc Nikita, sunt liderul echipei de ingineri de la Cian.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/top-fakapov-czian","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\u0422\u043e\u043f \u0444\u0430\u043a\u0430\u043f\u043e\u0432 \u0426\u0438\u0430\u043d | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041d\u0438\u043a\u0438\u0442\u0430, \u044f \u0442\u0438\u043c\u043b\u0438\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0426\u0438\u0430\u043d.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/top-fakapov-czian","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-05-02T11:42:49+00:00","article:modified_time":"2020-05-02T11:42:49+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80031","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:47:44","updated":"2026-02-09 16:50:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/80031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=80031"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/80031\/revisions"}],"predecessor-version":[{"id":158728,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/80031\/revisions\/158728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/80032"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=80031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=80031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=80031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}