Куаныш!

Большие репозитории создают три проблемы — сильное зацепление, ненужную коммуникацию и сложный деплой.

Сильное зацепление

О зацеплении и связности

Стив Макконнел. Совершенный код. Русская редакция, 2019

Когда фронтенд и бэкенд лежат рядом, есть большой соблазн зацепить их вместе — к примеру, вставить какой‑нибудь CSRF‑токен прямо в HTML, который запускает ваше фронтенд‑приложение.

О зацеплении и связности

Стив Макконнел. Совершенный код. Русская редакция, 2019

Пока проект состоит из одного фронтенда и одного бэкенда — это не очень страшно. Но как только вы решите добавить ещё один фронтенд — скажем, сделать мобильное приложение — вам придётся решать все отложенные проблемы интеграции: придумывать протоколы взаимодействия, учиться проксировать запросы или работать с CORS.

Если бы проекты были разъединены с самого начала, у вас бы сами собой появились удобные для работы соглашения и протоколы — REST или GraphQL, авторизация через JWT. Было бы проще привлекать внешние команды — ведь им не приходилось бы изучать код вашего бэкенда, а вам — его дорабатывать под каждый новый фронтенд.

Ненужная коммуникация

В проекте с раздельными репозиториями фронтендеры и бэкендеры никогда не поспорят, куда класть index.html и в какой момент лучше запускать webpack, — каждый будет пилить свой проект, используя любимые подходы.

Бэкендеры не будут думать об инвалидации кэша CSS‑файлов, а фронтендеры не будут знать ничего о маршрутизации запросов. Если у бэкендеров сломалась публикация, фронтендеры могут не ждать, пока её починят, — у них есть отдельный процесс, который обновляет сервер независимо.

Сложный деплой

Используя большие репозитории, вы лишаете себя целого семейства сервисов, которые облегчают работу по публикации вашего приложения. К примеру, Netlify без единой настройки может опубликовать ваш фронтенд на своих серверах, с CDN, HTTP2 и всеми актуальными технологиями. Проекты вроде Zappa и Claudia делают то же самое с бэкендом на питоне и яваскрипте.

К сожалению, если такой сервис не поймёт, что именно лежит у вас в репозитории, то он не сможет вам помочь. Скажем, Netlify наверняка спасует, если увидит репозиторий с Django, в котором фронтенд запрятан куда‑то глубоко и собирается средствами фреймворка.

P. S. Это был совет об управлении разработкой. Хотите больше знать о планировании спринтов, управлении продуктом или о настройке инфраструктуры? Присылайте вопросы.
Управление проектомВеб‑разработка
Отправить
Поделиться
Запинить

Рекомендуем другие советы