Правильная организация работы над сложным проектом - это половина его успеха. В своей работе мы часто сталкиваемся с необходимостью работы над сайтом параллельно с другой командой разработчиков или фрилансерами. Распределение уровней доступа, отслеживание и контроль версий сайта позволяют не терять результаты работы, оперативно находить и устранять ошибки, разбивать комплексные задачи на простые и распределять их между программистами.
В первую очередь разворачивается несколько сред разработки. Каждая среда получает сильные и независимые друг от друга файлы, базу данных, интернет-адрес. Как пример, разделяем среды на:
Мы используем bitbucket.org, так как даже бесплатная версия позволяет организовать приватный репозиторий, но принципы работы одинаковые для всех систем контроля версий. “Боевая” (prod) версия сайта получает изменения только через bitbucket. У каждого разработчика своя ветка (branch) в репозитории, где он работает и изменяет файлы и базы данных согласно своей задаче.
Далее правки и выполнение других задач уже начинаются с пункта 3.
Для Bitbucket мы написали и внедрили нестандартный скрипт, который вызывается триггером репозитория (Webhook). Этот код в автоматическом режиме даёт команду на обновление нужной среды разработки, закреплённой за внесшим изменения разработчиком. Далее правки и работы тестирует представитель заказчика. По приёмке работ главный разработчик вносит изменения на основной (prod) сайт:
Несмотря на внешнее усложнение процесса, такой подход позволяет избежать проблем с совместным доступом к файлам и базам данных и исключает появление временного или непроверенного кода на основном сайте. Также такой подход повышает уровень безопасности - исключается прямой доступ исполнителей к файлам и базе данных.