Drakon
Новичок
Тема касается того, как правильно организовать процесс работы с распределённой командой программистов. Если у кого-то есть опыт в этом вопросе, буду рад пообщаться, либо проконсультироваться подробно.
Есть 2 сервера, на которых работает несколько интернет-проектов - на данный момент 3 вида каталогов скидок, саун по разным городам России. Всё работает на самописном движке, но планируется ведение ещё нескольких отдельных проектов и переход на какой-то достаточно развитый PHP-фреймворк. Также есть дополнительный сервер которые используется в качестве тестового.
Возникают несколько проблемных аспектов:
1. Каким образом лучше всего организовать подключение новых программистов к работе? Учитывая, что все работают по удалённой схеме - часто из других городов, нормальное собеседование провести нет возможности, поэтому единственный вариант который я вижу - поверхностное собеседование и сразу подключение программиста к практическим задачам (сначала несложные, чтоб присмотреться к качеству кодирования, потом посложнее) - всё это через SFTP-протокол на тестовом сервере.
Далее если человек осваивается и работает - можно уже выделить время и развернуть на его компьютере локальную версию сайта.
2. Тут же возникает вопрос с тестовыми серверами - если много программистов, значит должно быть много тестовых серверов... Например чтобы отлаживать рекламу необходимо, чтоб имя хоста в адресной строки браузера было оригинальным, а не что-то типа test1.основной_домен.ru. Выход вижу такой - сделать несколько копий кода на тестовой сервере, каждому программисту поставить cookies типа testServerId=[1,2,3,...] и nginx'ом по этой куке отправлять к разным инстансам апача либо в апаче отлавливать куку и брать файлы из разных директорий.
3. Далее вопрос про то, что несколько программистов могут делать изменения в одном и том же файле, плюс нужно чтоб они получали изменения от других программистов. Тут придётся использовать кодовый репозитарий. Как вариант рассматриваю git, сейчас он уже используется, но только для связи моего компа и боевого сервера. Здесь наверное лучше организовать так - на каждую копию сайта на тестовом сервере можно стягивать код с продакшена, но заливать на продакшн нельзя. У каждого программиста должна быть своя релиз-ветка типа 'vasya-release-branch'. Программисты с локальных машин загружают изменения на тестовый сервер, я стягиваю их к себе, делаю merge с мастер-веткой и заливаю на боевой. Другие альтернативы могут быть?
Кстати непонятно, как на git'е сделать, чтоб человек мог видеть только часть исходников, это вообще реализуемо или лучше использовать что-то типа svn/mercurial?
4. Вопрос актуальности структуры БД на тестовом сервере и на компьютерах программистов. Как это решить? Как вариант вижу репликацию MySQL с боевого на тестовый. А вот на компах программистов - хз.
5. Каждому программисту нужен ssh-доступ к тестовому серверу, причём чтоб он ничего не сломал на тестовом сервере - тут наверное лучше всего пойдёт chroot-среда для каждого.
6. Организация документации и автоматического тестирования - кто сталкивался с такой задачей в случае распределённой команды?
7. Кто-нибудь видел детальные сравнения PHP-фреймворков типа ZF, Symfony 2, CodeIgniter, CakePHP, Yii, Prado. Всё, что нахожу какое-то поверхностное.
Готов выслушать критику, замечания, вопросы.
Есть 2 сервера, на которых работает несколько интернет-проектов - на данный момент 3 вида каталогов скидок, саун по разным городам России. Всё работает на самописном движке, но планируется ведение ещё нескольких отдельных проектов и переход на какой-то достаточно развитый PHP-фреймворк. Также есть дополнительный сервер которые используется в качестве тестового.
Возникают несколько проблемных аспектов:
1. Каким образом лучше всего организовать подключение новых программистов к работе? Учитывая, что все работают по удалённой схеме - часто из других городов, нормальное собеседование провести нет возможности, поэтому единственный вариант который я вижу - поверхностное собеседование и сразу подключение программиста к практическим задачам (сначала несложные, чтоб присмотреться к качеству кодирования, потом посложнее) - всё это через SFTP-протокол на тестовом сервере.
Далее если человек осваивается и работает - можно уже выделить время и развернуть на его компьютере локальную версию сайта.
2. Тут же возникает вопрос с тестовыми серверами - если много программистов, значит должно быть много тестовых серверов... Например чтобы отлаживать рекламу необходимо, чтоб имя хоста в адресной строки браузера было оригинальным, а не что-то типа test1.основной_домен.ru. Выход вижу такой - сделать несколько копий кода на тестовой сервере, каждому программисту поставить cookies типа testServerId=[1,2,3,...] и nginx'ом по этой куке отправлять к разным инстансам апача либо в апаче отлавливать куку и брать файлы из разных директорий.
3. Далее вопрос про то, что несколько программистов могут делать изменения в одном и том же файле, плюс нужно чтоб они получали изменения от других программистов. Тут придётся использовать кодовый репозитарий. Как вариант рассматриваю git, сейчас он уже используется, но только для связи моего компа и боевого сервера. Здесь наверное лучше организовать так - на каждую копию сайта на тестовом сервере можно стягивать код с продакшена, но заливать на продакшн нельзя. У каждого программиста должна быть своя релиз-ветка типа 'vasya-release-branch'. Программисты с локальных машин загружают изменения на тестовый сервер, я стягиваю их к себе, делаю merge с мастер-веткой и заливаю на боевой. Другие альтернативы могут быть?
Кстати непонятно, как на git'е сделать, чтоб человек мог видеть только часть исходников, это вообще реализуемо или лучше использовать что-то типа svn/mercurial?
4. Вопрос актуальности структуры БД на тестовом сервере и на компьютерах программистов. Как это решить? Как вариант вижу репликацию MySQL с боевого на тестовый. А вот на компах программистов - хз.
5. Каждому программисту нужен ssh-доступ к тестовому серверу, причём чтоб он ничего не сломал на тестовом сервере - тут наверное лучше всего пойдёт chroot-среда для каждого.
6. Организация документации и автоматического тестирования - кто сталкивался с такой задачей в случае распределённой команды?
7. Кто-нибудь видел детальные сравнения PHP-фреймворков типа ZF, Symfony 2, CodeIgniter, CakePHP, Yii, Prado. Всё, что нахожу какое-то поверхностное.
Готов выслушать критику, замечания, вопросы.