Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
Предыстория. Я пришел в коллектив, где было изначально не более 8 разрабов, где было принято, кто что написал, тот и накатил на основной сервак. Сейчас разрабов более 20, и встают организационные вопросы. Это и ошибки при накатке, и не оптимизированные запросы, это и доступ к важным данным, отключение логирования и тд. Грубо говоря, сейчас у нас каждый программер бог. Что хочет, то с базой и делает.

Интересует рабочий алгоритм как в больших предприятиях происходит накатка скриптов и доступ к основному серваку. Если есть адмн БД, то какие обязанности в него входят и тд.
Пасиб
5 дек 19, 12:37    [22033035]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
aleks222
Member

Откуда:
Сообщений: 929
Ну... еще 10-ток тестировщиков + пара тестовых серверов + покрывающие тесты + система контроля версий.
И твои проблемы рассеются.

Но это недешево.
5 дек 19, 12:53    [22033055]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1362
aleks222
Ну... еще 10-ток тестировщиков + пара тестовых серверов + покрывающие тесты + система контроля версий.
И твои проблемы рассеются.

Но это недешево.


Вообще как раз вот тут то проблемы и начинаются
5 дек 19, 13:06    [22033080]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
тестировщики есть, тестовый тоже, тут прикол в том, что программеры неконтролируемо могут вносить правки на основной сервак. И мне интересно, как это реализовано в компаниях, где 20+ прогеров, которые работают над одним проектом
5 дек 19, 13:06    [22033081]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ther, весь код заливается в git или какую-либо иную систему контроля версий. Выбор зависит от желания разработчиков. Проект для git можно сделать через любую компарилку (инструмент для сравнения баз/проектов): Visual Studio - проект базы данных, сравнение базы с проектом, Redgate SQL Compare - сравнение базы с папочкой с заливкой в нее исходников. Возможно, есть ещё инструменты. Я пользовался этими двумя, предпочитал Redgate.
Основное правило работы с git: ветка master всегда должна совпадать с состоянием боевой базы - изменения напрямую в боевой базе не допускаются.
Разработчики либо совсем не имеют доступа на бой, либо имеют доступ только на чтение/просмотр описаний объектов.

Кроме боевой базы заводятся:
предпрод - является копией прода и периодически с него переподнимается - например, раз в неделю.
тест - контур для функционального тестирования бизнес-заказчиками/аналитиками/тестировщиками.
Девелоп - контур для первоначального тестирования фич, тестирования совместимости изменений от разных разработчиков и т.д.
В идеале - По одной разработческой базе на каждого разработчика.

Можно некоторые пропустить, например, отдельные разработческие базы, оставить Девелоп для разработки, тест для тестирования только готовых фич.

Процесс разработки:
Разработчики под каждую задачу заводят веточку в git, в зависимости от сложности фичи, либо напрямую правят объекты базы в проекте, редактированием файликов, либо сначала накатывают проект на свою базу, разрабатывают в базе, потом через компарилку заливают изменения в проект, делают коммит.
Коммит отправляется на code review либо выбранному ответственному за его проведение (если есть старшие/младшие разработчики), либо случайному коллеге (если уровень разработчиков в целом близок).
Далее, при работе по gitflow или похожему процессу - создается релизная ветка, в нее включаются задачи, которые должны войти в релиз, коммиты этих веток сливаются в релизную, через средство автоматизации (в разных местах использовали TFS и Teamcity) собираются скрипты наката/отката релиза.
Релиз накатывается на тест, проходит функциональное тестирование (новая фича работает), накатывается на предпрод, проходит регрессионное тестирование (старые фичи не сломались), накатывается на прод силами DBA, либо через автоматический инструмент, типа Octopus Deploy.

Понятно, что все шаги максимально автоматизируются для удобства - например, создание веток под задачи делается одной кнопкой в Jira при установленном плагине работы с Git, заливка проекта в разработческую базу - делается отдельно написанным батником (если будет интересно - могу поделиться, где-то остались).
5 дек 19, 13:12    [22033092]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ther
тестировщики есть, тестовый тоже, тут прикол в том, что программеры неконтролируемо могут вносить правки на основной сервак. И мне интересно, как это реализовано в компаниях, где 20+ прогеров, которые работают над одним проектом
Единственный способ поддерживать порядок - лишить разработчиков доступа к проду. Как накатывать изменения - описал выше )
5 дек 19, 13:15    [22033098]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
Гит есть, код ревью (какой никакой тоже), но только для фронта. SQL почти не мониторится, все никак не могу донести до начальства, что именно база это 90% проекта, а не клиент. Но тут есть нюанс, как быть, если случается жопа, внештатка, которую надо править только на основном серваке? у нас база 24/7 и если в 11 вечера срака, то любой может поправить. Вот как в такой ситуации быть?
5 дек 19, 13:57    [22033151]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
Minamoto
Единственный способ поддерживать порядок - лишить разработчиков доступа к проду

