1.02 (2) Monorepo vs Polirepo
1.02 Monorepo vs Polirepo Przed Wami kolejny odcinek podcastu PiwnicaIT. Tym razem wzięliśmy na tapet temat Monorepo vs Polirepo. Podczas rozmowy skupiliśmy się na wadach i zaletach obu podejść. Zapraszamy do słuchania. Materiały dodatkowe: The State of JS 2022: Monorepo tools How the Pros Scale Huge Software Projects // Turborepo vs Nx DevEnv: #60 Monorepo czy Polyrepo Monorepo vs Multi-Repo: Pros and Cons of Code Repository Strategies Monorepos explained Rozmawiają: Wojciech Skorupa [linkedin] Mateusz Jabłoński [www] [linkedin]
Tam też zwróciłeś uwagę podczas jednej z naszych rozmów, że te największe firmy, największe projekty na świecie od lat korzystają z Monorepo. A w tych mniejszych bardzo często szło się za hype'em, a hype często był mocno związany właśnie z Polirepo, właśnie z podejściem takim rozproszonym. No i teraz mamy tak naprawdę dużo plusów, dużo minusów. Dla mnie największym plusem w przypadku, jeśli chodzi o Monorepo, jest to, że mamy tak naprawdę jedno źródło kodu, Tak naprawdę mamy wszystko w jednym miejscu. Nie musimy rozpraszać swojej uwagi pomiędzy poszczególnymi repozytoriami, poszczególnymi projektami.
Natomiast w Monorepo mamy wszystko w jednym codebase. Więc mając wszystko w jednym codebase, tak naprawdę ogranicza nas tylko ścieżka do pliku. I ja na przykład ten problem widzę w projekcie, w którym jestem. Mamy tak jakby dwie aplikacje, które są w jednym repo. Ta jedna aplikacja jest starsza od tej, którą aktualnie ja wytwarzam. I często było tak, że część modułów, które zostały wszyte w tą pierwszą aplikację, nigdy nie zostało wydzielonych do jakiegoś shared catalogu, shared directory czy cokolwiek innego, jakiegoś commona. To de facto powoduje, że jedna aplikacja, która jakoby jest niezależna, korzysta z zależności, jak ma po prostu rzeczy, które zostały wpisane w tą pierwszą aplikację.
Tutaj tych narzędzi jest dość wiele. Google, o którym wspominałem, korzysta i stworzył takie narzędzie, które nazywa się Bazel. Niestety jest ono dość skomplikowane. Z kolei Microsoft ma Rush, o ile dobrze pamiętam. Więc zdecydowanie nawet w momencie, kiedy żyjemy w tej architekturze mikroserwisowej, o której też wspominałeś Mateuszu, to nie jest tak, że musimy rezygnować z innych języków czy z innych frameworków. Dalej możemy korzystać z tych dobrodziejstw Monorepo, dając sobie tą wolność egzystencji w architekturze mikroserwisów i wolności, którą one nam dają. Okej, no ale jeżeli spojrzymy na to głębiej, to żeby utrzymywać w jednym Monorepo wiele języków najczęściej musielibyśmy skorzystać z jakiegoś dodatkowego narzutu w postaci jakiegoś frameworka najczęściej.
No i tutaj pojawiają się różne frameworki, na przykład NX, który, z tego co czytałem, wspiera różne technologie w ramach jednego Monorepo. No i teraz pytanie, czy warto w ogóle wrzucać dodatkowy narzut technologiczny w postaci frameworka, który będzie stał nad wszystkim i który będzie tym w odpowiedni sposób zarządzał, przygotowywał nam te projekty. Czy miałeś w ogóle do czynienia z takimi frameworkami jak NX? Korzystałbyś z takiego frameworka w momencie kiedy miałbyś taki projekt? Wiele różnych języków, różne technologie, różne frameworki i wszystko trzeba umieścić we tym Monorepo.
1.02 2 Monorepo, Mateusz Jabłoński. No istnieje i daje sobie całkiem nieźle radę. Chociaż tutaj ciekawe są też rozwiązania typu NPM Workspaces i Yarn Workspaces, z których Turbo Repo korzysta. Myślę, że to też jest ciekawe, że nawet NPM czy też Yarn zaczynają wspierać jakby natywnie właśnie to podejście Monorepo.
Pokazano wszystkie 5 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Mateusz i Wojtek przedstawiają temat odcinka i opisują, jakie problemy mogą pojawić się podczas wybierania między Monorepo a Polirepo.
Mateusz opisuje swoje doświadczenie z obu podejść, podkreślając, że Monorepo ma więcej plusów, ale i minusy.
Mateusz dodaje minusy Monorepo, takie jak trudności z wersjonowaniem i ograniczenia dostępu do części projektu.
Wojtek omawia problem dzielenia się kodem w Monorepo, podkreślając, że może prowadzić do duplikacji kodu.
Wojtek omawia minusy Polirepo, takie jak trudności z zarządzaniem zależnościami i utrzymaniem.
Mateusz omawia plusy Polirepo, takie jak łatwiejsze zarządzanie zależnościami i utrzymanie.
Wojtek i Mateusz poruszają temat refaktoryzacji i jej trudności w obu podejściach.
Mateusz i Wojtek omawiają relacje między członkami zespołu i wpływ podziału na front-end i back-end.
Mateusz omawia zalety Polirepo, takie jak łatwiejsze zarządzanie zależnościami i utrzymanie.
Mateusz i Wojtek dyskutują o tym, kiedy Monorepo czy Polirepo jest lepszym rozwiązaniem.
Wojtek omawia trudności refaktoryzacji w obu podejściach.
Mateusz sugeruje, że testy mogą być najlepszym rozwiązaniem dla decyzji projektowych.
Rozmowa kontynuuje temat Monorepo i Polirepo, omawiając korzyści i wady obu podejść, a także narzędzia do zarządzania tą architekturą.
Tak, wybrałbym Turborepo. Jest to świetny projekt, sponsorowany przez Vercel.
Rozdziały i streszczenia generowane automatycznie. Pełna transkrypcja nie jest publikowana — wyszukaj frazę, aby zobaczyć dopasowane fragmenty.
„Tak, wybrałbym Turborepo. Jest to świetny projekt, sponsorowany przez Vercel."
Kliknij, aby znaleźć fragmenty, w których pada.
1.02 Monorepo vs Polirepo
Przed Wami kolejny odcinek podcastu PiwnicaIT. Tym razem wzięliśmy na tapet temat Monorepo vs Polirepo. Podczas rozmowy skupiliśmy się na wadach i zaletach obu podejść. Zapraszamy do słuchania.
Materiały dodatkowe:
The State of JS 2022: Monorepo tools How the Pros Scale Huge Software Projects // Turborepo vs Nx DevEnv: #60 Monorepo czy Polyrepo Monorepo vs Multi-Repo: Pros and Cons of Code Repository Strategies Monorepos explainedRozmawiają:
Wojciech Skorupa [linkedin] Mateusz Jabłoński [www] [linkedin]