{"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\/cs\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u0158editel provozu port\u00e1lu Banki.ru Andrej Nikolskij hovo\u0159il na lo\u0148sk\u00e9 konferenci <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 Moskva<\/a><\/noindex> o problematice \u201esirotk\u016f\u201c: jak rozpoznat sirotka v infrastruktu\u0159e, v \u010dem jsou sirotci \u0161patn\u00ed, co s nimi d\u011blat a jak postupovat, pokud nic nepom\u00e1h\u00e1.<\/p>\n<p>Pod odkazem je textov\u00e1 verze zpr\u00e1vy. <\/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=\"P\u0159ehr\u00e1t 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 \/>\nDobr\u00fd den, kolegov\u00e9! Jmenuji se Andrej a vedu provoz ve spole\u010dnosti Banki.ru.<\/p>\n<p>M\u00e1me velk\u00e9 slu\u017eby, to jsou monolitick\u00e9 slu\u017eby, m\u00e1me slu\u017eby v klasick\u00e9m smyslu, a tak\u00e9 velmi mal\u00e9. Ve sv\u00e9 pracovn\u00ed a zem\u011bd\u011blsk\u00e9 terminologii \u0159\u00edk\u00e1m, \u017ee pokud je slu\u017eba jednoduch\u00e1 a mal\u00e1, je to mikro slu\u017eba, a pokud nen\u00ed p\u0159\u00edli\u0161 jednoduch\u00e1 a nen\u00ed mal\u00e1, je to jednodu\u0161e slu\u017eba. <\/p>\n<h3><b>V\u00fdhody slu\u017eeb<\/b><\/h3>\n<p>\nRychle projdu hlavn\u00ed v\u00fdhody slu\u017eeb. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00ed \u2013 \u0161k\u00e1lovatelnost. M\u016f\u017eete rychle n\u011bco ud\u011blat na slu\u017eb\u011b a spustit to do produkce. P\u0159\u00edjde k v\u00e1m provoz, slu\u017ebu sklonujete. P\u0159\u00edjde dal\u0161\u00ed provoz, znovu sklonujete a s t\u00edm \u017eijete. To je dobr\u00fd bonus, a v podstat\u011b, kdy\u017e jsme za\u010d\u00ednali, pova\u017eoval se to za nejd\u016fle\u017eit\u011bj\u0161\u00ed d\u016fvod, pro\u010d to v\u016fbec d\u011bl\u00e1me.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa druh\u00e9, izolovan\u00fd v\u00fdvoj, kdy\u017e m\u00e1te n\u011bkolik v\u00fdvojov\u00fdch t\u00fdm\u016f, n\u011bkolik r\u016fzn\u00fdch v\u00fdvoj\u00e1\u0159\u016f v ka\u017ed\u00e9m t\u00fdmu a ka\u017ed\u00fd t\u00fdm vyv\u00edj\u00ed svou vlastn\u00ed slu\u017ebu.<\/p>\n<p>V t\u00fdmov\u00e9 pr\u00e1ci vznik\u00e1 nuance. V\u00fdvoj\u00e1\u0159i jsou r\u016fzn\u00ed. Existuj\u00ed nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">lid\u00e9-sn\u011bhov\u00e9 vlo\u010dky<\/a><\/noindex>. Poprv\u00e9 jsem to vid\u011bl u Maxima Dorofejeva. N\u011bkdy jsou lid\u00e9-sn\u011bhov\u00e9 vlo\u010dky v n\u011bkter\u00fdch t\u00fdmech, zat\u00edmco v jin\u00fdch chyb\u00ed. To d\u011bl\u00e1 r\u016fzn\u00e9 slu\u017eby, kter\u00e9 se ve spole\u010dnosti pou\u017e\u00edvaj\u00ed, pon\u011bkud nerovnom\u011brn\u00fdmi. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPod\u00edvejte se na obr\u00e1zek: to je dobr\u00fd v\u00fdvoj\u00e1\u0159, m\u00e1 velk\u00e9 ruce, m\u016f\u017ee d\u011blat mnoho v\u011bc\u00ed. Hlavn\u00ed probl\u00e9m \u2013 odkud tyto ruce vyr\u016fstaj\u00ed. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSlu\u017eby umo\u017e\u0148uj\u00ed pou\u017e\u00edvat r\u016fzn\u00e9 programovac\u00ed jazyky, kter\u00e9 jsou l\u00e9pe p\u0159izp\u016fsobeny r\u016fzn\u00fdm \u00fakol\u016fm. N\u011bjak\u00e1 slu\u017eba m\u016f\u017ee b\u00fdt naps\u00e1na v Go, jin\u00e1 v Erlangu, dal\u0161\u00ed v Ruby, n\u011bco v PHP, n\u011bco v Pythonu. V podstat\u011b se lze roz\u0161\u00ed\u0159it velmi \u0161iroce. I zde jsou nuance.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArchitektura orientovan\u00e1 na slu\u017eby je p\u0159edev\u0161\u00edm o devops. To znamen\u00e1, \u017ee pokud nem\u00e1te automatizaci, nem\u00e1te proces nasazen\u00ed, pokud nastavujete ru\u010dn\u011b, va\u0161e konfigurace se mohou li\u0161it mezi instancemi slu\u017eby a budete muset n\u011bco d\u011blat, pak jste v pekle. <\/p>\n<p>Nap\u0159\u00edklad m\u00e1te 20 slu\u017eeb a mus\u00edte je nasazovat ru\u010dn\u011b, m\u00e1te 20 konzol\u00ed a sou\u010dasn\u011b ma\u010dk\u00e1te \u201eenter\u201c jako ninja. To nen\u00ed ide\u00e1ln\u00ed. <\/p>\n<p>Pokud m\u00e1te slu\u017ebu po testov\u00e1n\u00ed (pokud je n\u011bjak\u00e9 testov\u00e1n\u00ed, samoz\u0159ejm\u011b) a je pot\u0159eba ji je\u0161t\u011b doladit, aby fungovala v produk\u010dn\u00edm prost\u0159ed\u00ed, m\u00e1m pro v\u00e1s tak\u00e9 \u0161patn\u00e9 zpr\u00e1vy. <\/p>\n<p>Pokud se spol\u00e9h\u00e1te na specifick\u00e9 slu\u017eby Amazonu a p\u0159itom pracujete v Rusku, tak p\u0159ed dv\u011bma m\u011bs\u00edci jste m\u011bli tak\u00e9 \u201eV\u0161echno kolem ho\u0159\u00ed, i\u2019m fine, v\u0161echno je skv\u011bl\u00e9\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPou\u017e\u00edv\u00e1me Ansible pro automatizaci nasazov\u00e1n\u00ed, Puppet pro konvergenci, Bamboo pro automatizaci deploye, Confluence pro to, abychom to v\u0161echno n\u011bjak popsali.<\/p>\n<p>Rozeb\u00edrat to podrobn\u011b nebudu, proto\u017ee prezentace je sp\u00ed\u0161e o praktik\u00e1ch interakc\u00ed, ne\u017e o technick\u00e9 realizaci. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u011bli jsme nap\u0159\u00edklad probl\u00e9my, kdy Puppet na serveru b\u011b\u017eel na Ruby 2, a n\u011bjak\u00e1 aplikace byla napsan\u00e1 pro Ruby 1.8, a spole\u010dn\u011b nefungovaly. Doch\u00e1zelo tam k n\u011bjak\u00fdm probl\u00e9m\u016fm. A kdy\u017e pot\u0159ebujete m\u00edt na jednom stroji n\u011bkolik verz\u00ed Ruby, obvykle za\u010dnou probl\u00e9my. <\/p>\n<p>Ka\u017ed\u00e9mu v\u00fdvoj\u00e1\u0159i nap\u0159\u00edklad poskytujeme prost\u0159ed\u00ed, na kter\u00e9m je zhruba v\u0161echno, co m\u00e1me, v\u0161echny slu\u017eby, kter\u00e9 se daj\u00ed vyv\u00edjet, aby m\u011bl izolovan\u00e9 prost\u0159ed\u00ed, mohl ho rozb\u00edt a stav\u011bt, jak se mu l\u00edb\u00ed. <\/p>\n<p>N\u011bkdy pot\u0159ebujete speci\u00e1ln\u011b zkompilovan\u00fd bal\u00ed\u010dek s podporou n\u011b\u010deho. To je docela tvrd\u00e9. Poslouchal jsem prezentaci, kde docker image v\u00e1\u017eil 45 GB. Na Linuxu je to samoz\u0159ejm\u011b jednodu\u0161\u0161\u00ed, tam je to men\u0161\u00ed, ale p\u0159esto, m\u00edsta nebude dost. <\/p>\n<p>A tak\u00e9 se vyskytuj\u00ed protich\u016fdn\u00e9 z\u00e1vislosti, kdy jedna \u010d\u00e1st projektu z\u00e1vis\u00ed na knihovn\u011b jedn\u00e9 verze, druh\u00e1 \u010d\u00e1st projektu na jin\u00e9 verzi, a knihovny se dohromady instalovat prost\u011b nedaj\u00ed. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1me weby a slu\u017eby na PHP 5.6, je n\u00e1m za n\u011b trapn\u011b, ale co nad\u011bl\u00e1te. To m\u00e1me na jedn\u00e9 platform\u011b. Jsou weby a slu\u017eby na PHP 7, t\u011bch je v\u00edce, za n\u011b n\u00e1m nen\u00ed trapn\u011b. A ka\u017ed\u00fd v\u00fdvoj\u00e1\u0159 m\u00e1 svou vlastn\u00ed datab\u00e1zi, kde si radostn\u011b vyv\u00edj\u00ed. <\/p>\n<p>Pokud ve firm\u011b programujete jedn\u00edm jazykem, t\u0159i virtu\u00e1ln\u00ed stroje na v\u00fdvoj\u00e1\u0159e zn\u00ed norm\u00e1ln\u011b. Pokud m\u00e1te r\u016fzn\u00e9 programovac\u00ed jazyky, situace se zhor\u0161uje.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1te webov\u00e9 str\u00e1nky a slu\u017eby na tom, na tom, pak dal\u0161\u00ed platformu pro Go, jednu platformu pro Ruby, a je\u0161t\u011b n\u011bjak\u00fd Redis vedle. Nakonec se to v\u0161echno zm\u011bn\u00ed na velk\u00e9 pole pro \u00fadr\u017ebu a neust\u00e1le se n\u011bco z toho m\u016f\u017ee rozb\u00edt.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProto jsme nahradili kouzla programovac\u00edho jazyka vyu\u017e\u00edv\u00e1n\u00edm r\u016fzn\u00fdch framework\u016f, proto\u017ee frameworky na PHP jsou dost odli\u0161n\u00e9, maj\u00ed r\u016fzn\u00e9 mo\u017enosti, r\u016fzn\u00e9 komunity, r\u016fzn\u00e9 podpory. A m\u016f\u017eete ps\u00e1t slu\u017ebu tak, aby u\u017e bylo n\u011bco hotov\u00e9ho pro ni. <\/p>\n<h3><b>Ka\u017ed\u00e1 slu\u017eba m\u00e1 sv\u016fj t\u00fdm.<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa\u0161\u00ed hlavn\u00ed v\u00fdhodou, kter\u00e1 se vykrystalizovala za n\u011bkolik let, je, \u017ee ka\u017ed\u00e1 slu\u017eba m\u00e1 sv\u016fj t\u00fdm. To je v\u00fdhodn\u00e9 pro velk\u00fd projekt, lze u\u0161et\u0159it \u010das na dokumentaci, mana\u017ee\u0159i dob\u0159e znaj\u00ed sv\u016fj projekt. <\/p>\n<p>\u00dakoly z \u00fadr\u017eby lze skv\u011ble p\u0159en\u00e1\u0161et. Nap\u0159\u00edklad, kdy\u017e se rozbije slu\u017eba poji\u0161t\u011bn\u00ed. A hned t\u00fdm, kter\u00fd se zab\u00fdv\u00e1 poji\u0161t\u011bn\u00edm, jde ji opravit. <\/p>\n<p>Nov\u00e9 funkce se snadno implementuj\u00ed, proto\u017ee kdy\u017e m\u00e1te n\u011bjakou atom\u00e1rn\u00ed slu\u017ebu, m\u016f\u017eete do n\u00ed rychle n\u011bco zav\u00e9st. <\/p>\n<p>A kdy\u017e se v\u00e1m rozbije va\u0161e slu\u017eba, a to se nevyhnuteln\u011b stane, nezas\u00e1hnete ostatn\u00ed slu\u017eby, a k v\u00e1m nep\u0159ich\u00e1zej\u00ed v\u00fdvoj\u00e1\u0159i s kladivy z jin\u00fdch t\u00fdm\u016f a ne\u0159\u00edkaj\u00ed: \"Au, to ned\u011blej.\" <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak je v\u017edycky, jsou tu nuance. M\u00e1me stabiln\u00ed t\u00fdmy, mana\u017ee\u0159i jsou do t\u00fdmu pevn\u011b p\u0159i\u0159azeni. Existuj\u00ed jasn\u00e9 dokumenty, mana\u017ee\u0159i na to v\u0161echno pe\u010dliv\u011b dohl\u00ed\u017eej\u00ed. Ka\u017ed\u00fd t\u00fdm m\u00e1 s mana\u017eerem n\u011bkolik slu\u017eeb a existuje konkr\u00e9tn\u00ed kompeten\u010dn\u00ed bod. <\/p>\n<p>Pokud jsou t\u00fdmy flexibiln\u00ed (to u n\u00e1s tak\u00e9 ob\u010das funguje), existuje dobr\u00e1 metoda, kter\u00e1 se naz\u00fdv\u00e1 \u201ehv\u011bzdn\u00e1 mapa\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1te seznam slu\u017eeb a lid\u00ed. Hv\u011bzdi\u010dka znamen\u00e1, \u017ee \u010dlov\u011bk je expert v t\u00e9to slu\u017eb\u011b, kn\u00ed\u017eka znamen\u00e1, \u017ee \u010dlov\u011bk studuje tuto slu\u017ebu. \u00dakolem \u010dlov\u011bka je vym\u011bnit kn\u00ed\u017eku za hv\u011bzdi\u010dku. A pokud proti slu\u017eb\u011b nen\u00ed nic naps\u00e1no, za\u010d\u00ednaj\u00ed probl\u00e9my, o kter\u00fdch budu d\u00e1le hovo\u0159it. <\/p>\n<h3><b>Jak vznikaj\u00ed slu\u017eby sirotci?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00ed probl\u00e9m, jak z\u00edskat ve sv\u00e9 infrastruktu\u0159e servis-orphan \u2014 to jsou propou\u0161t\u011bn\u00ed lid\u00ed. M\u011bl n\u011bkdo zku\u0161enosti, kdy do firmy dorazily term\u00edny, je\u0161t\u011b p\u0159edt\u00edm ne\u017e byly \u00fakoly zhodnoceny? N\u011bkdy jsou term\u00edny p\u0159\u00edsn\u00e9 a na dokumentaci prost\u011b nen\u00ed \u010das. \"Mus\u00edme slu\u017ebu nasadit do produkce, pak to dod\u011bl\u00e1me.\" <\/p>\n<p>Pokud je t\u00fdm mal\u00fd, m\u016f\u017ee se st\u00e1t, \u017ee je v n\u011bm jeden v\u00fdvoj\u00e1\u0159, kter\u00fd p\u00ed\u0161e v\u0161echno, a ostatn\u00ed jsou v pohotovosti. \"J\u00e1 jsem napsal hlavn\u00ed architekturu, ty se pus\u0165 do n\u00e1vrhu rozhran\u00ed.\" Pak v n\u011bjak\u00e9m okam\u017eiku nap\u0159\u00edklad mana\u017eer odejde. A v t\u00e9to dob\u011b, kdy mana\u017eer ode\u0161el a nov\u00fd je\u0161t\u011b nen\u00ed jmenov\u00e1n, v\u00fdvoj\u00e1\u0159i sami rozhoduj\u00ed, kam slu\u017eba sm\u011b\u0159uje, co se tam d\u011bje. A jak v\u00edme (vr\u00e1t\u00edme se o n\u011bkolik slid\u016f zp\u011bt), v n\u011bkter\u00fdch t\u00fdmech jsou lid\u00e9 \u2013 sn\u011bhov\u00e9 vlo\u010dky, n\u011bkdy je sn\u011bhov\u00e1 vlo\u010dka-vedouc\u00ed t\u00fdmu. Pot\u00e9 odejde a my m\u00e1me servis-orphan. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dakoly od podpory a od podnik\u00e1n\u00ed ale nikam nezmiz\u00ed, usazuj\u00ed se v backlogu. Pokud p\u0159i v\u00fdvoji slu\u017eby byly n\u011bjak\u00e9 architektonick\u00e9 chyby, tak\u00e9 se usazuj\u00ed v backlogu. Slu\u017eba pomalu degraduje. <\/p>\n<h3><b>Jak rozpoznat orphan?<\/b> <\/h3>\n<p>\nTento seznam docela dob\u0159e popisuje situaci. Kdo v sob\u011b rozpoznal n\u011bco ve sv\u00e9 infrastruktu\u0159e?<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOhledn\u011b zdokumentovan\u00fdch work-around\u016f: existuje slu\u017eba a celkov\u011b funguje, m\u00e1 manu\u00e1l na dv\u011b str\u00e1nky, jak s n\u00ed pracovat, ale jak funguje uvnit\u0159, nikdo nev\u00ed. <\/p>\n<p>Nebo nap\u0159\u00edklad existuje n\u011bjak\u00fd zkracova\u010d odkaz\u016f. U n\u00e1s nap\u0159\u00edklad te\u010f pou\u017e\u00edv\u00e1me t\u0159i zkracova\u010de odkaz\u016f pro r\u016fzn\u00e9 \u00fa\u010dely v r\u016fzn\u00fdch slu\u017eb\u00e1ch. To jsou d\u016fsledky pr\u00e1v\u011b toho. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTe\u010f budu kapit\u00e1nem o\u010dividnost\u00ed. Co je pot\u0159eba ud\u011blat? Za prv\u00e9, je t\u0159eba p\u0159edat slu\u017ebu jin\u00e9mu mana\u017eerovi, jin\u00e9mu t\u00fdmu. Pokud v\u00e1\u0161 vedouc\u00ed t\u00fdmu je\u0161t\u011b neode\u0161el, pak do tohoto jin\u00e9ho t\u00fdmu, kdy\u017e ch\u00e1pete, \u017ee slu\u017eba vypad\u00e1 jako orphan, je t\u0159eba za\u0159adit n\u011bkoho, kdo v n\u00ed alespo\u0148 n\u011bco rozum\u00ed. <\/p>\n<p>Hlavn\u00ed v\u011bc: mus\u00edte m\u00edt napsan\u00e9 procedury p\u0159ed\u00e1n\u00ed. V na\u0161em p\u0159\u00edpad\u011b se obvykle o to star\u00e1m j\u00e1, proto\u017ee pot\u0159ebuji, aby to v\u0161echno fungovalo. Mana\u017ee\u0159i cht\u011bj\u00ed, aby to bylo rychle p\u0159ed\u00e1no, a co se s t\u00edm pak stane, u\u017e pro n\u011b nen\u00ed tak d\u016fle\u017eit\u00e9. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDal\u0161\u00ed zp\u016fsob, jak vytvo\u0159it osi\u0159el\u00fd projekt, je: \"P\u0159eneseme ho na outsourcing, bude to rychlej\u0161\u00ed, a pak ho p\u0159ed\u00e1me t\u00fdmu.\" Je jasn\u00e9, \u017ee ka\u017ed\u00fd m\u00e1 v t\u00fdmu n\u011bjak\u00e9 pl\u00e1ny, a n\u011bkdy se \u010dek\u00e1 na \u0159adu. \u010casto si obchodn\u00ed zadavatel mysl\u00ed, \u017ee na outsourcingu ud\u011blaj\u00ed pr\u00e1ci stejn\u011b jako technick\u00e9 odd\u011blen\u00ed ve firm\u011b, p\u0159i\u010dem\u017e motivace jsou odli\u0161n\u00e9. Na outsourcingu se mohou objevit zvl\u00e1\u0161tn\u00ed technologick\u00e1 a algoritmick\u00e1 \u0159e\u0161en\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU n\u00e1s byl nap\u0159\u00edklad servis, kde byl Sphinx na r\u016fzn\u00fdch neobvykl\u00fdch m\u00edstech. Pozd\u011bji v\u00e1m \u0159eknu, co v\u0161echno jsme museli ud\u011blat. <\/p>\n<p>Na outsourcingu najdete frameworky napsan\u00e9 na m\u00edru. To je prost\u011b hol\u00fd PHP s kop\u00edrov\u00e1n\u00edm a vkl\u00e1d\u00e1n\u00edm z p\u0159edchoz\u00edho projektu, kde m\u016f\u017eete naj\u00edt cokoliv. V deploy skriptech se obvykle vyskytuj\u00ed velk\u00e9 kostit\u011b, kdy pot\u0159ebujete slo\u017eit\u00fdmi Bash skripty zm\u011bnit p\u00e1r \u0159\u00e1dk\u016f v n\u011bjak\u00e9m souboru, a tyto deploy skripty vol\u00e1 n\u011bjak\u00fd jin\u00fd skript. Nakonec zm\u011bn\u00edte syst\u00e9m nasazen\u00ed, vyberete n\u011bco jin\u00e9ho a bum, v\u00e1\u0161 servis nefunguje. Proto\u017ee tam m\u011blo b\u00fdt je\u0161t\u011b 8 odkaz\u016f mezi r\u016fzn\u00fdmi slo\u017ekami. Nebo se m\u016f\u017ee st\u00e1t, \u017ee tis\u00edc z\u00e1znam\u016f funguje, ale sto tis\u00edc u\u017e ne. <\/p>\n<p>Pokra\u010duji v kapit\u00e1n\u011bn\u00ed. P\u0159evzet\u00ed servisu z outsourcingu je nezbytn\u00fd proces. M\u011bl n\u011bkdo zku\u0161enost, \u017ee servis z outsourcingu p\u0159ijde a nikdo ho nep\u0159ijme? Nen\u00ed to tak popul\u00e1rn\u00ed jako osi\u0159el\u00fd projekt, ale p\u0159esto. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSlu\u017ebu je t\u0159eba kontrolovat, slu\u017ebu je t\u0159eba recenzovat, je nutn\u00e9 m\u011bnit hesla. M\u011bli jsme p\u0159\u00edpad, kdy n\u00e1m n\u011bkdo p\u0159edal slu\u017ebu, kde byla administrace \"if login == 'admin' &amp;&amp; password == 'admin'...\", p\u0159\u00edmo naps\u00e1no v k\u00f3du. Sed\u00edme a p\u0159em\u00fd\u0161l\u00edme, a tohle p\u00ed\u0161\u00ed lid\u00e9 v roce 2018?<\/p>\n<p>Testov\u00e1n\u00ed objemu \u00falo\u017ei\u0161t\u011b je tak\u00e9 d\u016fle\u017eit\u00e9. Mus\u00edte zkoumat, co se stane p\u0159i sta tis\u00edc\u00edch z\u00e1znamech, je\u0161t\u011b p\u0159edt\u00edm, ne\u017e ten servis pust\u00edte do produkce. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoslat servis na \u00fapravy by nem\u011blo b\u00fdt poni\u017euj\u00edc\u00ed. Kdy\u017e \u0159\u00edk\u00e1te: \"Tenhle servis nep\u0159ijmeme, m\u00e1me 20 \u00fakol\u016f, ud\u011blejte je, pak p\u0159ijmeme,\" je to norm\u00e1ln\u00ed. Sv\u011bdom\u00ed by nem\u011blo trp\u011bt t\u00edm, \u017ee zklamete mana\u017eera nebo \u017ee firma utrat\u00ed pen\u00edze. Firma pak utrat\u00ed v\u00edce.<\/p>\n<p>M\u011bli jsme p\u0159\u00edpad, kdy jsme se rozhodli ud\u011blat pilotn\u00ed projekt na outsourcingu.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nByl dod\u00e1n v\u010das a to byl jedin\u00fd kvalitativn\u00ed krit\u00e9rium. Proto byl vytvo\u0159en dal\u0161\u00ed pilotn\u00ed projekt, kter\u00fd u\u017e ani nen\u00ed zcela pilotn\u00ed. Tyto slu\u017eby byly p\u0159ijat\u00e9, administrativn\u00edmi metodami bylo \u0159e\u010deno: tady m\u00e1te k\u00f3d, tady je t\u00fdm, tady je v\u00e1\u0161 mana\u017eer. Slu\u017eby skute\u010dn\u011b za\u010daly generovat zisk. P\u0159itom ve skute\u010dnosti z\u016fstaly st\u00e1le sirotci, nikdo nech\u00e1pe, jak funguj\u00ed, a mana\u017ee\u0159i se od jejich \u00fakol\u016f v\u0161emo\u017en\u011b distancuj\u00ed. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExistuje je\u0161t\u011b jeden skv\u011bl\u00fd koncept \u2014 partyz\u00e1nsk\u00fd v\u00fdvoj. Kdy\u017e n\u011bjak\u00e9 odd\u011blen\u00ed, obvykle marketingov\u00e9, chce ov\u011b\u0159it hypot\u00e9zu a objedn\u00e1 si slu\u017ebu kompletn\u011b na outsourcing. Za\u010d\u00edn\u00e1 na ni proudit provoz, uzav\u00edraj\u00ed dokumenty, podepisuj\u00ed protokoly s dodavatelem, p\u0159ich\u00e1zej\u00ed do provozu a \u0159\u00edkaj\u00ed: \u201eKluci, tady m\u00e1me slu\u017ebu, na n\u00ed u\u017e je provoz, generuje n\u00e1m pen\u00edze, poj\u010fme ji p\u0159evz\u00edt.\u201c A my \u0159\u00edk\u00e1me: \u201eCo to? Jak se to stalo?\u201c<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA je\u0161t\u011b jeden zp\u016fsob, jak z\u00edskat slu\u017ebu-sirotka: kdy\u017e je n\u011bjak\u00fd t\u00fdm n\u00e1hle p\u0159et\u00ed\u017een\u00fd, veden\u00ed \u0159\u00edk\u00e1: \u201eP\u0159ed\u00e1me tuto slu\u017ebu t\u00fdmu, kter\u00fd m\u00e1 men\u0161\u00ed z\u00e1t\u011b\u017e.\u201c A pak ji p\u0159ed\u00e1me t\u0159et\u00edmu t\u00fdmu a zm\u011bn\u00edme mana\u017eera. A nakonec m\u00e1me op\u011bt sirotka.<\/p>\n<h3><b>Jak\u00fd je probl\u00e9m s sirotky?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKdo nev\u00ed, je to slavn\u00e1 lo\u010f Vasa, kter\u00e1 se potopila 5 minut po spu\u0161t\u011bn\u00ed na vodu. A \u0161v\u00e9dsk\u00fd kr\u00e1l, mimochodem, nikoho za to nepopravil. Stav\u011bli ji dv\u011b generace in\u017een\u00fdr\u016f, kte\u0159\u00ed nev\u011bd\u011bli, jak takov\u00e9 lod\u011b budovat. Logick\u00fd efekt.<\/p>\n<p>Lo\u010f se mohla potopit, mimochodem, mnohem h\u016f\u0159e, nap\u0159\u00edklad kdy\u017e by na n\u00ed jel kr\u00e1l n\u011bkam v bou\u0159i. Takto se potopila hned, co\u017e je v souladu s agiln\u00ed metodologi\u00ed \u2014 selhat d\u0159\u00edve. <\/p>\n<p>Pokud sel\u017eeme brzy, obvykle s t\u00edm nejsou probl\u00e9my. Nap\u0159\u00edklad p\u0159i p\u0159evzet\u00ed bylo posl\u00e1no k p\u0159epracov\u00e1n\u00ed. A pokud u\u017e sel\u017eeme v produkci, kdy jsou investov\u00e1ny pen\u00edze, mohou b\u00fdt probl\u00e9my. D\u016fsledky, jak se tomu \u0159\u00edk\u00e1 v byznysu.<\/p>\n<p>Jak\u00e1 jsou nebezpe\u010d\u00ed slu\u017eeb-sirotk\u016f:<\/p>\n<ul>\n<li>Slu\u017eba se m\u016f\u017ee n\u00e1hle porouchat. <\/li>\n<li>Slu\u017eba se dlouho opravuje nebo se neopravuje v\u016fbec. <\/li>\n<li>Probl\u00e9my s bezpe\u010dnost\u00ed. <\/li>\n<li>Probl\u00e9my s dopl\u0148ky a aktualizacemi. <\/li>\n<li>Pokud se rozbije d\u016fle\u017eit\u00e1 slu\u017eba, utrp\u00ed reputace firmy. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Co d\u011blat se slu\u017ebami-sirotky?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZnovu opakuji, co d\u011blat. Za prv\u00e9, mus\u00ed b\u00fdt dokumentace. Sedm let na Banki.ru m\u011b nau\u010dilo, \u017ee teste\u0159i by se nem\u011bli spol\u00e9hat na slovo v\u00fdvoj\u00e1\u0159\u016f a provoz by nem\u011bl d\u016fv\u011b\u0159ovat nikomu bez ov\u011b\u0159en\u00ed. Je t\u0159eba kontrolovat. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa druh\u00e9, je nutn\u00e9 ps\u00e1t sch\u00e9mata interakc\u00ed, proto\u017ee se m\u016f\u017ee st\u00e1t, \u017ee slu\u017eby, kter\u00e9 nejsou p\u0159\u00edli\u0161 dob\u0159e p\u0159ijat\u00e9, obsahuj\u00ed z\u00e1vislosti, o kter\u00fdch nikdo ne\u0159ekl. Nap\u0159\u00edklad v\u00fdvoj\u00e1\u0159i pomoc\u00ed vlastn\u00edho kl\u00ed\u010de p\u0159ipojili slu\u017ebu k n\u011bjak\u00fdm Yandex.Map\u00e1m nebo Ddata. Kdy\u017e v\u00e1m vypr\u0161el bezplatn\u00fd limit, v\u0161echno se pokazilo, a vy nev\u00edte, co se vlastn\u011b stalo. V\u0161echny takov\u00e9 probl\u00e9my by m\u011bly b\u00fdt pops\u00e1ny: ve slu\u017eb\u011b se pou\u017e\u00edv\u00e1 Ddata, Sms, je\u0161t\u011b n\u011bco.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa t\u0159et\u00ed, pr\u00e1ce s technick\u00fdm dluhem. Kdy\u017e d\u011bl\u00e1te n\u011bjak\u00e9 z\u00e1st\u011bry nebo p\u0159ijmete slu\u017ebu a \u0159\u00edk\u00e1te, \u017ee je t\u0159eba n\u011bco ud\u011blat, m\u011bli byste db\u00e1t na to, aby to skute\u010dn\u011b d\u011blali. Proto\u017ee se m\u016f\u017ee uk\u00e1zat, \u017ee mal\u00e1 d\u00edra nen\u00ed tak mal\u00e1 a vy do n\u00ed spadnete.<\/p>\n<p>S architektonick\u00fdmi \u00fakoly jsme m\u011bli p\u0159\u00edb\u011bh pr\u00e1v\u011b ohledn\u011b Sphinx. V jedn\u00e9 ze slu\u017eeb se Sphinx pou\u017e\u00edval k zav\u00e1d\u011bn\u00ed seznam\u016f. Jen seznam s paginac\u00ed, ale ka\u017edou noc se znovu indexoval. Byl slo\u017een ze dvou index\u016f: jeden se ka\u017edou noc indexoval velk\u00fd, a druh\u00fd byl mal\u00fd index, kter\u00fd se k n\u011bmu p\u0159ipojoval. Ka\u017ed\u00fd den, s pravd\u011bpodobnost\u00ed 50%, bu\u010f se to poda\u0159ilo, nebo ne, p\u0159i publikaci se index rozbil a novinky se na na\u0161\u00ed hlavn\u00ed str\u00e1nce p\u0159estaly aktualizovat. Zpo\u010d\u00e1tku to bylo 5 minut, dokud se index znovu neindexoval, pak se index rozrostl, a v ur\u010dit\u00e9m okam\u017eiku to za\u010dalo trvat 40 minut. Kdy\u017e jsme to odstranili, oddechli jsme si s \u00falevou, proto\u017ee bylo jasn\u00e9, \u017ee uplyne je\u0161t\u011b n\u011bjak\u00fd \u010das a n\u00e1\u0161 index se bude znovu indexovat po cel\u00fd pracovn\u00ed den. To by byl probl\u00e9m pro n\u00e1\u0161 port\u00e1l, osm hodin bez novinek \u2014 v\u0161echno, obchod se zastavil.<\/p>\n<h3><b>Pl\u00e1n pr\u00e1ce se sirot\u010d\u00edm servisem<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVe skute\u010dnosti je to velmi t\u011b\u017ek\u00e9 d\u011blat, proto\u017ee devops jsou o komunikaci. \u010clov\u011bk chce m\u00edt dobr\u00e9 vztahy se sv\u00fdmi kolegy, a kdy\u017e sv\u00e9 kolegy a mana\u017eery zasyp\u00e1v\u00e1\u0161 regulacemi, mohou m\u00edt sm\u00ed\u0161en\u00e9 pocity k t\u011bm, kte\u0159\u00ed to tak d\u011blaj\u00ed. <\/p>\n<p>Krom\u011b v\u0161ech t\u011bchto bod\u016f existuje je\u0161t\u011b jedna d\u016fle\u017eit\u00e1 v\u011bc: za ka\u017ed\u00fd konkr\u00e9tn\u00ed slu\u017ebu, za ka\u017ed\u00fd konkr\u00e9tn\u00ed \u00fasek procesu nasazen\u00ed, mus\u00ed odpov\u00eddat konkr\u00e9tn\u00ed lid\u00e9. Kdy\u017e lid\u00e9 nejsou k dispozici a je t\u0159eba zapojit n\u011bjak\u00e9 jin\u00e9 lidi, kte\u0159\u00ed se to nau\u010d\u00ed, st\u00e1v\u00e1 se to obt\u00ed\u017en\u00fdm.<\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPokud to v\u0161echno nepomohlo a slu\u017eba sirotka v\u00e1m st\u00e1le z\u016fst\u00e1v\u00e1 sirotkem, nikdo ji nechce vz\u00edt, dokumentace se nep\u00ed\u0161e, t\u00fdm, kter\u00fd byl pro tuto slu\u017ebu povol\u00e1n, odm\u00edt\u00e1 n\u011bco d\u011blat, existuje jednoduch\u00fd zp\u016fsob \u2014 v\u0161echno p\u0159epracovat. <\/p>\n<p>Jin\u00fdmi slovy, vezmete po\u017eadavky na slu\u017ebu znovu a nap\u00ed\u0161ete novou slu\u017ebu, lep\u0161\u00ed, na lep\u0161\u00ed platform\u011b, bez zvl\u00e1\u0161tn\u00edch technologick\u00fdch \u0159e\u0161en\u00ed. A migrujete na n\u00ed za chodu. <\/p>\n<p><img decoding=\"async\" alt=\"Sirot\u010d\u00ed slu\u017eby: opa\u010dn\u00e1 strana (mikro)servisn\u00ed architektury\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u011bli jsme situaci, kdy jsme vzali slu\u017ebu na Yii 1 a zjistili jsme, \u017ee ji nem\u016f\u017eeme d\u00e1le rozv\u00edjet, proto\u017ee n\u00e1m do\u0161li v\u00fdvoj\u00e1\u0159i, kte\u0159\u00ed um\u011bj\u00ed dob\u0159e ps\u00e1t na Yii 1. V\u0161ichni v\u00fdvoj\u00e1\u0159i um\u00ed dob\u0159e ps\u00e1t na t\u0159et\u00edm Symfony. Co d\u011blat? Vyhradili jsme \u010das, ur\u010dili t\u00fdm, ur\u010dili mana\u017eera, p\u0159epsali projekt a plynule p\u0159epnuli na n\u011bj provoz. <\/p>\n<p>Po tom lze starou slu\u017ebu odstranit. To je m\u016fj obl\u00edben\u00fd postup, kdy\u017e je t\u0159eba z syst\u00e9mu spr\u00e1vy konfigurac\u00ed vz\u00edt a vy\u010distit n\u011bjakou slu\u017ebu a pak proj\u00edt a zkontrolovat, jestli v\u0161echny servery v produkci byly vypnuty, aby po v\u00fdvoj\u00e1\u0159\u00edch nez\u016fstaly \u017e\u00e1dn\u00e9 stopy. Repo v gitu z\u016fst\u00e1v\u00e1.<\/p>\n<p>To je v\u0161e, o \u010dem jsem cht\u011bl hovo\u0159it, jsem p\u0159ipraven diskutovat, t\u00e9ma je sporn\u00e9, mnoz\u00ed se v n\u011bm pohybovali. <\/p>\n<p><b>Na slidech bylo o tom, \u017ee jste unifikovali jazyky. Jako p\u0159\u00edklad byl resize obr\u00e1zk\u016f. Je opravdu nutn\u00e9 p\u0159\u00edsn\u011b do jednoho jazyka? Proto\u017ee resize obr\u00e1zku v PHP, no, bylo by to mo\u017en\u00e9 opravdu ud\u011blat i v Golangu.<\/b><\/p>\n<p>Ve skute\u010dnosti to nen\u00ed nutn\u00e9, stejn\u011b jako v\u0161echny praktiky. V n\u011bkter\u00fdch p\u0159\u00edpadech m\u016f\u017ee b\u00fdt dokonce ne\u017e\u00e1douc\u00ed. Ale je t\u0159eba si uv\u011bdomit, \u017ee pokud m\u00e1te ve firm\u011b 50 lid\u00ed v technick\u00e9m odd\u011blen\u00ed, z toho 45 jsou PHP v\u00fdvoj\u00e1\u0159i, 3 jsou devops\u00e1ci, kte\u0159\u00ed um\u00ed Python, Ansible, Puppet a podobn\u00e9, a jen jeden z nich p\u00ed\u0161e n\u011bjak\u00fd Go servis pro resize obr\u00e1zk\u016f, tak kdy\u017e odejde, odborn\u00e9 znalosti odch\u00e1zej\u00ed s n\u00edm. A v tomto p\u0159\u00edpad\u011b budete muset hledat specifick\u00e9ho v\u00fdvoj\u00e1\u0159e na trhu, kter\u00fd zn\u00e1 tento jazyk, zejm\u00e9na pokud je vz\u00e1cn\u00fd. To znamen\u00e1, \u017ee z organiza\u010dn\u00edho hlediska to je problematick\u00e9. Z pohledu devopsu pot\u0159ebujete ne jen klonovat n\u011bjakou hotovou sadu playbook\u016f, kter\u00e9 pou\u017e\u00edv\u00e1te k nasazen\u00ed slu\u017eeb, ale budete je muset napsat znovu. <\/p>\n<p>Pr\u00e1v\u011b te\u010f vyv\u00edj\u00edme slu\u017ebu na Node.js, a to bude pr\u00e1v\u011b platforma pro ka\u017ed\u00e9ho v\u00fdvoj\u00e1\u0159e s odd\u011blen\u00fdm jazykem. Ale sedli jsme si a p\u0159em\u00fd\u0161leli, \u017ee to stoj\u00ed za to. Tedy ot\u00e1zka je sednout si a p\u0159em\u00fd\u0161let.<\/p>\n<p><b>Jak monitorujete va\u0161e slu\u017eby? Jak shroma\u017e\u010fujete a sledujete logy?<\/b><\/p>\n<p>Logy shroma\u017e\u010fujeme v Elasticsearch a ukl\u00e1d\u00e1me je do Kibana, a v z\u00e1vislosti na tom, jestli je to produk\u010dn\u00ed nebo testovac\u00ed prost\u0159ed\u00ed, tam se pou\u017e\u00edvaj\u00ed r\u016fzn\u00e9 sb\u011bra\u010de. Kde n\u011bco jako Lumberjack, kde n\u011bco jin\u00e9ho, u\u017e si to nepamatuji. A jsou tak\u00e9 n\u011bkter\u00e1 m\u00edsta v ur\u010dit\u00fdch slu\u017eb\u00e1ch, kde nasazujeme Telegraf a odes\u00edl\u00e1me \u00fadaje n\u011bkam zvl\u00e1\u0161\u0165. <\/p>\n<p><b>Jak \u017e\u00edt s Puppet a Ansible v jednom prost\u0159ed\u00ed?<\/b><\/p>\n<p>V sou\u010dasnosti m\u00e1me dv\u011b prost\u0159ed\u00ed, jedno je Puppet, druh\u00e9 Ansible. Pracujeme na tom, abychom je hybridizovali. Ansible je skv\u011bl\u00e9 prost\u0159ed\u00ed pro po\u010d\u00e1te\u010dn\u00ed nastaven\u00ed, Puppet je \u0161patn\u00e1 v\u011bc pro po\u010d\u00e1te\u010dn\u00ed nastaven\u00ed, proto\u017ee vy\u017eaduje pr\u00e1ci rukama p\u0159\u00edmo s platformou, a Puppet zaji\u0161\u0165uje konvergenci konfigurace. To znamen\u00e1, \u017ee platforma se sama udr\u017euje v aktu\u00e1ln\u00edm stavu, a aby stroj s Ansible byl udr\u017eov\u00e1n v aktu\u00e1ln\u00edm stavu, mus\u00edte na n\u011bm pravideln\u011b spou\u0161t\u011bt playbooky. Takov\u00fd je rozd\u00edl. <\/p>\n<p><b>Jak udr\u017eujete kompatibilitu? M\u00e1te konfigurace jak v Ansible, tak v Puppet?<\/b><\/p>\n<p>Tohoto se n\u00e1m velmi t\u011b\u017eko pracuje, sna\u017e\u00edme se udr\u017eet kompatibilitu a p\u0159em\u00fd\u0161l\u00edme, jak se z toho v\u0161eho dostat pry\u010d. M\u00e1me to tak, \u017ee Puppet nahr\u00e1v\u00e1 bal\u00ed\u010dky a udr\u017euje tam n\u011bjak\u00e9 odkazy, zat\u00edmco Ansible nap\u0159\u00edklad nahr\u00e1v\u00e1 k\u00f3d a p\u0159izp\u016fsobuje tam nov\u00e9 konfigurace aplikac\u00ed.<\/p>\n<p><b>V prezentaci se mluvilo o r\u016fzn\u00fdch verz\u00edch Ruby. Jak\u00e9 \u0159e\u0161en\u00ed nab\u00edz\u00edte?<\/b><\/p>\n<p>Setkali jsme se s t\u00edm na jednom m\u00edst\u011b a mus\u00edme si to neust\u00e1le uv\u011bdomovat. Jednodu\u0161e jsme vypnuli tu \u010d\u00e1st, kter\u00e1 b\u011b\u017eela na Ruby, kter\u00e9 bylo nekompatibiln\u00ed s aplikacemi, a udr\u017eovali jsme ji odd\u011blen\u011b. <\/p>\n<blockquote><p> Letos se konference <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 Moskva<\/a><\/noindex> uskute\u010dn\u00ed 7. prosince v \u201eTechnopolisu\u201c. Do 11. listopadu p\u0159ij\u00edm\u00e1me p\u0159ihl\u00e1\u0161ky na prezentace. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Napi\u0161te<\/a><\/noindex> n\u00e1m, pokud chcete vystoupit.<\/p>\n<p>Registrace pro \u00fa\u010dastn\u00edky je otev\u0159en\u00e1, p\u0159ipojte se! \n<\/p><\/blockquote>\n<p>Zdroj: <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.3 - 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\/cs\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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\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\/cs\/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\udd47Orphan Services: druh\u00e1 strana (mikro)servisn\u00ed architektury | ProHoster","description":"\u0158editel provozu port\u00e1lu Banki.ru Andrej Nikolskij hovo\u0159il na lo\u0148sk\u00e9 konferenci","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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\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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/38981","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=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}