ною об этом уже оооочень долго
5 дек 19, 13:58    [22033154]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ther
Но тут есть нюанс, как быть, если случается жопа, внештатка, которую надо править только на основном серваке? у нас база 24/7 и если в 11 вечера срака, то любой может поправить. Вот как в такой ситуации быть?

Иметь дежурного DBA, который имеет доступ к проду. Если разработчикам оставить доступ к проду на чтение - обычно этого достаточно, чтобы локализовать проблему, подготовить скрипты для исправления, они передаются DBA, DBA накатывает на прод.
Если не оставлять, то разработчик подсаживается к DBA с его доступом и, под наблюдением, локализует причину и правит.
Если исправление требует изменения объектов (хранимок, функций, вьюх) - обязать по факту исправления актуализировать мастер-ветку для слияния изменений.

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

Сообщение было отредактировано: 5 дек 19, 14:22
5 дек 19, 14:20    [22033190]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ther
ною об этом уже оооочень долго

Достаточно внедрить правильный процесс разработки (это тоже нетривиальная задача, сил на это много может уйти) и перестать выдавать доступ новым разработчикам. Постепенно, если есть ротация кадров, за несколько лет останется не так много разработчиков с доступом - это уже будет легче, чем когда доступ есть у всех.
5 дек 19, 14:25    [22033192]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
Minamoto,

так же ныл по поводу DBA, ответ был прост.
автор
Если он один имеет доступ и завтра его собьет машина?
Посему хотел собрать инфу из больших рабочих проектов и попытаться поныть еще раз. То есть теорию я и так понимаю, мне надо именно рабочий вариант, который работает как в обычном режиме и в режиме пи..ц
5 дек 19, 14:38    [22033206]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7686
ther,

Заберите сисадминов.. Закройте доступ к серверу разработчикам, хотя бы на ALTER.
Разработку ведите в VS проекте, а не на сервере. Изучите Agile методики разработки, используйте версионирование. Назначьте ответственных за публикации, планируйте публикации. Изучите методики рефакторинга БД. Для тестирования установите локальные БД, создайте скрипты заполнения синтетическими данными. В общем, много работы.
5 дек 19, 14:54    [22033230]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
ther
Minamoto,

так же ныл по поводу DBA, ответ был прост.
автор
Если он один имеет доступ и завтра его собьет машина?
Посему хотел собрать инфу из больших рабочих проектов и попытаться поныть еще раз. То есть теорию я и так понимаю, мне надо именно рабочий вариант, который работает как в обычном режиме и в режиме пи..ц

Ну, по факту, если DBA один - да, иметь ещё несколько разработчиков с доступом. По факту ни разу ещё не было такого, чтобы полностью получилось всех разработчиков лишить доступа. Но перевести разработку с боя в основном в проект - вполне - это вопрос воспитания культуры разработки, как любое другое воспитание - делается медленно и постепенно, спешить не стоит.
5 дек 19, 15:06    [22033248]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
просто проекту 15+ лет, из них 13 писалась в режиме "кто сделал, тот и накатил" и из основателей троих уже нет. Посему шанс ошибки всегда имеется, как минимум из за незнания процесса, ибо нагнуться может банально через неделю, и тогда начинается гарячка "ааа, все пропало, срочно чини"
ПС
а с культурой разработки именно sql все печально, в свое время разработчики набирались по принципу знаешь хорошо делфи - подходишь, а селект писать как два пальца

в общем, примерную инфу собрал, пасиб, если у кого то еще есть практика работы большой команды в бесконечном проекте и правил работы с БД, буду рад почитать
5 дек 19, 15:55    [22033307]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7686
Нууу года два понадобится, чтобы процесс устаканился. Но качество релизов на порядок вырастет, без преувеличения. Хотя немного страдает скорость.
5 дек 19, 16:45    [22033370]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Remind
Member

Откуда: UK
Сообщений: 523
ther
Но тут есть нюанс, как быть, если случается жопа, внештатка, которую надо править только на основном серваке? у нас база 24/7 и если в 11 вечера срака, то любой может поправить. Вот как в такой ситуации быть?

