Upload
yury-udovichenko
View
7.338
Download
2
Embed Size (px)
DESCRIPTION
Пожар в бардаке во время наводнения, или Распределённая групповая разработка. Доклад Юрия Удовиченко, Rhonda Software, для Vladivostok Developers Conference. https://wmspanel.com/nimble
Citation preview
Пожар в бардаке во время наводнения
Распределённая групповая разработка
Юрий Удовиченко пианист, Rhonda Software
О ком речь?
Ронда это:● Firmware & embedded systems● Computer vision● Custom development● 100+ инженеров 16 лет на рынке — живее всех живых!
● Сложные системы (часто, но не всегда) ● Несколько групп разной численности ● Непростая система подчинения
Специфика крупных распределённых проектов
А ещё
● Большие расстояния ● Разные часовые пояса ● Разные языки и культуры Хорошее развитие продукта в таких условиях — высший пилотаж и тот ещё challenge
Нет ничего более постоянного,
чем изменения
(с) Кто-то древний
Software Configuration Management
В первую очередь: ● Change control ● Source code management (version control) ● Build engineering
А также
● Release engineering ● Environment configuration ● Deployment
Контроль изменений
● Что сделать и зачем? ● Кто просит? ● Чья ответственность?
● Уже сделано? ● А если проверю? ● И что получилось? ● А куда всё делось?
Not Invented Here
● bug trackers● issue trackers● defect trackers● task managers● help desks● service desks● project management systems Имя им - легион! Только в Вики - 52 названия.
Что нужно от инструмента?
● Внесение запросов на изменение ● Назначение ответственного ● Отслеживание принятия решений ● Отслеживание жизненного цикла задачи
● Сохранение истории и поиск ● Приобщение артефактов (доки, email) ● Привязка к контролю версий Пригодится:● Ведение документации (Wiki)● Логирование времени
Велопарк из практики Ронды
● JIRA● Redmine● Assembla● github● Trac● eTraxis● WSD DDTS● ClearDDTS● Excel (!)
Контроль версий
Основные задачи:● Хранение истории рабочих продуктов ● Обеспечение параллельности разработки ● Стабилизация результатов
Наш автопарк
● Perforce ● ClearCase ● Subversion ● git ● CVS
Основные практики (1/3)
Ветвление vs. главная ветка● branch-per-task vs. trunk● feature branches Интеграционные ветки Метки● Описание стабильных конфигураций● Манипуляция конфигурациями
Основные практики (2/3)
Релизные ветки● Стабилизация Ветки проектов или заказчиков● Стабилизация и исправление● Внесение специфичных изменений Propagation● Перенос изменений между ветками
Основные практики (3/3)
Роль интегратора, т.е. СМ-инженера Разграничение доступа● Предоставление только части кода● Контроль доступа внутри репозитория● Выставление наружу срезов
Управление сборкой
Не всегда получается собирать код локально ● Специфичный софт ● Требования по ресурсам ● Прогон автоматических тестов
Что используем
QuickBuild● гибкая настройка ● интеграция с системами автотестов● публикация в Perforce
Hudson/Jenkins
Определяется baseline, стабильная конфигурация — интеграцией или "заморозкой" Отстройка — локально и/или через билд-сервер Тестирование
Стабилизация результатов
Доставка релиза
Предоставление релиза заказчикам● release notes● release area● нотификации Развёртывание в среде заказчика
Инь и янь: одно без другого не работает. Как выбрать подходящие?● Определяется конечный результат● Описывается процесс исходя из
имеющегося инструментария● При необходимости инструмент меняется
под задачу
Инструменты и процессы
Менять процесс?
● Иногда это нужно - кессонная болезнь,
или болезнь роста ● Надо учитывать стоимость изменений(иногда дешевле оставить как есть)
Идеал vs. реальный мир
Ломать — не строить.
Работает — не трогай!
Коммуникация
● Email, IM, Conference Calls - как обычно Но этого не достаточно● Внедрение в инфраструктуру заказчика -
VPN, AD● Свои люди на сайтах● Командировки● Наладить обмен hardware
"Маленькие" отличия:● Язык ● Менталитет ● Праздники, выходные, военные сборы
Дружба народов!
http://scm-notes.blogspot.com/
}
Вопросы ?