Как работать командой над большим проектом?

Господа, постараюсь максимально правильно описать вопрос.
Есть большой проект и маленькая команда, где все друг друга знают и доверяют.
Пришло время набора дополнительных кадров, так как физически трудно работать над проектом, который постоянно растет.
Самое главное что меня терзает - сохранение конфиденциальности исполняющей части проекта. Да, возможно звучит глупо, но не очень приятно будет, если новый член команды сольет проект в паблик или будет использовать его как то для своих нужд.
Возникает несколько вопросов:
1. Как организовать командную работу так, чтобы каждый занимался своим делом и не имел доступ ко всему проекту целиком?
2. Если, допустим фронтендер сделал обновление кода шаблона, как сделать так, чтобы не дергать постоянно back-end'а для внесения эти изменений?

На ум приходит - развернуть копию проекта на сервере, каким то образом разграничить доступ к каталогам и файлам проекта для каждого сотрудника и выкатывать обновления на продакшене средством замены файлов на обновленные.

Есть еще один вариант, возможно очень глупый - делать письменный договор о неразглашении "начинки" проекта. И давать полный доступ к файлам проекта, который будет лежать на сервере для разработки.

Я не поверю, чтобы в крупных проектах давался доступ ко всему коду, каждому back-end разработчику.

Какие то моменты текста будут звучать дико, от чего я и хочу услышать рекомендации более опытных разработчиков на тему организации командной разработки.

UPD: Огромное спасибо всем, кто принял участие в обсуждении данного вопроса! Ваши советы очень помогли прояснить ситуацию.
Успехов вам и хорошей работы!
  • Вопрос задан
  • 2439 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Организация работы
software engineer
1. Договор - полюбому. Чтобы можно было прижучить.
В нормальных команиях также секьюрити проводят регулярные таунхолы, особенно для новичков, где рассказывают о безопасности. И приводят пару примеров, как кто-то расшарил кусочек кода, как его засудили на много денег и добавили в черные списки всех компаний.
Это для тех, кто по глупости может.

2. Делите исходники на части. Автоматизируйте деплой так, чтобы разработчик это руками не делал и никуда не лазил - сделал коммит - CI сервер автоматом закачал все нужное из разных репозиториев и задеплоил. Надо нескольким разработчикам - сделайте несколько тестовых окружений, чтобы разработчик мог зайти в Jenkins или Teamcity, нажал одну кнопку и выбрал куда ему деплоить. Но своих логинов парлей у него не было.

3. В любом случае, если кто-то захочет стырить код - он это сделает. Сделать так, чтобы не было доступа для тех, кому этот доступ нужен - это только навредит проекту.
Поэтому пусть у вас работает нормальный HR.
Пусть тимлиды присматриваются к людям, не доводят до конфликтов.
Не дают доступ ко всему до прохождения испытательного срока.

И это все равно не гарантия. Смиритесь =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
Sanasol
@Sanasol Куратор тега Веб-разработка
нельзя просто так взять и загуглить ошибку
Есть еще один вариант, возможно очень глупый - делать письменный договор о неразглашении "начинки" проекта. И давать полный доступ к файлам проекта, который будет лежать на сервере для разработки.

Это не глупый, а единственный нормальный вариант.
Все остальные попытки что-то спрятать обречены на провал.

Я не поверю, чтобы в крупных проектах давался доступ ко всему коду, каждому back-end разработчику.

Для разделения можно использовать git submodules или просто отдельные репозитории хотя бы фронта-бекенда.
Но делать это только для того чтобы спрятать код друг от друга бессмысленно.
Можно и модулями кодить, и как угодно вообще, но это всего огромный оверхед для продуктивной работы.
А в худшем случае вообще будете только и делать что бороться с этим монстром из кучи модулей/репозиториев, вместо нормальный работы над продуктом.

2. Если, допустим фронтендер сделал обновление кода шаблона, как сделать так, чтобы не дергать постоянно back-end'а для внесения эти изменений?

Значит скорее всего у вас проблемы с "архитектурой", если только дизайнер это верстальщик в html, а на бекенде шаблоны надо еще интегрировать с логикой/кодом, тогда это логично пропускать через бекендеров.
А если дизайнер это фронтендер который делает конечный кусок кода, то значит надо менять подход.

А так вообще с такими вопросами - нужен проект менеджер с техническими скиллами или тим лид, раз ни у кого в команде нет компетенции разрулить эти задачи.
Ответ написан
Kozack
@Kozack
Thinking about a11y
  1. Договор стоит заключать со всеми
  2. У вас должен быть отдельно сервер для разработки и сервер продакшена. Ко второму доступ имеют только отдельные сотрудники которые занимаются деплоем.
  3. Сам проект стоит разделить на несколько подпроектов. По типу back-end, interface app, api app и для каждого сотрудника выдавать доступы только в пределах подпроекта, наказав следить за обратной совместимостью. Так вам будет проще, скажем, написать интеграционные тесты
  4. Обязательна система контроля версий. Во многих, насколько я знаю, можно ограничивать доступ для разных сотрудников