Составляете график on-call дежурств. По этому графику добавляете/удаляете юзеров из AD группы, которая имеет sa на сервере.
5 дек 19, 17:08    [22033388]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33533
Блог
Remind,

И что в этом случае помешает организовать кому угодно абсолютно любой доступ вне всякого расписания?
6 дек 19, 17:47    [22034492]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33533
Блог
ther,

Вам всё верно расписали выше, но есть одно большое "но" - это крайне дорого, начиная от кучи сред, до отдельных вакансий на поддержку всего этого дела + общее замедление работы. Это ежегодные расходы на несколько миллионов рублей. Посоветуйтесь с руководством по критичности вашей системы, может оно особо и не надо, а сбои вполне терпимы по сравнению с расходами.
6 дек 19, 17:51    [22034496]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
1. unit tests
2. pre-review назначенный 1-2 разработчика + тим лид
3. post review 1-2 уже других разработчика + тим лид
6 дек 19, 18:46    [22034526]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
ther
просто проекту 15+ лет, из них 13 писалась в режиме "кто сделал, тот и накатил"
...
а с культурой разработки именно sql все печально, в свое время разработчики набирались по принципу знаешь хорошо делфи - подходишь, а селект писать как два пальца
Так проблема больше не в плохих процессах, а в отсутствии специалистов по сиквелу.

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

Но когда система реально эксплуатируется, постоянно усложняется, и повышается нагрузка, а из разработчиков уже нет не только тех, кто это изначально делал, но и тех, кто это после них менял, то отсутствие специалиста (ов) становится критичным. А процессы, доступ, тестирование, версионное хранилище исходников - это уже следствие отсутствия специалиста.
6 дек 19, 19:08    [22034546]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
ther
Member

Откуда:
Сообщений: 818
я вот читаю, и понимаю, что мне надо оооочень аккуратно собрать инфу, что бы не спугнуть начальство))) я уже пол года пробиваю тему повышения квалификации sql и отдельную должность dba. Но, судя по всему, все будет куда сложнее. Пасиб большое, куча полезной инфы
6 дек 19, 21:11    [22034609]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 590
Можно ещё почитать, что такое continuous integration и continuous delivery. Эти вещи вообще можно автоматизировать с помощью тулов типа Jenkins. Пока оно дойдёт до выкладки ревизии на прод, то участие разрабов будет и не нужно. У нас, например, разрабы вообще имеют доступ только к своим разработчитским серверам. Максимум к stage. А на прод они сами боятся ходить, да и нельзя - регулятор уши оборвёт.
7 дек 19, 06:11    [22034715]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3658
ther
у нас база 24/7 и если в 11 вечера срака, то любой может поправить. Вот как в такой ситуации быть?

инциденты надо фиксировать и после разбирать, почему в 11 вечера случилась срака, находить причину и предпринимать действия, чтобы этого больше не было
7 дек 19, 11:50    [22034765]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7686
alexeyvg,

соглашусь, что при наличии одной группы квалифицированных разработчиков 3-4 человека , работающих над одним проектом или разными в непересекающихся областях планирование выпусков не обязательно. Но обязательным остается тестирование и версионирование. Тесты гарантируют качество кода (а человек через две недели не вспомнит, что делал), версионирование позволяет отменить изменения без длительного копания в коде. практика показывала, что публикация без тестов - это 50% случаев промаха. Разве что последствия не всегда были фатальными, это снижает заметность проблемы.
7 дек 19, 17:01    [22034861]     Ответить | Цитировать Сообщить модератору
 Re: Интересует совет по доступу к основному серваку разрабов в большой команде  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
Владислав Колосов
alexeyvg,

соглашусь, что при наличии одной группы квалифицированных разработчиков 3-4 человека , работающих над одним проектом или разными в непересекающихся областях планирование выпусков не обязательно. Но обязательным остается тестирование и версионирование. Тесты гарантируют качество кода (а человек через две недели не вспомнит, что делал), версионирование позволяет отменить изменения без длительного копания в коде. практика показывала, что публикация без тестов - это 50% случаев промаха. Разве что последствия не всегда были фатальными, это снижает заметность проблемы.
Конечно, я, даже когда один что то программирую, использую версионный контроль, и дев-сервер.

Просто я говорил, что последствия для маленького проекта и небольшой команды будут не такие явные, кричащие, как в больших. У ТС, похоже, уже началась стадия большого проекта, когда недостатки в постановке процессов уже выперли во всю ширь.
7 дек 19, 18:12    [22034888]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить