Фламп на спидах или ка релизить каждый день

Preview:

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 идёт в ногу со временем.

Полезные ссылки:

http://go.2gis.ru/xkbe

Спасибо! Вопросы?

Recommended