Ответ написан
Martovitskiy
@Martovitskiy
gitolite, приходит на ум. Это средство для создания централизованных репозиториев для совместной разработки через git. Позволяет создавать модули, которые будут выглядеть как папки верхнего уровня, заводить пользователей и гибко раздавать права.
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Организацией работы проекта занимается ПМ (project manager) со всеми вытекающими требованиями к умениям и навыкам, можно гуглить.

Защиту можно сделать разными способами. И в целом безопасностью занимаются, извиняюсь, безопасники. То есть в идеале это должен быть кто-то из вашего костяка команды. Собственно, если это будете не вы, то отправьте одного из ваших на обучение, пусть хотя бы гуглит тему и изучает самостоятельно.

Придумать можно много чего. Письменный договор - полезно в качестве подстраховки. А так можно использовать разграничение доступа к файлам и папкам, можно сделать что-то типа онлайн редактора (я так понял у вас проект - это сайт). Новые фичи можно как-то обкатывать на отдельных страничках, а может и на отдельном сервере, так заранее и не скажешь без понимания всей кухни. В некоторых организациях, например, запрещают доступ в Интернет и выдергивают нафиг все USB разъёмы, чтобы скопировать нельзя было. Но еще раз повторюсь - это отдельная работа и ответственность. И много всяких тонкостей. Ею занимается безопасник. То есть, к примеру, сотрудник без прав вполне сможет подружиться, а потом попросить друга одолжить доступ. Прикольный пример можно увидеть в сериале "24 часа" - там примерно половина времени это борьба хороших и плохих с бюрократией и разграничением доступа, обман, интриги, разоблачение, использование служебных полномочий, и периодически плохие оказываются у власти, а хорошие не могут до них добраться как раз из-за этих ограничений. Суть в том, что идеальной системы нет, и ни вы, никто другой, не сможете всё контролировать.
Ответ написан
@abmanimenja
Самое главное что меня терзает - сохранение конфиденциальности исполняющей части проекта. Да, возможно звучит глупо, но не очень приятно будет, если новый член команды сольет проект в паблик или будет использовать его как то для своих нужд.


1) Забить. Внутренние проекты как правило находятся в виде не пригодным для общественного использования.

2) Разделяй и властвуй. Давать каждому доступ только туда куда точно надо. И более никуда.

Такие вещи как ключ/пароли, конечно же, в коде зашиваться не должны и лежать в репах в доступном виде тоже не должны.

Я не поверю, чтобы в крупных проектах давался доступ ко всему коду, каждому back-end разработчику.


Ну, например, проект на 60 разработчиков - крупный?
У всех есть доступ ко всему. Кроме ключей/паролей к платежным сервисам.

Подавляющая часть организаций не создает никаких высокотехнологичных ноу-хау, которые имело бы смысл хранить в секрете.

Это просто большой объем работы, который привязан к конкретной специфике бизнеса и более никому не интересен. Даже конкурентам. Ибо реальных данных там нет.

Если, допустим фронтендер сделал обновление кода шаблона, как сделать так, чтобы не дергать постоянно back-end'а для внесения эти изменений?


Имхо, в большой организации процессы автоматического деплоя должны быть налажены еще до того, как придет пора заботиться о секретости кода.

Есть еще один вариант, возможно очень глупый - делать письменный договор о неразглашении "начинки" проекта.


В РФ работает только как "взять на испуг".
В РФ NDA реально не функционирует. Ибо нельзя просто так в договоре написать "запрещено разглашать все". Нужно перечислять конкретные вещи, которые еще не созданы. И дополнительно к договору подписывать индивидуальные акты по этим конкретным вещам.

На это даже крупные фирмы навроде Яндекса налетали.
И судов не выигрывали, когда речь шла о коде. Выиграли только когда код из Яндекса был вынесен вместе с "калибровочными" данными для поиска.
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Безопасностью должен заниматься безопасник. Как правило, безопасником становится один из наиболее доверенных членов команды, потому что обычно проверочная пирамида на нем заканчивается ("я контролирую всех, меня не контролирует никто")
Управлением проектом должен заниматься менеджер проектов.
Доступ надо давать только к той части кода, к которой нужно. В крупных коммерческих проектах не использут опенсорсный git, не предназначенный для этого, используют VCS с возможностями раздавать доступ к части проекта.
Договор конечно заключить можно. Правда толку в нем будет немного, ну разве только возьметесь и реально подымете полный, соответствующий законодательству режим коммерческой тайны. Это возможно, но очень заморочисто. А так - это от честных людей.
Еще можно поставить СМП. Это опять же постфактовая защита - то есть от слива исходников она не спасет, но "сливака" запалит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы