Как правильно технически организовать веб-разработку?

Добрый день!

В ближайшем будущем мне предстоит организация и управление небольшим отделом веб-разработки (пока 1-2 разработчика, потом возможно больше). Заниматься будем внутренними проектами, не для клиентов. Пока основная платформа Yii2. Нужна не привязка к физическому офису.
Раньше никогда подобным не занимался и хочется все сделать по возможности правильно, с использованием современных методологий и best practics.
Опишите, плз, схему как оно должно быть? Хочется чтобы все было эффективно, удобно, управляемо.

- Dev & Production сервера понятно. Нужно ли делать локал-сервер у разработчика? Стоит ли физически разделять дев и продакшен или достаточно разных виртуал-хостов и баз данных?
- Где и какие делать репозитории кода? Никаких серверов у нас в офисе не будет и собственно самого офиса тоже ;)
- Нужна ли специализированная task management (типа, Jira)? Сейчас используем для управления задачами WorkSection. Стоит ли для разработки использовать что-то отдельное специализированное? Я так понимаю, что та же Jira может отслеживать коммиты в git как процесс выполнения задач - это было бы круто!
- нужен ли отдельный баг-трекер? Выделенных тестировщиков пока не предвидится.
- Стоит ли использовать Scrum? Или просто тупо идти по задачам?
- Нужна ли какая то вики для отдела разработки? Что туда записывать, чтобы это не было большим оверхедом для разрабов и имело реальную пользу.
- Что еще забыл?

PS. Еще один вопрос не могу понять: должны ли запросы на доработки софта идущие от других отделов проходить через меня как управляющего разработкой (я оцениваю целесообразность и ставлю задачу разрабам) или лучше чтобы они напрямую контачили с разработчиками? Не будет ли это с моей стороны лишней тратой времени?
  • Вопрос задан
  • 3216 просмотров
Решения вопроса 1
IRC
@IRC
Django developer & Atlassian DevOps engineer
- Dev & Production сервера понятно. Нужно ли делать локал-сервер у разработчика? Стоит ли физически разделять дев и продакшен или достаточно разных виртуал-хостов и баз данных?

Зависит от масштаба проекта. На начальном этапе у разработчика всегда должна быть возможность проверить написанное локально -- это быстро и удобно. Как, например, в моем случае встроенный сервер Django. В будущем, когда проект становится большим -- можно прибегнуть к автоматизации этого процесса через среды сборки на тестовые стенды.

Физически (как я понял по разным железкам) разделять dev и prod имеет смысл только тогда, когда это требуется для правильного функционирования системы (т.е. prod занимает ресурсы физического сервера на 70-80%).
Когда дойдете до таких масштабов -- решение само придет. Сейчас идите по пути максимального сокращения расходов (VPS или один выделенный сервер в ДЦ).

Кстати, советую сразу откинуть идеи (если такие появляются в команде) "да у меня дома комп мощный, на первое время потянет", т.к. переносить все равно придется в скором времени из-за ряда неудобств.

А в качестве выделенного сервера хорошо подойдет https://www.soyoustart.com/ie/essential-servers/ с установленным VMware ESXi. Дальше уже крутите виртуалки какие хотите.

- Где и какие делать репозитории кода? Никаких серверов у нас в офисе не будет и собственно самого офиса тоже ;)

Путь 1: Github/Bitbucket в облаке
Путь 2: GitLab/Bitbucket Server у себя на сервере.

- Нужна ли специализированная task management (типа, Jira)? Сейчас используем для управления задачами WorkSection. Стоит ли для разработки использовать что-то отдельное специализированное? Я так понимаю, что та же Jira может отслеживать коммиты в git как процесс выполнения задач - это было бы круто!

Нужна! И это должно быть с нулевого дня начала вашей работы. Иначе, когда зашьетесь в тоннах переписок в месенджерах и Google Docs'ах, будете вспоминать тот день, когда было лень потратить время на организацию работы.

- нужен ли отдельный баг-трекер? Выделенных тестировщиков пока не предвидится.

Для кого? Для пользователей вашим софтом? См. ответ выше.

- Стоит ли использовать Scrum? Или просто тупо идти по задачам?

Тупо идти по задачам никогда не получится. Нет такой самоорганизации у людей. Получите гораздо больше головной боли в решении косяков других людей в своей роли ПМ. Изучите методологии. Мы используем Scrum + TDD.

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

Нужна! Вот прям как трекер задач. И привычка туда записывать все по проекту тоже нужна. Разрабатываете API -- супер! Сначала опишите его в Вики, потом начинайте кодить. И все в таком духе. Все полезные ссылки по проекту, доступы к стендам и пр. -- все надо хранить не в переписке или облаках, а и именно в единой отправной точке.

Еще удобно использовать тот же Confluence для проведения встреч. Там есть готовые шаблоны для этого. Позволяет легко фиксировать все вопросы и принятые решения.

- Что еще забыл?

Способы ведения проекта в Git забыли, такие как GitFlow.
Контейнеризация от Docker для упрощения/ускорения работы разработчиков/тестеров/админов.

PS. Еще один вопрос не могу понять: должны ли запросы на доработки софта идущие от других отделов проходить через меня как управляющего разработкой (я оцениваю целесообразность и ставлю задачу разрабам)

