{"id":38981,"date":"2019-10-31T22:27:10","date_gmt":"2019-10-31T19:27:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\/"},"modified":"2019-10-31T22:27:10","modified_gmt":"2019-10-31T19:27:10","slug":"servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Servicii orfane: reversul arhitecturii (micro)serviciilor","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Directorul de operare al portalului Banki.ru, Andrei Nikolsky, a vorbit la conferin\u021ba de anul trecut <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscova<\/a><\/noindex> despre serviciile orfane: cum s\u0103 identifici o orphan \u00een infrastructur\u0103, de ce sunt proaste serviciile orfane, ce s\u0103 faci cu ele \u0219i ce s\u0103 faci dac\u0103 nimic nu ajut\u0103.<\/p>\n<p>\u00cen sec\u021biune, versiunea textual\u0103 a raportului. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"j9I4oeEXBO8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/j9I4oeEXBO8\/hqdefault.jpg\" alt=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBun\u0103 ziua, colegi! M\u0103 numesc Andrei, conduc operarea \u00een compania Banki.ru.<\/p>\n<p>Avem servicii mari, cum ar fi monolitice, avem servicii \u00eentr-o \u00een\u021belegere mai clasic\u0103, avem servicii foarte mici. \u00cen terminologia mea de zi cu zi, spun c\u0103 dac\u0103 un serviciu este simplu \u0219i mic, atunci este un microserviciu, iar dac\u0103 nu este foarte simplu \u0219i nu este mic, atunci este pur \u0219i simplu un serviciu. <\/p>\n<h3><b>Avantajele serviciilor<\/b><\/h3>\n<p>\nVoi trece rapid prin avantajele serviciilor. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimul - scalabilitatea. Pute\u021bi face rapid ceva pe serviciu \u0219i s\u0103 \u00eencepe\u021bi \u00een produc\u021bie. A venit traficul, a\u021bi clonat serviciul. A venit din nou trafic, a\u021bi clonat din nou \u0219i tr\u0103i\u021bi cu asta. Este un bonus bun \u0219i, de fapt, c\u00e2nd am \u00eenceput, acesta era considerat cel mai important motiv pentru care facem toate aceste lucruri.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen al doilea r\u00e2nd, dezvoltarea izolat\u0103, c\u00e2nd ave\u021bi mai multe echipe de dezvoltare, mai mul\u021bi dezvoltatori diferi\u021bi \u00een fiecare echip\u0103 \u0219i fiecare echip\u0103 lucreaz\u0103 la un serviciu al s\u0103u.<\/p>\n<p>Exist\u0103 o nuan\u021b\u0103 cu echipele. Dezvoltatorii sunt diferi\u021bi. \u0218i exist\u0103, de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">oameni-z\u0103pad\u0103<\/a><\/noindex>. Am v\u0103zut asta prima dat\u0103 la Maxim Dorofeev. Uneori, oamenii-z\u0103pad\u0103 sunt \u00een unele echipe, iar \u00een altele nu sunt. Acest lucru face ca serviciile utilizate \u00een companie s\u0103 fie pu\u021bin inegale. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrivind imaginea: acesta este un bun dezvoltator, are m\u00e2ini mari, poate face multe. Problema principal\u0103 este de unde cresc aceste m\u00e2ini. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServiciile ofer\u0103 posibilitatea de a folosi diferite limbaje de programare, mai potrivite pentru diferite sarcini. Un serviciu este pe Go, altul pe Erlang, altul pe Ruby, ceva pe PHP, ceva pe Python. \u00cen general, se poate extinde foarte mult. Aici sunt \u0219i nuan\u021be.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArhitectura orientat\u0103 pe servicii este \u00eenainte de toate despre devops. Asta \u00eenseamn\u0103 c\u0103 dac\u0103 nu ave\u021bi automatizare, nu ave\u021bi un proces de deploy, dac\u0103 configura\u021bi manual, configura\u021biile pot varia de la un instan\u021b\u0103 de serviciu la alta \u0219i trebuie s\u0103 intra\u021bi acolo s\u0103 face\u021bi ceva, atunci sunte\u021bi \u00een iad. <\/p>\n<p>De exemplu, ave\u021bi 20 de servicii \u0219i trebuie s\u0103 le desf\u0103\u0219ura\u021bi manual, ave\u021bi 20 de console \u0219i ap\u0103sa\u021bi simultan \u201eenter\u201d, ca ni\u0219te ninja. Asta nu este prea bine. <\/p>\n<p>Dac\u0103 ave\u021bi un serviciu dup\u0103 testare (dac\u0103 exist\u0103 testare, desigur) \u0219i trebuie s\u0103-l mai ajusta\u021bi ca s\u0103 func\u021bioneze \u00een produc\u021bie, am \u0219i pentru voi ve\u0219ti proaste. <\/p>\n<p>Dac\u0103 depinde\u021bi de servicii specifice de la Amazon \u0219i lucra\u021bi \u00een Rusia, atunci acum dou\u0103 luni ave\u021bi \u0219i voi \u201eTotul \u00een jur arde, sunt bine, totul e grozav.\u201d<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFolosim Ansible pentru automatizarea desf\u0103\u0219ur\u0103rii, Puppet pentru convergen\u021b\u0103, Bamboo pentru automatizarea desf\u0103\u0219ur\u0103rii, Confluence pentru a documenta toate acestea cumva.<\/p>\n<p>Nu voi detalia acest aspect, deoarece prezentarea este mai degrab\u0103 despre practicile de interac\u021biune, nu despre implementarea tehnic\u0103. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm avut, de exemplu, probleme \u00een care Puppet pe server ruleaz\u0103 cu Ruby 2, iar o aplica\u021bie este scris\u0103 pentru Ruby 1.8 \u0219i nu func\u021bioneaz\u0103 \u00eempreun\u0103. Se \u00eent\u00e2mpl\u0103 o mic\u0103 eroare acolo. \u015ei c\u00e2nd trebuie s\u0103 p\u0103stra\u021bi mai multe versiuni de Ruby pe aceea\u0219i ma\u0219in\u0103, \u00een general apar probleme. <\/p>\n<p>De exemplu, fiecare dezvoltator prime\u0219te o platform\u0103 care are aproape tot ceea ce avem, toate serviciile pe care le putem dezvolta, astfel \u00eenc\u00e2t acesta s\u0103 aib\u0103 un mediu izolat, \u00een care s\u0103-l poat\u0103 distruge \u0219i construi cum dore\u0219te. <\/p>\n<p>Uneori, este necesar un pachet special compilat cu suport pentru anumite func\u021bionalit\u0103\u021bi. Este destul de strict. Am ascultat o prezentare unde imaginea Docker c\u00e2nt\u0103rea 45 GB. \u00cen Linux, desigur, e mai simplu, acolo totul e mai mic, dar oricum, nu vor fi suficiente resurse. <\/p>\n<p>\u0218i exist\u0103 dependen\u021be contradictorii, c\u00e2nd o parte a proiectului depinde de o bibliotec\u0103 \u00eentr-o anumit\u0103 versiune, alt\u0103 parte a proiectului depinde de o alt\u0103 versiune \u0219i bibliotecile nu se instaleaz\u0103 \u00eempreun\u0103 deloc. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAvem site-uri \u0219i servicii pe PHP 5.6, ne e ru\u0219ine pentru ele, dar ce putem face. Aceasta este o platform\u0103 pentru noi. Avem mai multe site-uri \u0219i servicii pe PHP 7, pentru care nu ne e ru\u0219ine. \u0218i fiecare dezvoltator are baza lui, unde se bucur\u0103 c\u0103 poate lucra. <\/p>\n<p>Dac\u0103 scrie\u021bi \u00een companie \u00eentr-o singur\u0103 limb\u0103, atunci trei ma\u0219ini virtuale per dezvoltator sun\u0103 normal. Dac\u0103 ave\u021bi diferite limbaje de programare, atunci situa\u021bia devine mai complicat\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApare site-uri \u0219i servicii pe acest, pe acest, apoi \u00eenc\u0103 o platform\u0103 pentru Go, o platform\u0103 pentru Ruby, \u0219i un Redis pe l\u00e2ng\u0103. \u00cen cele din urm\u0103, totul se transform\u0103 \u00eentr-un mare domeniu de suport, iar tot timpul ceva poate s\u0103 cedeze.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe aceea, am \u00eenlocuit avantajele limbajelor de programare cu utilizarea diferitelor framework-uri, deoarece framework-urile PHP sunt destul de variate, fiecare av\u00e2nd capacit\u0103\u021bi diferite, comunit\u0103\u021bi diferite, suport diferit. Astfel, po\u021bi scrie un serviciu astfel \u00eenc\u00e2t s\u0103 ai deja ceva preg\u0103tit pentru el. <\/p>\n<h3><b>Fiecare serviciu are echipa sa<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrincipalul nostru avantaj, care s-a cristalizat de-a lungul anilor, este c\u0103 fiecare serviciu are echipa sa. Acest lucru este convenabil pentru un proiect mare, po\u021bi economisi timp pe documenta\u021bie, iar managerii cunosc bine proiectul lor. <\/p>\n<p>Sarcinile de suport pot fi delegat cu u\u0219urin\u021b\u0103. De exemplu, dac\u0103 serviciul de asigurare s-a stricat. \u0218i imediat echipa care se ocup\u0103 cu asigur\u0103rile merge s\u0103 repare. <\/p>\n<p>Func\u021biile noi sunt realizate rapid, deoarece atunci c\u00e2nd ai un anumit serviciu atomic, po\u021bi s\u0103 \u00eencorporezi rapid ceva. <\/p>\n<p>\u0218i c\u00e2nd \u021bi-ai stricat serviciul, iar asta se \u00eent\u00e2mpl\u0103 inevitabil, nu ai afectat celelalte servicii, \u0219i dezvoltatorii din alte echipe nu vin s\u0103-\u021bi spun\u0103: \u201eOoo, nu f\u0103 a\u0219a\u201d. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCa \u00eentotdeauna, exist\u0103 nuan\u021be. Avem echipe stabile, managerii sunt adu\u0219i str\u00e2ns de echip\u0103. Exist\u0103 documente clare, managerii monitorizeaz\u0103 totul. Fiecare echip\u0103 are c\u00e2teva servicii \u00eempreun\u0103 cu managerul, \u0219i exist\u0103 un punct specific de competen\u021b\u0103. <\/p>\n<p>Dac\u0103 echipele sunt flotante (acest lucru este folosit uneori \u0219i la noi), exist\u0103 o metod\u0103 bun\u0103 numit\u0103 \u201ehart\u0103 stea\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAi o list\u0103 de servicii \u0219i oameni. Steaua \u00eenseamn\u0103 c\u0103 persoana este expert \u00een acest serviciu, iar culegerea indic\u0103 c\u0103 persoana studiaz\u0103 acest serviciu. Sarcina persoanei este s\u0103 schimbe culegerea cu o stea. Iar dac\u0103 nimic nu este scris \u00een fa\u021ba serviciului, \u00eencep problemele, despre care voi vorbi mai departe. <\/p>\n<h3><b>Cum apar serviciile orfane?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimul inconvenient, primul mod de a avea un serviciu orfan \u00een infrastructura ta este prin concedierea angaja\u021bilor. A avut cineva vreodat\u0103 o situa\u021bie \u00een care termenele vin \u00eenainte de a evalua sarcinile? Uneori se \u00eent\u00e2mpl\u0103 ca termenii s\u0103 fie stricte \u0219i s\u0103 nu fie suficient timp pentru documenta\u021bie. \u201eTrebuie s\u0103 pred\u0103m serviciul \u00een produc\u021bie, apoi vom completa detaliile.\u201d <\/p>\n<p>Dac\u0103 echipa este mic\u0103, poate exista un singur dezvoltator care scrie tot, ceilal\u021bi fiind doar de sprijin. \u201eAm realizat arhitectura principal\u0103, tu scrie interfe\u021bele.\u201d Apoi, \u00eentr-un anumit moment, managerul pleac\u0103. \u0218i \u00een perioada \u00een care managerul s-a dus \u0219i unul nou nu a fost \u00eenc\u0103 numit, dezvoltatorii decid singuri \u00een ce direc\u021bie se \u00eendreapt\u0103 serviciul \u0219i ce se \u00eent\u00e2mpl\u0103. \u0218i cum \u0219tim (s\u0103 ne \u00eentoarcem c\u00e2teva slide-uri \u00eenapoi), \u00een unele echipe exist\u0103 persoane unice, uneori un lider unic. Apoi acesta pleac\u0103 \u0219i ob\u021binem un serviciu orfan. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00centre timp, sarcinile din suport \u0219i din afacere nu dispar nic\u0103ieri, ele se acumuleaz\u0103 \u00een backlog. Dac\u0103 \u00een timpul dezvolt\u0103rii serviciului au existat erori arhitecturale, acestea se acumuleaz\u0103 de asemenea \u00een backlog. Serviciul se degradeaz\u0103 \u00eencet. <\/p>\n<h3><b>Cum recunoa\u0219tem un orfan?<\/b> <\/h3>\n<p>\nAceast\u0103 list\u0103 descrie bine situa\u021bia. Cine s-a recunoscut \u00een infrastructura sa?<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDespre solu\u021biile workaround documentate: exist\u0103 un serviciu \u0219i, \u00een general, func\u021bioneaz\u0103, are un manual de dou\u0103 pagini despre cum s\u0103 lucrezi cu el, dar cum func\u021bioneaz\u0103 \u00een interior, nimeni nu \u0219tie. <\/p>\n<p>Sau, de exemplu, exist\u0103 un scurt\u0103tor de linkuri. La noi, de exemplu, acum sunt utilizate trei scurt\u0103toare de linkuri pentru scopuri diferite \u00een servicii diferite. Acestea sunt consecin\u021bele. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAcum voi deveni c\u0103pitanul evidentului. Ce trebuie s\u0103 facem? \u00cen primul r\u00e2nd, trebuie s\u0103 pred\u0103m serviciul unui alt manager, unei alte echipe. Dac\u0103 liderul vostru nu a plecat \u00eenc\u0103, atunci \u00een aceast\u0103 alt\u0103 echip\u0103, c\u00e2nd \u00een\u021belege\u021bi c\u0103 serviciul seam\u0103n\u0103 cu un orfan, trebuie s\u0103 include\u021bi pe cineva care \u0219tie m\u0103car ceva despre el. <\/p>\n<p>Cel mai important lucru: trebuie s\u0103 ave\u021bi proceduri de predare bine definite. \u00cen cazul nostru, eu sunt de obicei cel care urm\u0103re\u0219te acest lucru, pentru c\u0103 am nevoie s\u0103 func\u021bioneze totul. Managerii trebuie s\u0103 aib\u0103 totul predat rapid, iar ce se va \u00eent\u00e2mpla cu el mai t\u00e2rziu nu este at\u00e2t de important pentru ei. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUrm\u0103toarea modalitate de a face o aplica\u021bie \u201eS\u0103 facem externalizare, va fi mai rapid, iar apoi o vom preda echipei\u201d. Este clar c\u0103 to\u021bi au planuri \u00een echip\u0103, o ordine. De multe ori, clientul de afaceri crede c\u0103 un externalizator va face totul la fel ca departamentul tehnic din companie. Cu toate acestea, motiva\u021biile lor sunt diferite. La externalizare pot exista solu\u021bii tehnologice bizare \u0219i algoritmi neobi\u0219nui\u021bi.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe exemplu, am avut un serviciu \u00een care Sphinx se g\u0103sea \u00een locuri nea\u0219teptate. Voi povesti mai t\u00e2rziu ce a trebuit s\u0103 facem. <\/p>\n<p>Externalizatorii au uneori framework-uri proprii. Este pur \u0219i simplu PHP brut cu copiat \u0219i lipit din proiectul anterior, unde po\u021bi g\u0103si de toate. Costuri mari \u00een scripturile de deploy, c\u00e2nd trebuie s\u0103 schimbi c\u00e2teva linii dintr-un fi\u0219ier folosind scripturi Bash complicate, aceste scripturi de deploy fiind apelate de un alt script. \u00cen final, schimbi sistemul de deploy, alegi ceva diferit, \u0219i hop, serviciul t\u0103u nu mai func\u021bioneaz\u0103. Pentru c\u0103 trebuiau ad\u0103ugate \u00eenc\u0103 8 linkuri \u00eentre diferite foldere. Sau se poate \u00eent\u00e2mpla c\u0103 o mie de \u00eenregistr\u0103ri func\u021bioneaz\u0103, iar o sut\u0103 de mii deja nu. <\/p>\n<p>Voi continua s\u0103 coordonez. Acceptarea serviciului din externalizare este o procedur\u0103 obligatorie. A avut cineva experien\u021ba \u00een care un serviciu din externalizare ajunge, dar nu este acceptat nic\u0103ieri? Nu este at\u00e2t de popular, desigur, ca aplica\u021bia orphan, dar totu\u0219i. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServiciul trebuie verificat, serviciul trebuie revizuit, trebuie schimbate parolele. Am avut un caz c\u00e2nd ne-a fost oferit un serviciu, acolo adminul era \u00abif login == 'admin' &amp;&amp; password == 'admin'...\u00bb, era scris direct \u00een cod. St\u0103m \u0219i ne g\u00e2ndim, iar asta este scris de oameni \u00een 2018?<\/p>\n<p>Testarea capacit\u0103\u021bii de stocare este, de asemenea, o chestiune necesar\u0103. Trebuie s\u0103 vezi ce se va \u00eent\u00e2mpla cu o sut\u0103 de mii de \u00eenregistr\u0103ri, \u00eenainte de a lansa acest serviciu \u00een produc\u021bie. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNu ar trebui s\u0103-\u021bi fie ru\u0219ine s\u0103 trimi\u021bi serviciul pentru \u00eembun\u0103t\u0103\u021biri. C\u00e2nd spui: \u201eNu vom accepta acest serviciu, avem 20 de sarcini, face\u021bi-le, apoi accept\u0103m\u201d, este normal. Con\u0219tiin\u021ba nu ar trebui s\u0103 te fr\u0103m\u00e2nte c\u0103 pui managerul \u00eentr-o situa\u021bie nepl\u0103cut\u0103 sau c\u0103 afacerea va cheltui bani. Apoi, afacerea va cheltui mai mult.<\/p>\n<p>Am avut un caz c\u00e2nd am decis s\u0103 facem un proiect pilot la externalizare.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA fost predat la timp, iar acesta a fost singurul criteriu de calitate. Prin urmare, s-a realizat un alt proiect pilot, care nu mai era chiar un pilot. Aceste servicii au fost acceptate, au fost date administrativ, uite codul vostru, uite echipa, uite managerul vostru. Serviciile au \u00eenceput deja s\u0103 genereze profit. Cu toate acestea, ele au r\u0103mas \u00een continuare orfane, nimeni nu \u00een\u021belege cum func\u021bioneaz\u0103, iar managerii se str\u0103duiesc s\u0103 se dezic\u0103 de sarcinile lor. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExist\u0103 un alt concept excelent \u2014 dezvoltarea de tip partizan. C\u00e2nd un anumit departament, de regul\u0103, departamentul de marketing, dore\u0219te s\u0103 testeze o ipotez\u0103 \u0219i comand\u0103 un serviciu complet \u00een externalizare. \u00cencep s\u0103 curg\u0103 trafic pe el, \u00eenchid documentele, semneaz\u0103 actele cu contractorul, intr\u0103 \u00een exploatare \u0219i spun: \u201eB\u0103ie\u021bi, avem un serviciu aici, pe el deja exist\u0103 trafic, ne aduce bani, haide\u021bi s\u0103-l accept\u0103m!\u201d. Noi suntem: \u201eWow, cum a\u0219a?\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0218i \u00eenc\u0103 un mod de a ob\u021bine un serviciu-orfan: c\u00e2nd o echip\u0103 se afl\u0103 brusc suprasolicitat\u0103, conducerea spune: \u201eHai s\u0103 transfer\u0103m serviciul acestei echipe c\u0103tre o alt\u0103 echip\u0103, care are o \u00eenc\u0103rcare mai mic\u0103\u201d. Apoi \u00eel transfer\u0103m unei a treia echipe \u0219i schimb\u0103m managerul. \u0218i, \u00een final, avem din nou un orfan.<\/p>\n<h3><b>Care este problema cu orfanii?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCine nu \u0219tie, acesta este nava liniar\u0103 Wasa, ridicat\u0103 \u00een Suedia, celebr\u0103 pentru faptul c\u0103 s-a scufundat la numai 5 minute dup\u0103 lansarea pe ap\u0103. \u0218i regele Suediei, de altfel, nu a pedepsit pe nimeni pentru asta. A fost construit\u0103 de dou\u0103 genera\u021bii de ingineri care nu \u0219tiau s\u0103 construiasc\u0103 astfel de nave. Efectul este previzibil.<\/p>\n<p>Nava ar fi putut s\u0103 se scufunde, de altfel, mult mai r\u0103u, de exemplu, c\u00e2nd la bord se \u00eendrepta regele undeva \u00eentr-o furtun\u0103. Dar, \u00een acest fel, s-a scufundat imediat, conform agilit\u0103\u021bii, asta este bine \u2014 e\u0219ec devreme. <\/p>\n<p>Dac\u0103 am e\u0219uat devreme, de obicei nu sunt probleme. De exemplu, la recep\u021bie, am trimis-o pentru refacere. Dar dac\u0103 am e\u0219uat deja \u00een produc\u021bie, c\u00e2nd s-au investit bani, atunci pot ap\u0103rea probleme. Consecin\u021bele, a\u0219a cum le numesc \u00een afaceri.<\/p>\n<p>Ce este periculos \u00een cazul serviciilor-orfane:<\/p>\n<ul>\n<li>Serviciul se poate defecta brusc. <\/li>\n<li>Serviciul se repar\u0103 mult timp sau nu se repar\u0103 deloc. <\/li>\n<li>Probleme de securitate. <\/li>\n<li>Probleme cu modific\u0103rile \u0219i actualiz\u0103rile. <\/li>\n<li>Dac\u0103 un serviciu important se defecteaz\u0103, afecteaz\u0103 reputa\u021bia companiei. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Ce s\u0103 facem cu serviciile-orfane?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRepet \u00eenc\u0103 o dat\u0103 ce trebuie f\u0103cut. \u00cen primul r\u00e2nd, trebuie s\u0103 existe documenta\u021bie. 7 ani la Banki.ru m-au \u00eenv\u0103\u021bat c\u0103 testerii nu ar trebui s\u0103 cread\u0103 pe cuv\u00e2nt dezvoltatorii, iar exploatarea nu ar trebui s\u0103 cread\u0103 pe cuv\u00e2nt pe nimeni. Trebuie s\u0103 verific\u0103m. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen al doilea r\u00e2nd, trebuie s\u0103 redact\u0103m scheme de interac\u021biune, deoarece se \u00eent\u00e2mpl\u0103 ca serviciile, care nu sunt foarte bine primite, s\u0103 con\u021bin\u0103 dependen\u021be despre care nimeni nu a spus nimic. De exemplu, dezvoltatorii au configurat serviciul pe cheia lor pentru anumite servicii, cum ar fi Yandex.Maps sau Dadata. Dac\u0103 a\u021bi atins limita gratuit\u0103, totul se stric\u0103 \u0219i nu \u0219ti\u021bi ce s-a \u00eent\u00e2mplat. Toate aceste capcane trebuie s\u0103 fie descrise: \u00een serviciu se folose\u0219te Dadata, Sms, altceva.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen al treilea r\u00e2nd, lucrul cu datoriile tehnice. C\u00e2nd face\u021bi anumite prostii sau accepta\u021bi un serviciu \u0219i spune\u021bi c\u0103 trebuie s\u0103 face\u021bi ceva, trebuie s\u0103 urm\u0103ri\u021bi ca aceste lucruri s\u0103 fie realizate. Pentru c\u0103 mai t\u00e2rziu poate s\u0103 se dovedeasc\u0103 c\u0103 o mic\u0103 groap\u0103 nu este at\u00e2t de mic\u0103 \u0219i ve\u021bi c\u0103dea \u00een ea.<\/p>\n<p>Cu sarcinile arhitecturale am avut o istorie legat\u0103 de Sphinx. \u00cen unul dintre serviciile noastre, Sphinx era folosit pentru a introduce liste. Pur \u0219i simplu o list\u0103 cu paginare, dar \u00een acela\u0219i timp se reindexa \u00een fiecare noapte. Era construit din dou\u0103 indexuri: unul era reindexat \u00een fiecare noapte \u0219i exista \u0219i un index mic care era ata\u0219at la acesta. \u00cen fiecare zi, cu o probabilitate de 50%, fie explodeaz\u0103, fie nu, la implementare indexul se strica \u0219i \u0219tirile noastre nu se mai actualizau pe pagina principal\u0103. La \u00eenceput, durea 5 minute, c\u00e2t se reindexa indexul, apoi indexul a crescut, iar \u00eentr-un anumit moment a \u00eenceput s\u0103 se reindexeze timp de 40 de minute. C\u00e2nd am eliminat acest lucru, am respirat u\u0219ura\u021bi, pentru c\u0103 era evident c\u0103 va mai trece pu\u021bin timp \u0219i avem un index care se va reindexa toat\u0103 ziua de lucru. Acesta ar fi un e\u0219ec pentru portalul nostru, opt ore f\u0103r\u0103 \u0219tiri \u2014 totul, afacerea s-a oprit.<\/p>\n<h3><b>Planul de lucru cu serviciul orfan<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe fapt, este foarte greu de realizat, pentru c\u0103 devops-ul este despre comunicare. Vrei s\u0103 ai rela\u021bii bune cu colegii t\u0103i, dar c\u00e2nd love\u0219ti colegii \u0219i managerii cu reglement\u0103ri \u00een cap, ei pot avea sentimente contradictorii fa\u021b\u0103 de persoanele care fac acest lucru. <\/p>\n<p>Pe l\u00e2ng\u0103 toate aceste puncte, mai exist\u0103 \u00eenc\u0103 un aspect important: pentru fiecare serviciu specific, pentru fiecare etap\u0103 a procesului de implementare, trebuie s\u0103 existe oameni responsabili. C\u00e2nd oamenii lipsesc \u0219i trebuie s\u0103 implic\u0103m alte persoane, care trebuie s\u0103 \u00eenve\u021be tot acest proces, devine dificil.<\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDac\u0103 nimic din toate acestea nu a ajutat \u0219i serviciul orfan a r\u0103mas orfan, iar nimeni nu vrea s\u0103 \u00eel preia, documenta\u021bia nu este scris\u0103, echipa care a fost chemat\u0103 la acest serviciu refuz\u0103 s\u0103 fac\u0103 ceva, exist\u0103 o solu\u021bie simpl\u0103 \u2014 refac\u0103 totul. <\/p>\n<p>Adic\u0103 iei cerin\u021bele pentru serviciu din nou \u0219i scrii un nou serviciu, mai bun, pe o platform\u0103 mai bun\u0103, f\u0103r\u0103 solu\u021bii tehnologice stranii. \u0218i migrezi pe el \u00een produc\u021bie. <\/p>\n<p><img decoding=\"async\" alt=\"Servicii orfane: reversul arhitecturii (micro)serviciilor\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm avut o situa\u021bie c\u00e2nd am preluat un serviciu pe Yii 1 \u0219i ne-am dat seama c\u0103 nu putem s\u0103-l dezvolt\u0103m mai departe, deoarece ne-am epuizat dezvoltatorii care \u0219tiu s\u0103 lucreze bine pe Yii 1. To\u021bi dezvoltatorii lucreaz\u0103 bine pe Symfony 3. Ce facem? Am alocat timp, o echip\u0103, un manager, am rescris proiectul \u0219i am direc\u021bionat treptat traficul pe el. <\/p>\n<p>Dup\u0103 aceasta, vechiul serviciu poate fi \u0219ters. Este procedura mea favorit\u0103, c\u00e2nd trebuie s\u0103 elimin un serviciu din sistemul de gestionare a configura\u021biilor \u0219i apoi s\u0103 m\u0103 asigur c\u0103 toate instan\u021bele \u00een produc\u021bie au fost \u00eenchise, pentru a nu l\u0103sa urme dezvoltatorilor. Repozitoriul din Git r\u0103m\u00e2ne.<\/p>\n<p>Asta a fost tot ce am vrut s\u0103 \u00eemp\u0103rt\u0103\u0219esc, sunt gata s\u0103 discut, subiectul este controversat, mul\u021bi s-au aventurat \u00een el. <\/p>\n<p><b>Pe slide-uri s-a vorbit despre uniformizarea limbajelor. Ca exemplu a fost redimensionarea imaginilor. Dar este cu adev\u0103rat necesar s\u0103 se ajung\u0103 la un singur limbaj? Pentru c\u0103 redimensionarea imaginilor \u00een PHP, putea fi de fapt realizat\u0103 \u0219i \u00een Golang.<\/b><\/p>\n<p>\u00cen realitate, acest lucru nu este necesar, ca \u00een toate practicile. Poate, \u00een unele cazuri, este chiar nedorit. Dar trebuie s\u0103 \u00een\u021belegi c\u0103, dac\u0103 ai o companie cu 50 de oameni \u00een departamentul tehnic, din care 45 sunt PHP-i\u0219ti, iar 3 sunt devops care se pricep la Python, Ansible, Puppet \u0219i alte asemenea, \u0219i doar unul dintre ei scrie un serviciu \u00een Go pentru redimensionarea imaginilor, atunci, c\u00e2nd pleac\u0103, expertiza pleac\u0103 odat\u0103 cu el. \u0218i \u00een acest context, va trebui s\u0103 cau\u021bi un dezvoltator specific pe pia\u021b\u0103, care cunoa\u0219te acest limbaj, mai ales dac\u0103 este rar. Din punct de vedere organiza\u021bional, acest lucru este problematic. Din punctul de vedere al devops-ului, nu va trebui doar s\u0103 clonezi un set existent de playbook-uri pe care le folose\u0219ti pentru a desf\u0103\u0219ura servicii, ci va trebui s\u0103 le scrii din nou. <\/p>\n<p>\u00cen prezent, dezvolt\u0103m un serviciu pe Node.js, iar acesta va fi exact locul pentru fiecare dezvoltator cu un limbaj diferit. Dar ne-am g\u00e2ndit \u0219i am realizat c\u0103 merit\u0103. Aici este o \u00eentrebare de a te g\u00e2ndi \u0219i a reflecta.<\/p>\n<p><b>Cum monitoriza\u021bi serviciile voastre? Cum colecta\u021bi \u0219i urm\u0103ri\u021bi jurnalele?<\/b><\/p>\n<p>Jurnalele le colect\u0103m \u00een Elasticsearch \u0219i le plas\u0103m \u00een Kibana, iar \u00een func\u021bie de faptul c\u0103 este un mediu de produc\u021bie sau unul de testare, sunt folosite diferite colectoare. Undeva folosim Lumberjack, altundeva altceva, nu mai \u021bin minte. \u0218i mai sunt c\u00e2teva locuri \u00een anumite servicii unde instal\u0103m Telegraf \u0219i trimitem date separate. <\/p>\n<p><b>Cum s\u0103 coexiste Puppet \u0219i Ansible \u00eentr-un singur mediu?<\/b><\/p>\n<p>De fapt, acum avem dou\u0103 medii, unul - Puppet, cel\u0103lalt - Ansible. Lucr\u0103m la \u00eembinarea lor. Ansible este un mediu bun pentru configurarea ini\u021bial\u0103, Puppet este o solu\u021bie mai pu\u021bin potrivit\u0103 pentru configurarea ini\u021bial\u0103, deoarece necesit\u0103 munc\u0103 manual\u0103 direct pe platform\u0103, iar Puppet asigur\u0103 convergen\u021ba configura\u021biei. Aceasta \u00eenseamn\u0103 c\u0103 platforma se men\u021bine \u00een stare actualizat\u0103, iar pentru a men\u021bine o ma\u0219in\u0103 care utilizeaz\u0103 Ansible \u00een stare actualizat\u0103, trebuie s\u0103 rulezi playbook-uri cu o anumit\u0103 periodicitate. Asta este diferen\u021ba. <\/p>\n<p><b>Cum v\u0103 men\u021bine\u021bi compatibilitatea? Ave\u021bi configura\u021bii at\u00e2t \u00een Ansible, c\u00e2t \u0219i \u00een Puppet?<\/b><\/p>\n<p>Aceasta este o mare durere pentru noi; ne men\u021binem compatibilitatea manual \u0219i ne g\u00e2ndim cum s\u0103 trecem de la toate acestea. Cu Puppet, instal\u0103m pachete \u0219i men\u021binem anumite linkuri, iar Ansible ne instaleaz\u0103 codul \u0219i ajusteaz\u0103 configura\u021biile aplica\u021biilor.<\/p>\n<p><b>Prezentarea a fost despre diferite versiuni de Ruby. Care este solu\u021bia?<\/b><\/p>\n<p>Ne-am confruntat cu asta \u00eentr-un singur loc \u0219i trebuie s\u0103 p\u0103str\u0103m mereu acest lucru \u00een minte. Pur \u0219i simplu am dezactivat acea parte care func\u021biona pe Ruby-ul ce nu era compatibil cu aplica\u021biile \u0219i am p\u0103strat-o separat. <\/p>\n<blockquote><p> \u00cen acest an, conferin\u021ba <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moscova<\/a><\/noindex> va avea loc pe 7 decembrie la \u201eTechnopolis\u201d. P\u00e2n\u0103 pe 11 noiembrie primim propuneri pentru prezent\u0103ri. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Scrie\u021bi<\/a><\/noindex> nou\u0103 dac\u0103 dori\u021bi s\u0103 vorbi\u021bi.<\/p>\n<p>\u00censcrierea pentru participan\u021bi este deschis\u0103, al\u0103tura\u021bi-v\u0103! \n<\/p><\/blockquote>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/scienceman_events\/blog\/471146\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 DevOpsDays Moscow \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043a\u0430\u043a \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0438\u0440\u043e\u0442\u0443 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0447\u0435\u043c \u043f\u043b\u043e\u0445\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Banki.ru. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38981","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=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\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\/ro\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:10+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\udd47Servicii-orfe: reversul arhitecturii (micro)serviciilor | ProHoster","description":"Directorul de operare al portalului Banki.ru, Andrei Nikolsky, a vorbit la conferin\u021ba de anul trecut","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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-31T19:27:10+00:00","article:modified_time":"2019-10-31T19:27:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38981","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-01-24 00:15:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:15:21","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\/38981","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=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}