Pojęcie “monorepo” pochodzi z języka angielskiego i tam też zyskało swoją popularność. Technologia ta pozwala na przechowywanie wielu kodów źródłowych do domeny – jak sama nazwa mówi – w jednym (mono) repozytorium. W przeciwieństwie do monolitu, z którym często mylone jest to pojęcie, monorepo nie polega na mieszaniu źródeł. Katalogi mogą być tutaj dowolnie organizowane w zależności od programisty. Dzięki dedykowanym narzędziom, które pozwalają dopilnować porządku i zoptymalizować strukturę repozytorium, nie musi on jednak wykonywać segregacji ręcznie.
Koncept monorepo wykorzystuje wiele istotnych przedsiębiorstw – Google, Facebook, Twitter, Microsoft. Skoro wszyscy z nich wykorzystują właśnie monorepo, coś musi się w tym kryć. I tak właśnie jest. Monorepo stanowi obecnie jedno z najbardziej nowoczesnych podejść do zarządzania rozbudowanymi aplikacjami. Przemyślmy więc korzyści, jakie nam gwarantuje:
wszystko jest w jednym miejscu – nie musimy niczego kopiować i klonować; jeśli w danym miejscu przechowujemy określone ustawienia konfiguracyjne, możemy je po prostu wykorzystać, omijając próby przenoszenia i ciągłego dopasowywania do innych części systemu;
ułatwia dokonywanie zmian – wiele części systemu może zostać zmienione za pomocą jednego żądania,
zwiększa widoczność – katalogi są jasne i przejrzyste, dzięki czemu łatwo możemy znaleźć rozwiązania, które już wcześniej wykorzystywaliśmy,
ułatwia kolaborację pomiędzy częściami zespołu,
wspiera zarządzanie zależnościami,
ułatwia refaktoryzację.
Niestety, obok tych wszystkich atrakcyjnych zalet, które niesie ze sobą monorepo, pojawia się też parę istotnych wad, które warto wziąć pod uwagę przed podjęciem ostatecznej decyzji pomiędzy jednym a wieloma repozytoriami. Do głównych wad monorepo należy:
ryzyko słabej organizacji projektu spowodowane faktem, że wszystko jest w jednym miejscu – odpowiednia organizacja powinna być zatem podstawą pracy programisty w monorepo, który, zaniedbując ten obowiązek, znacznie utrudni sobie pracę;
problemy z dostępnością – chcąc udostępnić komuś jedynie część swojego projektu, nie mamy innej możliwości niż udostępnić wszystko, co zmniejsza poziom bezpieczeństwa,
możliwość wystąpienia problemów wydajnościowych – wielkie środowisko może nieco dłużej się ładować,
ryzyko tworzenia niepotrzebnych zależności.
Choć wybór między jednym a wieloma repozytoriami zależy od indywidualnych potrzeb danego projektu, coraz więcej firm decyduje się właśnie na monorepo. Technologia ta niesie ze sobą wiele zalet, obok których występuje też niestety parę wad. Na szczęście, na rynku znaleźć można wiele narzędzi programistycznych, które mogą pomóc w odpowiednim zarządzaniu paczkami danych w pojedynczym repozytorium. Aspekt ten znacznie usprawnia pracę i zmniejsza ryzyko wystąpienia wspomnianych wad.