Путь Proton Web от полирепозитория к монорепозиторию
Posted: Thu Dec 26, 2024 4:31 am
В прошлом году в Proton мы перешли от архитектуры полирепозитория к архитектуре монорепозитория, чтобы упростить управление пакетами, которые являются частью нашего стека интерфейсных веб-приложений. Некоторое время мы сталкивались с проблемами, и, рассмотрев варианты, решили, что монорепозиторий будет наиболее подходящим решением. В этой статье объясняются проблемы, с которыми мы столкнулись при настройке полирепозитория, исследуются преимущества настройки монорепозитория и описывается наш путь от полирепозитория к монорепозиторию.
Прежде чем идти дальше, когда я говорю «полирепо» и «монорепо», я имею в виду следующее:
Polyrepo: система модулей исходного кода, которые зависят друг Руководители телемаркетинга, данные телефонных номеров Канады от друга, но являются отдельными экземплярами репозитория контроля версий.
Монорепо: система модулей исходного кода, которые зависят друг от друга, но все находятся в одном экземпляре репозитория с контролем версий.
С этого момента я буду говорить «репозитории Git» или просто «репозитории» вместо «репозитории с контролем версий». И, чтобы внести ясность, Git не является обязательным условием архитектуры монорепозитория.
Начало
Proton начал с почтового клиента Proton Mail.(новое окно), в качестве единственного приложения, но с тех пор превратился в поставщика конфиденциальности, предлагающего широкий спектр продуктов, включая веб-приложения для Proton Mail, Proton Calendar(новое окно), Протон Драйв(новое окно)и учетную запись Proton, которая их всех связывает. Добавление новых приложений в наш стек привело к пропорциональному увеличению количества поддерживаемых нами репозиториев Git: по одному репозиторию на каждое приложение. Однако мы создали репозитории помимо тех, которые необходимы для наших приложений. Как вы можете себе представить, наши приложения должны иметь одинаковую функциональность, внешний вид и ощущения, даже если это разные продукты. Отсюда следует, что мы использовали репозитории для кода, который был общим для всех продуктов.
Прежде чем идти дальше, когда я говорю «полирепо» и «монорепо», я имею в виду следующее:
Polyrepo: система модулей исходного кода, которые зависят друг Руководители телемаркетинга, данные телефонных номеров Канады от друга, но являются отдельными экземплярами репозитория контроля версий.
Монорепо: система модулей исходного кода, которые зависят друг от друга, но все находятся в одном экземпляре репозитория с контролем версий.
С этого момента я буду говорить «репозитории Git» или просто «репозитории» вместо «репозитории с контролем версий». И, чтобы внести ясность, Git не является обязательным условием архитектуры монорепозитория.
Начало
Proton начал с почтового клиента Proton Mail.(новое окно), в качестве единственного приложения, но с тех пор превратился в поставщика конфиденциальности, предлагающего широкий спектр продуктов, включая веб-приложения для Proton Mail, Proton Calendar(новое окно), Протон Драйв(новое окно)и учетную запись Proton, которая их всех связывает. Добавление новых приложений в наш стек привело к пропорциональному увеличению количества поддерживаемых нами репозиториев Git: по одному репозиторию на каждое приложение. Однако мы создали репозитории помимо тех, которые необходимы для наших приложений. Как вы можете себе представить, наши приложения должны иметь одинаковую функциональность, внешний вид и ощущения, даже если это разные продукты. Отсюда следует, что мы использовали репозитории для кода, который был общим для всех продуктов.