55
Фламп на спидах, или как релизить каждый день DevDay 21.09.2012 18+

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

  • Upload
    devday

  • View
    692

  • Download
    0

Embed Size (px)

DESCRIPTION

Вместе с Алексеем Ашурком мы расскажем о том, как проект «Фламп» релизится по 2n раз в неделю и комфортно себя при этом чувствует: — Ветки - это хорошо или о переходе с SVN на Git. — Чем плоха «классическая» модель релизов. — Что такое модель пофичных релизов, в чём её плюсы и минусы. — Почему она подходит для веб-сервисов. — Как идти в ногу со временем или частые деплои. — Как ловить ошибки и минимизировать их число. Видео доклада: http://devday.2gis.ru/report/15

Citation preview

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

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

DevDay 21.09.2012

18+

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

○ веб-разработчик;○ в прошлом фрилансер;○ готовил Сибирские интернет-недели;○ в команде Флампа с июля 2011;○ внедрил Git.

Александр Миронов:

Кто все эти люди?

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

○ работал в НИИ Измерительных Приборов;○ во Флампе с февраля 2011;○ автор «Метода Ашурка»;

Алексей Ашурок:

Кто все эти люди?

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

Алексей Ашурок

Кто все эти люди?

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

Алексей Ашурок

Кто все эти люди?

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

Алексей Ашурок

Кто все эти люди?

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

○ работал в НИИ Измерительных Приборов;○ во Флампе с февраля 2011;○ автор «Метода Ашурка»;

Алексей Ашурок:

Кто все эти люди?

Инженер-конструктор (sic!) 3 категории макетно-инструментального производства!

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

○ Почему ветки — это хорошо? Переход с SVN на Git.

О чём пойдёт речь?

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

○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?

О чём пойдёт речь?

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

○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она

хорошо подходит веб-сервисам?

О чём пойдёт речь?

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

○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она

хорошо подходит веб-сервисам?○ Как идти в ногу со временем? (О частых деплоях)

О чём пойдёт речь?

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

○ Почему ветки — это хорошо? Переход с SVN на Git.○ Чем плоха «классическая» модель релизов?○ Что такое модель пофичных релизов? Почему она

хорошо подходит веб-сервисам?○ Как идти в ногу со временем? (О частых деплоях)○ Как ловить ошибки и минимизировать их число?

О чём пойдёт речь?

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

Ветки — хорошо? «If you are using Subversion, stop it. Just stop. Subversion = Leeches. Mercurial and Git = Antibiotics. We have better technology now»

Joel Spolsky

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

Ветки

Ветки — хорошо?

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

Ветки — хорошо?

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

Divide et impera

Ветки — хорошо?

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

Ветки — хорошо!

○ Изоляция и стабилизация кода

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

Начинали с SVN:

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

Мёржинг в SVN — боль.

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

Надоело. Перешли на Git.

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

Git — хорошо? ○ распределённая VCS;○ изменения вместо версий;○ предельно простой мёржинг и бранчинг.

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

Git — хорошо!

SVN Git

Сравнительная диаграмма

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

Модель «снежного кома»

develop(trunk)

masterrelease/v1.0

v1.0

feature1feature2feature3

QA

Классическая модель релизов:

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

Классическая модель релизов:

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

Медленно!

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

Решение?

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

Features!

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

Feature-based релизы:

○ фичи разрабатываются и тестируются в отдельных бранчах;

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

Feature-based релизы:

○ фичи разрабатываются и тестируются в отдельных бранчах;

○ сборка релиза (одна или несколько фич?);

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

Feature-based релизы:

○ фичи разрабатываются и тестируются в отдельных бранчах;

○ сборка релиза (одна или несколько фич?);○ unit- и functional- тесты (Selenium);

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

Feature-based релизы:

○ фичи разрабатываются и тестируются в отдельных бранчах;

○ сборка релиза (одна или несколько фич?);○ unit- и functional- тесты (Selenium);○ Jenkins прогоняет тесты перед релизом.

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

Feature-based релизы:

release/v1.0 v1.0

feature2

QA

feature1

QA

develop master

Jenkins

Модель «пофичных релизов»

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

Git-flow«A successful branching model»

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

Git-flow:○ 2 основные ветки: develop и master;○ вспомогательные feature, hotfix, release ветки;○ имеется решение для максимальной автоматизации

бранчинга:

git flow feature start login-pagegit flow feature finish login-page

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

Кому подходит?

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

Веб-сервисам!

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

Кому подходит?

○ небольшие изменения каждый день;

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

Кому подходит?

○ небольшие изменения каждый день;○ доставляем сразу всем пользователям (мы же

в вебе!);

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

Кому подходит?

○ небольшие изменения каждый день;○ доставляем сразу всем пользователям (мы же

в вебе!);○ всегда можем откатиться в случае чего.

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

Nginx:

○ пускать/не пускать;

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

Nginx:

○ пускать/не пускать;○ распределять нагрузку.

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

Git: pull!1

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

Git: pull!!1

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

Phing:

○ Дельты ○ CSS/JS ○ Конфиги

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

Присматриваем за ошибками:

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

Присматриваем за ошибками:

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

Присматриваем за ошибками:

Pinba

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

Котятки

Пользователи

Присматриваем за ошибками:

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

Профит:

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

Профит:

○ 11 релизов за первые 10 дней внедрения модели.

Зависимость!

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

Профит:

○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!

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

Профит:

○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!○ Девелоперы счастливы!

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

Профит:

○ 11 релизов за первые 10 дней внедрения модели.○ Юзеры счастливы!○ Девелоперы счастливы!○ QA идёт в ногу со временем.

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

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

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

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

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