30
Пожар в бардаке во время наводнения Распределённая групповая разработка Юрий Удовиченко пианист, Rhonda Software

Доклад по SCM для VLDC2, Юрий Удовиченко

Embed Size (px)

DESCRIPTION

Пожар в бардаке во время наводнения, или Распределённая групповая разработка. Доклад Юрия Удовиченко, Rhonda Software, для Vladivostok Developers Conference. https://wmspanel.com/nimble

Citation preview

Page 1: Доклад по SCM для VLDC2, Юрий Удовиченко

Пожар в бардаке во время наводнения

Распределённая групповая разработка

Юрий Удовиченко пианист, Rhonda Software

Page 2: Доклад по SCM для VLDC2, Юрий Удовиченко

О ком речь?

Ронда это:● Firmware & embedded systems● Computer vision● Custom development● 100+ инженеров 16 лет на рынке — живее всех живых!

Page 3: Доклад по SCM для VLDC2, Юрий Удовиченко

● Сложные системы (часто, но не всегда) ● Несколько групп разной численности ● Непростая система подчинения

Специфика крупных распределённых проектов

Page 4: Доклад по SCM для VLDC2, Юрий Удовиченко

А ещё

● Большие расстояния ● Разные часовые пояса ● Разные языки и культуры Хорошее развитие продукта в таких условиях — высший пилотаж и тот ещё challenge

Page 5: Доклад по SCM для VLDC2, Юрий Удовиченко

Нет ничего более постоянного,

чем изменения

(с) Кто-то древний

Page 6: Доклад по SCM для VLDC2, Юрий Удовиченко

Software Configuration Management

В первую очередь: ● Change control ● Source code management (version control) ● Build engineering

Page 7: Доклад по SCM для VLDC2, Юрий Удовиченко

А также

● Release engineering ● Environment configuration ● Deployment

Page 8: Доклад по SCM для VLDC2, Юрий Удовиченко

Контроль изменений

● Что сделать и зачем? ● Кто просит? ● Чья ответственность?

Page 9: Доклад по SCM для VLDC2, Юрий Удовиченко

● Уже сделано? ● А если проверю? ● И что получилось? ● А куда всё делось?

Page 10: Доклад по SCM для VLDC2, Юрий Удовиченко

Not Invented Here

● bug trackers● issue trackers● defect trackers● task managers● help desks● service desks● project management systems Имя им - легион! Только в Вики - 52 названия.

Page 11: Доклад по SCM для VLDC2, Юрий Удовиченко

Что нужно от инструмента?

● Внесение запросов на изменение ● Назначение ответственного ● Отслеживание принятия решений ● Отслеживание жизненного цикла задачи

Page 12: Доклад по SCM для VLDC2, Юрий Удовиченко

● Сохранение истории и поиск ● Приобщение артефактов (доки, email) ● Привязка к контролю версий Пригодится:● Ведение документации (Wiki)● Логирование времени

Page 13: Доклад по SCM для VLDC2, Юрий Удовиченко

Велопарк из практики Ронды

● JIRA● Redmine● Assembla● github● Trac● eTraxis● WSD DDTS● ClearDDTS● Excel (!)

Page 14: Доклад по SCM для VLDC2, Юрий Удовиченко

Контроль версий

Основные задачи:● Хранение истории рабочих продуктов ● Обеспечение параллельности разработки ● Стабилизация результатов

Page 15: Доклад по SCM для VLDC2, Юрий Удовиченко

Наш автопарк

● Perforce ● ClearCase ● Subversion ● git ● CVS

Page 16: Доклад по SCM для VLDC2, Юрий Удовиченко

Основные практики (1/3)

Ветвление vs. главная ветка● branch-per-task vs. trunk● feature branches Интеграционные ветки Метки● Описание стабильных конфигураций● Манипуляция конфигурациями

Page 17: Доклад по SCM для VLDC2, Юрий Удовиченко

Основные практики (2/3)

Релизные ветки● Стабилизация Ветки проектов или заказчиков● Стабилизация и исправление● Внесение специфичных изменений Propagation● Перенос изменений между ветками

Page 18: Доклад по SCM для VLDC2, Юрий Удовиченко

Основные практики (3/3)

Роль интегратора, т.е. СМ-инженера Разграничение доступа● Предоставление только части кода● Контроль доступа внутри репозитория● Выставление наружу срезов

Page 19: Доклад по SCM для VLDC2, Юрий Удовиченко

Управление сборкой

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

Page 20: Доклад по SCM для VLDC2, Юрий Удовиченко

Что используем

QuickBuild● гибкая настройка ● интеграция с системами автотестов● публикация в Perforce

Hudson/Jenkins

Page 21: Доклад по SCM для VLDC2, Юрий Удовиченко

Определяется baseline, стабильная конфигурация — интеграцией или "заморозкой" Отстройка — локально и/или через билд-сервер Тестирование

Стабилизация результатов

Page 22: Доклад по SCM для VLDC2, Юрий Удовиченко

Доставка релиза

Предоставление релиза заказчикам● release notes● release area● нотификации Развёртывание в среде заказчика

Page 23: Доклад по SCM для VLDC2, Юрий Удовиченко

Инь и янь: одно без другого не работает. Как выбрать подходящие?● Определяется конечный результат● Описывается процесс исходя из

имеющегося инструментария● При необходимости инструмент меняется

под задачу

Инструменты и процессы

Page 24: Доклад по SCM для VLDC2, Юрий Удовиченко

Менять процесс?

● Иногда это нужно - кессонная болезнь,

или болезнь роста ● Надо учитывать стоимость изменений(иногда дешевле оставить как есть)

Page 25: Доклад по SCM для VLDC2, Юрий Удовиченко

Идеал vs. реальный мир

Page 26: Доклад по SCM для VLDC2, Юрий Удовиченко

Ломать — не строить.

Работает — не трогай!

Page 27: Доклад по SCM для VLDC2, Юрий Удовиченко

Коммуникация

● Email, IM, Conference Calls - как обычно Но этого не достаточно● Внедрение в инфраструктуру заказчика -

VPN, AD● Свои люди на сайтах● Командировки● Наладить обмен hardware

Page 28: Доклад по SCM для VLDC2, Юрий Удовиченко

"Маленькие" отличия:● Язык ● Менталитет ● Праздники, выходные, военные сборы

Дружба народов!

Page 29: Доклад по SCM для VLDC2, Юрий Удовиченко

http://scm-notes.blogspot.com/

Page 30: Доклад по SCM для VLDC2, Юрий Удовиченко

}

Вопросы ?