Control freak

управление версиями, задачами, проблемами и людьми

Слоны против муравьёв: команды с различающейся скоростью работы

Метки: , , . 27 апреля 2010г.

Однажды слон и муравей решили вместе построить плотину. Слон взвалил на себя работу посложнее – перетаскивать огромные брёвна. Примерился к бревну, обхватил его покрепче – и понёс, печально покачивая хвостом. Муравей, маленький и непоседливый, выбрал работу себе по плечу: схватил веточку – и бегом, схватил другую – и вприпрыжку, схватил третью – и только его и видели.

Руководя отделом, работающим по конвейерной схеме, я периодически ощущала себя тем муравьём, вынужденным соизмерять свой темп с неторопливостью команд, выпускающих связанные с моей компоненты.
Подробнее

«Рубильник» как инструмент для изменения поведения портала

Метки: , . 7 апреля 2010г.

Когда я рассказывала о планировании действий на случай возникновения проблем при выкладке релиза, я упоминала «рубильник» в качестве одного из способов быстро скрыть неудачный функционал от пользователей. Сегодня мне хочется поговорить об этом инструменте подробнее.
Подробнее

Выкладка релизов (часть третья) – момент деплоймента

Метки: , . 29 марта 2010г.

Мы хорошо подготовились к релизу, определили, каким способом будем проводить деплоймент, собрались с духом – выкладываемся? Стойте, стойте, я хочу на дорожку дать ещё пару советов.
Подробнее

Выкладка релизов (часть вторая) – способы деплоймента

Метки: , , . 23 марта 2010г.

Подготовка к выкладке практически бесполезна, пока мы не решим, как именно будем проводить деплоймент. В зависимости от масштабов вашего проекта, количества компонент, требований к скорости и синхронности обновления, можно выбрать наиболее подходящий способ выкладки. Перечислю, в порядке нарастания сложности, основные.
Подробнее

Выкладка релизов (часть первая) – подготовка

Метки: , . 21 марта 2010г.

Как ни приятно сосредотачиваться на организации правильных процессов в разработке, зарплату и премию нам дают всё же за результат. А что является результатом труда разработчика, как не появление новой функциональности на боевых серверах? Что ж, поговорим о том, как сделать процесс деплоймента наиболее эффективным, безопасным и быстрым.

Предположим, что у нас уже есть готовый к выкладке пакет, аккуратно собранный, протестированный, ожидающий превращения в релиз. Не пора ли ёлочке загореться?
Подробнее

Не релизом единым жив человек

Метки: , , , . 8 марта 2010г.

В каком релизе и когда выйдет этот функционал? Сколько времени нужно на тестирование релиза и когда оно закончится? Сколько релизов выйдет за квартал? Такие привычные вопросы, такие естественные – и такие временами раздражающие.

Мне понадобилось несколько месяцев работы на конвейере, чтобы понять, что именно не устраивает в использовании релиза как консолидированной сущности для разработки, тестирования и выкладки функционала:

  • Релиз появляется тогда, когда принято решение о необходимости выкладки того или иного набора задач на боевые сервера. Обновление боевой среды – процесс строго последовательный, и выложить седьмой релиз до пятого нельзя. Сохранение жёстко заданной последовательности не кажется проблемой при малом количестве релизов, медленной разработке и аккуратном планировании на несколько месяцев вперёд. Но как быть, если завтра к вам придут с задачей, которая должна появится на боевых уже послезавтра? Изменять заранее декларированную последовательность релизов? Нарушать нумерацию? Выпускать хотфиксы, являющиеся, по сути, мелкими релизами? Да, иногда можно и так – но нельзя ли лучше?
  • Релиз многими воспринимается как нечто неделимое и неизменяемое. Не успели добавить заказ в девятый релиз? Увы, вам придётся подождать десятого. Нашли при тестировании баг? Выпускаем новый билд и тестируем его заново. О, как это негибко! И совершенно неприемлемо в условиях постоянной смены приоритетов и требований. Если я хочу уверенно жонглировать входящими задачами, выкидывая наверх то самую нужную сейчас, то наиболее готовую, то наименее опасную, я не могу позволить себе ни длительного планирования, ни отказов заказчику на том только основании, что текущий большой релиз уже давно в тестировании.

Решение нашлось простое: оставить за релизом только одну функцию – деплоймент, а разработку и тесно связанное с ней тестирование передать новой сущности – «пакету задач». При этом релизы остаются строго последовательными, а пакеты распараллеливаются на произвольное количество потоков.
Подробнее