Должны.

или лучше чтобы они напрямую контачили с разработчиками?

Напрямую с разрабом -- только для обсуждения уже поставленной в план задачи, а для постановки задачи -- с ПМ и всей командой (если Scrum)

Не будет ли это с моей стороны лишней тратой времени?

Это -- ваша непосредственная работа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
Antonoff
@Antonoff
Разработчик
Отвечу кратко, используйте Trello - Играет роль таск менеджера, и там отлично можно делать спринты по агиле. Сейчас напилино очень много разного рода интеграций для Трелло и Slack + Trello, тоже хорошо работал.

Для гит - ставьте на дев сервера - GitLab или смотрите в сторону платного аккаунта на GitHub или BitButcket.

Баг трекер используйте из GitLab/GitHub Issue, ибо банально легко можно отслеживать как так провигается когда кто-то делает коммит с #issue_id.

Ну и система коммуникаций, должна быть на высоте! Я бы брал бы Slack.

Если нравится продукция Atlassian смотрите в сторону Jira, BitButcket и HipChat.

Но для меня лично лучше всего подходит GitHub, Trello, Slack и всё.
Ответ написан
@nikolaj
По последнему пункту:
1) обычно задач больше чем ресурсов на их реализацию
2) зависит от компании, но большей части запросы приходят в таком виде, что их ещё нужно довести до стадии задачи. Иногда хотелки отваливаются сами собой после разговора про то, что именно нужно или преображаются до неузнаваемости
3) задачи имеют свойство приходить как попало, а не в тот момент, когда разработчик готов переключиться на очередную

Вобщем, если у вас не какая-то исключительная компания лучше, если задачи в трекере будут падать на вас, и только потом, переформулированными и с приоритетами, будут переходить к разработчикам.
Причём если не critical — то лучше пачкой при планировании спринта.
Ответ написан
urtow
@urtow
*nix, python, QA, bagpipe, folk music
- Dev & Production сервера понятно. Нужно ли делать локал-сервер у разработчика? Стоит ли физически разделять дев и продакшен или достаточно разных виртуал-хостов и баз данных?

Стоит. Безопасность, как минимум. Как максимум - сдохнет дев, ну ок. Сдохнет прод - ААААААААААААААА

- Где и какие делать репозитории кода? Никаких серверов у нас в офисе не будет и собственно самого офиса тоже ;)

Github, gitlab, bitbucket.

- Нужна ли специализированная task management (типа, Jira)? Сейчас используем для управления задачами WorkSection. Стоит ли для разработки использовать что-то отдельное специализированное? Я так понимаю, что та же Jira может отслеживать коммиты в git как процесс выполнения задач - это было бы круто!

Trello спасает :)

- нужен ли отдельный баг-трекер? Выделенных тестировщиков пока не предвидится.

Хватит Issues в github/gitlab/bitbucket. Я был отдельным тестировщиком и такого варианта хватало.

- Стоит ли использовать Scrum? Или просто тупо идти по задачам?

Определитесь для себя - может быть и стоит, а может быть и нет.
Надо смотреть на проект и думать. Со стороны не сказать.

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

Опять же, есть вики в github/gitlab/bitbucket. Для небольшого проекта - самое то.

- Еще один вопрос не могу понять: должны ли запросы на доработки софта идущие от других отделов проходить через меня как управляющего разработкой (я оцениваю целесообразность и ставлю задачу разрабам) или лучше чтобы они напрямую контачили с разработчиками? Не будет ли это с моей стороны лишней тратой времени?

А вот тут будет в тему Agile. Собрали требования - решили что делаем в текущем спринте и радуемся. Все дополнительные запросы попадают в пул задач и Вы можете удалять задачи, если они не нужны проекту или понижать приоритет.
Ответ написан
@dmitryKovalskiy
программист средней руки
Я бы добавил решения в области Continius Integration.
Весьма удобно видеть что бранч сломан не только у вас, но и у всех + каким коммитом сломали.
Так же удобно автоматизировать процесс публикации как на предпром/пром, так и просто в тестовые контуры.
Ответ написан
Stac
@Stac
Лучше задайте свои вопросы своим же разработчикам - чем и как они пользуются и что им будет интересно посмотреть и изучить.

Пока у вас нет своих сложившихся best practices "написанных кровью", стоит ориентироваться на вкусы и предпочтения своих людей и себя лично. Вы же не хотите внедрить что-то, чем потом никто не будет пользоваться? Что будет снижать производительность труда и качество продукта?

С другой стороны и у клиентов могут быть свои представления о процессе разработки. Теоретически вы можете давить и заставлять разработчиков следовать процессам и процедурам. С клиентами такое обычно не проходит.
Придется быть гибким.

Я бы не советовал вам использовать ничего из того, что вы лично не знаете и использование чего не можете четко и ясно обосновать.
Ответ написан
Комментировать
Splo1ter
@Splo1ter
.NET Developer (9 years+)
Если у вас возникают вопросы по таким простым вещам, то я думаю не стоит вам давать в подчинение людей.
Не обладаете еще достаточной компетенцией.
Ответ написан
Ваш ответ на вопрос

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

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