Upload
devday
View
692
Download
0
Embed Size (px)
DESCRIPTION
Вместе с Алексеем Ашурком мы расскажем о том, как проект «Фламп» релизится по 2n раз в неделю и комфортно себя при этом чувствует: — Ветки - это хорошо или о переходе с SVN на Git. — Чем плоха «классическая» модель релизов. — Что такое модель пофичных релизов, в чём её плюсы и минусы. — Почему она подходит для веб-сервисов. — Как идти в ногу со временем или частые деплои. — Как ловить ошибки и минимизировать их число. Видео доклада: http://devday.2gis.ru/report/15
Citation preview
Фламп на спидах, или как релизить каждый день
DevDay 21.09.2012
18+
○ веб-разработчик;○ в прошлом фрилансер;○ готовил Сибирские интернет-недели;○ в команде Флампа с июля 2011;○ внедрил Git.
Александр Миронов:
Кто все эти люди?
○ работал в НИИ Измерительных Приборов;○ во Флампе с февраля 2011;○ автор «Метода Ашурка»;
Алексей Ашурок:
Кто все эти люди?
Алексей Ашурок
Кто все эти люди?
Алексей Ашурок
Кто все эти люди?
Алексей Ашурок
Кто все эти люди?
○ работал в НИИ Измерительных Приборов;○ во Флампе с февраля 2011;○ автор «Метода Ашурка»;
Алексей Ашурок:
Кто все эти люди?
Инженер-конструктор (sic!) 3 категории макетно-инструментального производства!
○ Почему ветки — это хорошо? Переход с SVN на Git.
О чём пойдёт речь?
○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?
О чём пойдёт речь?
○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она
хорошо подходит веб-сервисам?
О чём пойдёт речь?
○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она
хорошо подходит веб-сервисам?○ Как идти в ногу со временем? (О частых деплоях)
О чём пойдёт речь?
○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она
хорошо подходит веб-сервисам?○ Как идти в ногу со временем? (О частых деплоях)○ Как ловить ошибки и минимизировать их число?
О чём пойдёт речь?
Ветки — хорошо? «If you are using Subversion, stop it. Just stop. Subversion = Leeches. Mercurial and Git = Antibiotics. We have better technology now»
Joel Spolsky
Ветки
Ветки — хорошо?
Ветки — хорошо?
Divide et impera
Ветки — хорошо?
Ветки — хорошо!
○ Изоляция и стабилизация кода
Начинали с SVN:
Мёржинг в SVN — боль.
Надоело. Перешли на Git.
Git — хорошо? ○ распределённая VCS;○ изменения вместо версий;○ предельно простой мёржинг и бранчинг.
Git — хорошо!
SVN Git
Сравнительная диаграмма
Модель «снежного кома»
develop(trunk)
masterrelease/v1.0
v1.0
feature1feature2feature3
QA
Классическая модель релизов:
Классическая модель релизов:
Медленно!
Решение?
Features!
Feature-based релизы:
○ фичи разрабатываются и тестируются в отдельных бранчах;
Feature-based релизы:
○ фичи разрабатываются и тестируются в отдельных бранчах;
○ сборка релиза (одна или несколько фич?);
Feature-based релизы:
○ фичи разрабатываются и тестируются в отдельных бранчах;
○ сборка релиза (одна или несколько фич?);○ unit- и functional- тесты (Selenium);
Feature-based релизы:
○ фичи разрабатываются и тестируются в отдельных бранчах;
○ сборка релиза (одна или несколько фич?);○ unit- и functional- тесты (Selenium);○ Jenkins прогоняет тесты перед релизом.
Feature-based релизы:
release/v1.0 v1.0
feature2
QA
feature1
QA
develop master
Jenkins
Модель «пофичных релизов»
Git-flow«A successful branching model»
Git-flow:○ 2 основные ветки: develop и master;○ вспомогательные feature, hotfix, release ветки;○ имеется решение для максимальной автоматизации
бранчинга:
git flow feature start login-pagegit flow feature finish login-page
Кому подходит?
Веб-сервисам!
Кому подходит?
○ небольшие изменения каждый день;
Кому подходит?
○ небольшие изменения каждый день;○ доставляем сразу всем пользователям (мы же
в вебе!);
Кому подходит?
○ небольшие изменения каждый день;○ доставляем сразу всем пользователям (мы же
в вебе!);○ всегда можем откатиться в случае чего.
Nginx:
○ пускать/не пускать;
Nginx:
○ пускать/не пускать;○ распределять нагрузку.
Git: pull!1
Git: pull!!1
Phing:
○ Дельты ○ CSS/JS ○ Конфиги
Присматриваем за ошибками:
Присматриваем за ошибками:
Присматриваем за ошибками:
Pinba
Котятки
Пользователи
Присматриваем за ошибками:
Профит:
Профит:
○ 11 релизов за первые 10 дней внедрения модели.
Зависимость!
Профит:
○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!
Профит:
○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!○ Девелоперы счастливы!
Профит:
○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!○ Девелоперы счастливы!○ QA идёт в ногу со временем.
Спасибо! Вопросы?