{"id":34744,"date":"2019-10-31T22:00:10","date_gmt":"2019-10-31T19:00:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monorepozitorii-pozhalujsta-nado\/"},"modified":"2019-10-31T22:00:10","modified_gmt":"2019-10-31T19:00:10","slug":"monorepozitorii-pozhalujsta-nado","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/monorepozitorii-pozhalujsta-nado","title":{"rendered":"Monorepozit\u00f3riumok: k\u00e9rlek, sz\u00fcks\u00e9ges.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Monorepozit\u00f3riumok: k\u00e9rlek, sz\u00fcks\u00e9ges.\" src=\"\/wp-content\/uploads\/2019\/05\/a973a60a06e7b336c08db26fa6d72149.JPG\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>A cikk ford\u00edt\u00e1sa a kurzus hallgat\u00f3i sz\u00e1m\u00e1ra k\u00e9sz\u00fclt <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/g5Rz\/\">az \u00faj ford\u00edt\u00e1st osztjuk meg veletek. Induljunk.<\/a><\/noindex> az OTUS oktat\u00e1si projektben.<\/em><\/p>\n<p>Monorepozit\u00f3riumot kell v\u00e1lasztania, mert az a viselked\u00e9s, amelyet a csapataidban el\u0151seg\u00edt - az \u00e1tl\u00e1that\u00f3s\u00e1g \u00e9s a kollekt\u00edv felel\u0151ss\u00e9g, k\u00fcl\u00f6n\u00f6sen a csapatok n\u00f6veked\u00e9sekor. Egy\u00e9bk\u00e9nt is befektet\u00e9sre lesz sz\u00fcks\u00e9ged az eszk\u00f6z\u00f6kbe, de mindig jobb, ha az alap\u00e9rtelmezett viselked\u00e9s az, amelyet a csapataidban l\u00e1tni szeretn\u00e9l. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h1 id=\"pochemu-my-govorim-ob-etom\">Mi\u00e9rt besz\u00e9l\u00fcnk err\u0151l?<\/h1>\n<p><\/p>\n<p>Matt Klein \u00edrt egy cikket <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@mattklein123\/monorepos-please-dont-e9a279be011b\">\u201eMonorepos: K\u00e9rlek, ne!\u201d<\/a><\/noindex>\u200a (ford\u00edt\u00f3 megjegyz\u00e9se: ford\u00edt\u00e1s a Habr-on <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/435306\/\">\u201eMonorepozit\u00f3riumok: k\u00e9rlek, ne tedd\u201d<\/a><\/noindex>). Szeretem Mattet, szerintem nagyon okos, \u00e9s el kell olvasnod a v\u00e9lem\u00e9ny\u00e9t. Eredetileg egy Twitter-en k\u00e9sz\u00edtett felm\u00e9r\u00e9st tett k\u00f6zz\u00e9:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Monorepozit\u00f3riumok: k\u00e9rlek, sz\u00fcks\u00e9ges.\" src=\"\/wp-content\/uploads\/2019\/05\/edbc65b80288045e08394821c17a77a9.JPG\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ford\u00edt\u00e1s:<\/em><br \/>\n<em>Ezen az \u00faj\u00e9vi napon arr\u00f3l fogok vitatkozni, hogy mennyire abszurdak a monorepo-k. 2019 \u00e9szrev\u00e9tlen\u00fcl kezd\u0151d\u00f6tt. Ennek szellem\u00e9ben aj\u00e1nlok egy felm\u00e9r\u00e9st. Kik a legnagyobb fanatikusok? T\u00e1mogat\u00f3k:<\/em><br \/>\n\u2014 <em>Monorepo<\/em><br \/>\n\u2014 <em>Rust<\/em><br \/>\n\u2014 <em>Hib\u00e1s felm\u00e9r\u00e9s \/ mindkett\u0151<\/em><\/p>\n<p><\/p>\n<p>A v\u00e1laszom ez volt: \u201e\u00c9n val\u00f3j\u00e1ban mindk\u00e9t ember vagyok\u201d. Ahelyett, hogy arr\u00f3l besz\u00e9ln\u00e9nk, hogy a Rust milyen drog, n\u00e9zz\u00fck meg, mi\u00e9rt gondolom, hogy t\u00e9ved a monorepo-kkal kapcsolatban. Egy kis inform\u00e1ci\u00f3 r\u00f3lam. A Chef Software technikai igazgat\u00f3ja vagyok. K\u00f6r\u00fclbel\u00fcl 100 m\u00e9rn\u00f6k\u00fcnk van, egy k\u00f6r\u00fclbel\u00fcl 11-12 \u00e9ves k\u00f3db\u00e1zissal \u00e9s 4 f\u0151 term\u00e9kkel. Ennek a k\u00f3dnak egy r\u00e9sze polirepo-ban van (ez az \u00e9n kiindul\u00e1si poz\u00edci\u00f3m), m\u00edg egy r\u00e9sze monorepo-ban (ez a jelenlegi poz\u00edci\u00f3m).<\/p>\n<p><\/p>\n<p>Miel\u0151tt elkezden\u00e9m: minden \u00e9rvet, amit itt felhozok, mindk\u00e9t t\u00edpus\u00fa t\u00e1rol\u00f3ra alkalmazni fogok. V\u00e9lem\u00e9nyem szerint nincs technikai ok arra, hogy mi\u00e9rt kellene v\u00e1lasztania b\u00e1rmelyik t\u00e1rol\u00f3t\u00edpus mellett. B\u00e1rmelyik megk\u00f6zel\u00edt\u00e9st m\u0171k\u00f6d\u0151k\u00e9pess\u00e9 teheti. Sz\u00edvesen besz\u00e9lek err\u0151l, de nem \u00e9rdekelnek a mesters\u00e9ges technikai okok, amelyek az egyikr\u0151l a m\u00e1sikra val\u00f3 f\u00f6l\u00e9nyr\u0151l sz\u00f3lnak. <\/p>\n<p><\/p>\n<p>Egyet\u00e9rtek Matt v\u00e9lem\u00e9ny\u00e9nek els\u0151 r\u00e9sz\u00e9vel:<\/p>\n<p><\/p>\n<p><em>Mert nagy l\u00e9pt\u00e9kben a monorepo ugyanazokat a probl\u00e9m\u00e1kat fogja kezelni, mint a polirepo, de arra fog \u00f6szt\u00f6n\u00f6zni, hogy a k\u00f3dod er\u0151sebb \u00f6sszefon\u00f3d\u00e1s\u00e1val dolgozz, \u00e9s hihetetlen er\u0151fesz\u00edt\u00e9seket ig\u00e9nyel a verzi\u00f3kezel\u0151 rendszered sk\u00e1l\u00e1zhat\u00f3s\u00e1g\u00e1nak n\u00f6vel\u00e9s\u00e9ben.<\/em><\/p>\n<p><\/p>\n<p>Ugyanazokkal a probl\u00e9m\u00e1kkal kell szemben\u00e9znie, f\u00fcggetlen\u00fcl att\u00f3l, hogy monorepo-t vagy polirepo-t v\u00e1laszt. Hogyan kezelik a kiad\u00e1sokat? Mi a megk\u00f6zel\u00edt\u00e9s\u00fck a friss\u00edt\u00e9sekhez? Visszafel\u00e9 kompatibilit\u00e1s? Kereszt-f\u00fcgg\u0151s\u00e9gek a projektek k\u00f6z\u00f6tt? Milyen architektur\u00e1lis st\u00edlusok elfogadhat\u00f3ak? Hogyan ir\u00e1ny\u00edtja az \u00e9p\u00edt\u00e9si \u00e9s tesztel\u00e9si infrastrukt\u00far\u00e1j\u00e1t? A lista v\u00e9gtelen. \u00c9s mindezeket meg kell oldania, ahogy n\u00f6vekszik. Nincs ingyen sajt.<\/p>\n<p><\/p>\n<p>Gondolom, Matt \u00e9rve hasonl\u00f3 a sok m\u00e9rn\u00f6k (\u00e9s menedzser) n\u00e9zeteihez, akiket tisztelek. Ez egy m\u00e9rn\u00f6ki szempontb\u00f3l j\u00f6n, aki egy komponensen dolgozik, vagy egy csapat, amely egy komponensen dolgozik. Olyan dolgokat hallanak, mint:<\/p>\n<p><\/p>\n<ul>\n<li>A k\u00f3dalap terjedelmes \u2013 nem sz\u00fcks\u00e9gem minden erre a sok felesleges dologra.<\/li>\n<li>Neh\u00e9z ezt tesztelni, mert ellen\u0151riznem kell az \u00f6sszes felesleges dolgot, amire nincs sz\u00fcks\u00e9gem.<\/li>\n<li>Neh\u00e9z k\u00fcls\u0151 f\u00fcgg\u0151s\u00e9gekkel dolgozni.<\/li>\n<li>Sz\u00fcks\u00e9gem van a saj\u00e1t verzi\u00f3kezel\u0151 virtu\u00e1lis rendszereimre.<\/li>\n<\/ul>\n<p><\/p>\n<p>Hat\u00e1rozottan mindezek az \u00e9rvek megalapozottak. Ez mindk\u00e9t esetben \u00edgy van \u2014 a polirep\u00f3n\u00e1l van felesleges dolgom, azon k\u00edv\u00fcl, ami az \u00e9p\u00edtkez\u00e9shez sz\u00fcks\u00e9ges... Lehet, hogy m\u00e1s felesleges dolgokra is sz\u00fcks\u00e9gem van. Ez\u00e9rt \"csak\" olyan eszk\u00f6z\u00f6ket k\u00e9sz\u00edtek, amelyek checkout-olj\u00e1k az eg\u00e9sz projektet. Vagy l\u00e9trehozok egy hamis monorep\u00f3t alm\u00f3dokkal. Eg\u00e9sz nap j\u00e1rk\u00e1lhatunk e k\u00f6r\u00fcl. De azt gondolom, hogy Matt \u00e9rve figyelmen k\u00edv\u00fcl hagyja a f\u0151 okot, amit \u00e9n meglehet\u0151sen er\u0151sen elforgattam a monorepo jav\u00e1ra:<\/p>\n<p><\/p>\n<h1 id=\"on-provociruet-obschenie-i-pokazyvaet-problemy\">Fokozza a kommunik\u00e1ci\u00f3t \u00e9s bemutatja a probl\u00e9m\u00e1kat.<\/h1>\n<p><\/p>\n<p>Amikor megosztjuk a repo-kat, de facto koordin\u00e1ci\u00f3s \u00e9s \u00e1tl\u00e1that\u00f3s\u00e1gi probl\u00e9m\u00e1t teremt\u00fcnk. Ez megfelel annak, ahogyan a csapatokra gondolunk (f\u0151leg ahogyan az egyes tagok gondolkodnak r\u00f3luk): felel\u0151ss\u00e9get v\u00e1llalunk egy adott komponens\u00e9rt. Relat\u00edv elszigetelts\u00e9gben dolgozunk. A hat\u00e1rok r\u00f6gz\u00edtve vannak a csapatomra \u00e9s a komponens(- ek)re, amin dolgozunk.<\/p>\n<p><\/p>\n<p>Ahogy az architekt\u00fara egyre bonyolultabb\u00e1 v\u00e1lik, egy csapat m\u00e1r nem tudja egyed\u00fcl ir\u00e1ny\u00edtani azt. Nagyon kev\u00e9s m\u00e9rn\u00f6k tudja a teljes rendszert a fej\u00e9ben tartani. Tegy\u00fck fel, hogy az A k\u00f6z\u00f6s komponenst kezelj\u00fck, amelyet a B, C \u00e9s D csapatok haszn\u00e1lnak. Az A csapat refaktori\u00e1lja, jav\u00edtja az API-t, valamint megv\u00e1ltoztatja a bels\u0151 megval\u00f3s\u00edt\u00e1st. Ennek eredm\u00e9nyek\u00e9nt a v\u00e1ltoz\u00e1sok h\u00e1tramenetileg nem kompatibilisek. Milyen tan\u00e1csot adna?<\/p>\n<p><\/p>\n<ul>\n<li>Keresse meg az \u00f6sszes helyet, ahol a r\u00e9gi API-t haszn\u00e1lj\u00e1k.<\/li>\n<li>Vannak olyan helyek, ahol az \u00faj API nem haszn\u00e1lhat\u00f3?<\/li>\n<li>Meg tudja jav\u00edtani \u00e9s tesztelni a t\u00f6bbi komponenst, hogy biztos legyen benne, hogy nem fognak hib\u00e1san m\u0171k\u00f6dni?<\/li>\n<li>Ezek a csapatok most azonnal ellen\u0151rizhetik a v\u00e1ltoztat\u00e1sait?<\/li>\n<\/ul>\n<p><\/p>\n<p>Vegye figyelembe, hogy ezek a k\u00e9rd\u00e9sek nem f\u00fcggnek a t\u00e1rol\u00f3 t\u00edpus\u00e1t\u00f3l. Meg kell tal\u00e1lnia a B, C \u00e9s D csapatokat. Besz\u00e9lnie kell vel\u00fck, kider\u00edteni az id\u0151beoszt\u00e1sukat, meg\u00e9rteni a priorit\u00e1saikat. Legal\u00e1bb rem\u00e9lj\u00fck, hogy ezt megteszi.<\/p>\n<p><\/p>\n<p>Val\u00f3j\u00e1ban senki sem szeretne ezzel foglalkozni. Sokkal kev\u00e9sb\u00e9 izgalmas, mint csak jav\u00edtani a fr\u00e1nya API-t. Ez eg\u00e9sz emberi \u00e9s bonyolult. A polirepozit\u00f3riumban egyszer\u0171en v\u00e9gezhet m\u00f3dos\u00edt\u00e1sokat, beny\u00fajthatja fel\u00fclvizsg\u00e1latra azoknak, akik ezzel a komponenssel foglalkoznak (val\u00f3sz\u00edn\u0171leg nem a B, C vagy D), \u00e9s tov\u00e1bb l\u00e9phet. A B, C \u00e9s D csapatok egy ideig maradhatnak a jelenlegi verzi\u00f3jukon. Friss\u00edteni fognak, amikor r\u00e1j\u00f6nnek az \u00d6n zsenialit\u00e1s\u00e1ra!<\/p>\n<p><\/p>\n<p>A monorepozit\u00f3riumban a felel\u0151ss\u00e9g alap\u00e9rtelmez\u00e9s szerint \u00e1thelyez\u0151dik. Az A csapat megv\u00e1ltoztatja a saj\u00e1t komponens\u00e9t, \u00e9s ha nem figyel, azonnal t\u00f6nkreteszi a B, C \u00e9s D-t. Ez azt eredm\u00e9nyezi, hogy a B, C \u00e9s D csapatok megjelennek az A ajtaj\u00e1ban, azon t\u0171n\u0151dve, mi\u00e9rt t\u00f6lt\u00f6tte le az A csapat a buildet. Ez megtan\u00edtja az A-t, hogy nem hagyhatja figyelmen k\u00edv\u00fcl a fenti list\u00e1mat. Besz\u00e9lni\u00fck kell arr\u00f3l, hogy mit fognak tenni. El tudnak mozdulni a B, C \u00e9s D? Mi van, ha a B \u00e9s C tudnak, de a D szorosan kapcsol\u00f3dik a r\u00e9gi algoritmus viselked\u00e9s\u00e9nek mell\u00e9khat\u00e1s\u00e1hoz?<\/p>\n<p><\/p>\n<p>Ezut\u00e1n besz\u00e9ln\u00fcnk kell arr\u00f3l, hogy hogyan jutunk ki ebb\u0151l a helyzetb\u0151l:<\/p>\n<p><\/p>\n<ol>\n<li>T\u00e1mogat t\u00f6bb bels\u0151 API-t, m\u00edg a r\u00e9gi algoritmus elavultnak lesz nyilv\u00e1n\u00edtva, am\u00edg a D le nem tudja \u00e1ll\u00edtani a haszn\u00e1lat\u00e1t.<\/li>\n<li>T\u00e1mogat t\u00f6bb verzi\u00f3t a kiad\u00e1sokban, egy r\u00e9gi interf\u00e9sszel, egy \u00fajjal.<\/li>\n<li>A v\u00e1ltoz\u00e1sok A kiad\u00e1s\u00e1nak k\u00e9sleltet\u00e9se addig, am\u00edg egyszerre a B, C \u00e9s D csapatok el nem tudj\u00e1k fogadni.<\/li>\n<\/ol>\n<p><\/p>\n<p>Tegy\u00fck fel, hogy v\u00e1lasztottunk 1-et, n\u00e9h\u00e1ny API-t. Ebben az esetben k\u00e9t darab k\u00f3dunk van. A r\u00e9gi \u00e9s az \u00faj. El\u00e9g k\u00e9nyelmes bizonyos helyzetekben. Visszatessz\u00fck a r\u00e9gi k\u00f3dot, elavultnak (deprecated) jel\u00f6lj\u00fck, \u00e9s egyeztetj\u00fck a D csapattal a t\u00f6rl\u00e9s \u00fctemez\u00e9s\u00e9t. L\u00e9nyeg\u00e9ben azonos a poly- \u00e9s a monorepo eset\u00e9ben.<\/p>\n<p><\/p>\n<p>T\u00f6bb verzi\u00f3 kiad\u00e1s\u00e1hoz sz\u00fcks\u00e9g\u00fcnk van egy \u00e1gra. Most k\u00e9t komponens\u00fcnk van \u2014 A1 \u00e9s A2. A B \u00e9s C csapatok az A2-t haszn\u00e1lj\u00e1k, m\u00edg D az A1-et. Sz\u00fcks\u00e9g\u00fcnk van arra, hogy minden komponens k\u00e9szen \u00e1lljon a kiad\u00e1sra, mert miel\u0151tt D tov\u00e1bbl\u00e9phet, biztons\u00e1gi friss\u00edt\u00e9sekre \u00e9s m\u00e1s hibajav\u00edt\u00e1sokra lehet sz\u00fcks\u00e9g. A polirepo eset\u00e9ben ezt elrejthetj\u00fck egy hossz\u00fa \u00e9let\u0171 \u00e1gon, ami j\u00f3l m\u0171k\u00f6dik. A monorep\u00f3ban k\u00e9nyszer\u00edtve l\u00e9trehozzuk a k\u00f3dot egy \u00faj modulban. A D csapatnak tov\u00e1bbra is m\u00f3dos\u00edtania kell a \u201er\u00e9gi\u201d komponenst. Mindenki l\u00e1thatja az \u00e1r\u00e1t, amit itt fizet\u00fcnk \u2014 mostant\u00f3l k\u00e9tszer annyi k\u00f3dunk van, \u00e9s minden hibajav\u00edt\u00e1st, amelyet az A1-re \u00e9s A2-re alkalmazunk, mindkett\u0151re alkalmazni kell. Az \u00e1gak haszn\u00e1lat\u00e1val a polirepon\u00e1l\u00e1s sor\u00e1n ez a cherry-pick m\u00f6g\u00e9 rejtve van. Az \u00e1r\u00e1t alacsonyabbnak tartjuk, mert ott nincs duplik\u00e1ci\u00f3. Gyakorlatilag az \u00e1r ugyanaz: k\u00e9t, f\u0151k\u00e9nt azonos k\u00f3dalapot fogsz l\u00e9trehozni, kiadni \u00e9s karbantartani, am\u00edg nem tudsz elt\u00e1vol\u00edtani egyet k\u00f6z\u00fcl\u00fck. A k\u00fcl\u00f6nbs\u00e9g annyi, hogy a monorepo eset\u00e9ben ez a f\u00e1jdalom k\u00f6zvetlen \u00e9s szem el\u0151tt van. <strong>Ez m\u00e9g rosszabb, \u00e9s ez j\u00f3.<\/strong><\/p>\n<p><\/p>\n<p>V\u00e9gre eljutottunk a harmadik ponthoz. A kiad\u00e1s k\u00e9sleltet\u00e9se. Lehet, hogy A m\u00f3dos\u00edt\u00e1sai jav\u00edtani fogj\u00e1k A csapat \u00e9let\u00e9t. Fontos, de nem s\u00fcrg\u0151s. Meg tudjuk v\u00e1rni? A monorep\u00f3ban arra \u00f6szt\u00f6n\u00f6zz\u00fck magunkat, hogy r\u00f6gz\u00edts\u00fck az artefaktumot. Term\u00e9szetesen besz\u00e9l\u00fcnk err\u0151l D csapattal. Csak maradjatok a r\u00e9gi verzi\u00f3n, am\u00edg utol nem \u00e9rtek! Ez a \u201em\u00f3kusker\u00e9k\u201d j\u00e1t\u00e9kra \u00f6szt\u00f6n\u00f6z. A csapat A folyamatosan dolgozik a kompenens\u00e9n, figyelmen k\u00edv\u00fcl hagyva, hogy a csapat D egyre elavultabb verzi\u00f3t haszn\u00e1l (ez D csapat probl\u00e9m\u00e1ja, h\u00fcly\u00e9k). Ek\u00f6zben D csapat kifejezetten rossz szemmel n\u00e9zi A csapat hanyag hozz\u00e1\u00e1ll\u00e1s\u00e1t a k\u00f3d stabilit\u00e1s\u00e1hoz, ha egy\u00e1ltal\u00e1n r\u00f3la besz\u00e9lnek. H\u00f3napok telnek el. V\u00e9g\u00fcl D csapat \u00fagy d\u00f6nt, hogy megn\u00e9zi a friss\u00edt\u00e9si lehet\u0151s\u00e9get, de A-ban csak m\u00e9g t\u00f6bb v\u00e1ltoz\u00e1s t\u00f6rt\u00e9nt. A csapat A alig eml\u00e9kszik, mikor \u00e9s hogyan rombolt\u00e1k le D-t. A friss\u00edt\u00e9s f\u00e1jdalmasabb \u00e9s t\u00f6bb id\u0151t vesz ig\u00e9nybe. Ami tov\u00e1bb k\u00fcldi lefel\u00e9 a priorit\u00e1slist\u00e1n. Eg\u00e9szen addig a napig, am\u00edg nem mer\u00fcl fel egy biztons\u00e1gi probl\u00e9ma A-ban, ami arra k\u00e9nyszer\u00edt minket, hogy \u00e1gazatot k\u00e9sz\u00edts\u00fcnk. A csapat A-nak vissza kell mennie az id\u0151ben, megkeresni azt a pillanatot, amikor D stabil volt, jav\u00edtani a probl\u00e9m\u00e1t, \u00e9s el\u0151k\u00e9sz\u00edteni a kiad\u00e1sra. <strong>Ez de facto v\u00e1laszt\u00e1s, amit az emberek hoznak, \u00e9s ez hat\u00e1rozottan a legrosszabb.<\/strong> \u00dagy t\u0171nik, hogy ez j\u00f3 mind A, mind D csapat\u00e1nak, am\u00edg figyelmen k\u00edv\u00fcl tudjuk hagyni egym\u00e1st.<\/p>\n<p><\/p>\n<p>A monorep\u00f3ban a harmadik - t\u00e9nyleg nem opci\u00f3. K\u00e9t m\u00f3don kell megbirk\u00f3znod a helyzettel. L\u00e1tni kell a k\u00e9t kiad\u00e1si \u00e1g k\u00f6lts\u00e9geit. Meg kell tanulnod megv\u00e9deni magad az inkompatibilit\u00e1st t\u00f6r\u0151 friss\u00edt\u00e9sek ellen. De a legfontosabb: <em>nem tudod elker\u00fclni a neh\u00e9z besz\u00e9lget\u00e9seket.<\/em><\/p>\n<p><\/p>\n<p>Tapasztalatom szerint, amikor a csapatok nagyokk\u00e1 v\u00e1lnak, m\u00e1r nem lehets\u00e9ges az eg\u00e9sz rendszer fejben tart\u00e1sa, ami a legfontosabb r\u00e9sz. Fejlesztened kell a k\u00fcl\u00f6nbs\u00e9gek l\u00e1that\u00f3s\u00e1g\u00e1t a rendszerben. Akt\u00edvan dolgoznod kell azon, hogy \u00f6szt\u00f6n\u00f6zd a csapatokat, hogy ne csak a saj\u00e1t komponens\u00fckre figyeljenek, hanem a t\u00f6bbi csapat \u00e9s a felhaszn\u00e1l\u00f3k munk\u00e1j\u00e1ra is.<\/p>\n<p><\/p>\n<p>Igen, l\u00e9trehozhat olyan eszk\u00f6z\u00f6ket, amelyek pr\u00f3b\u00e1lnak megoldani a polirepozit\u00f3riumok probl\u00e9m\u00e1j\u00e1t. De a folyamatos sz\u00e1ll\u00edt\u00e1s (continuous delivery) \u00e9s a nagyv\u00e1llalati automatiz\u00e1l\u00e1s ter\u00e9n szerzett tapasztalataim azt mondj\u00e1k, hogy az alap\u00e9rtelmezett viselked\u00e9s, ha nem haszn\u00e1lnak extra eszk\u00f6z\u00f6ket, az az, amit elv\u00e1rnak az emberek. <strong>A polirepozit\u00f3rium alap\u00e9rtelmezett viselked\u00e9se a szepar\u00e1ci\u00f3, ez a l\u00e9nyeg. A monorepozit\u00f3rium alap\u00e9rtelmezett viselked\u00e9se a k\u00f6z\u00f6s felel\u0151ss\u00e9g \u00e9s \u00e1tl\u00e1that\u00f3s\u00e1g, ez a l\u00e9nyeg.<\/strong> Mindk\u00e9t esetben olyan eszk\u00f6zt fogok l\u00e9trehozni, amely seg\u00edt kisim\u00edtani a neh\u00e9zs\u00e9geket. Vezet\u0151k\u00e9nt mindig a monorepozit\u00f3rium mellett d\u00f6nt\u00f6k, mert az eszk\u00f6z\u00f6knek er\u0151s\u00edteni\u00fck kell azt a kult\u00far\u00e1t, amelyet szeretn\u00e9k, \u00e9s a kult\u00fara a kis d\u00f6nt\u00e9sekb\u0151l \u00e9s a csapat napi munk\u00e1j\u00e1b\u00f3l sz\u00e1rmazik.<\/p>\n<p class=\"for_users_only_msg\">Csak a regisztr\u00e1lt felhaszn\u00e1l\u00f3k vehetnek r\u00e9szt a szavaz\u00e1son. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">K\u00e9rem, jelentkezzen be.<\/a><\/noindex>, k\u00e9rem.<\/p>\n<h2 class=\"default-block__polling-title\">Ki a nagyobb fanatikus? T\u00e1mogat\u00f3k:<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Monorepo<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Rust<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Hib\u00e1s felm\u00e9r\u00e9s \/ mindkett\u0151<\/p>\n<\/li>\n<\/ul>\n<p>    33 felhaszn\u00e1l\u00f3 szavazott. 13 felhaszn\u00e1l\u00f3 tart\u00f3zkodott.<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/453958\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb \u0432 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 OTUS. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0443\u0447\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26181,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34744","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=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/monorepozitorii-pozhalujsta-nado\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0430\u0434\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/monorepozitorii-pozhalujsta-nado\" \/>\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:00:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00: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\udd47Monorepozit\u00f3riumok: k\u00e9rlek, sz\u00fcks\u00e9ges | ProHoster","description":"A cikk ford\u00edt\u00e1sa di\u00e1kok sz\u00e1m\u00e1ra k\u00e9sz\u00fclt.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/monorepozitorii-pozhalujsta-nado","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0430\u0434\u043e | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/monorepozitorii-pozhalujsta-nado","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:00:10+00:00","article:modified_time":"2019-10-31T19:00:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34744","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-21 20:28:56","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:15:38","updated":"2026-01-21 20:28:56","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=34744"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34744\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/26181"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=34744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=34744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=34744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}