Стабильность проекта в условиях непрерывной...

21
Стабильность проекта в условиях непрерывной интеграции Организация работ на долгосрочных проектах Денис Митрофанов Генеральный директор QSOFT +7 (495) 771-73-63

Upload: sportgid

Post on 15-Jun-2015

75 views

Category:

Business


2 download

TRANSCRIPT

Page 1: Стабильность проекта в условиях непрерывной интеграции

Стабильность проекта в условиях непрерывной интеграцииОрганизация работ на долгосрочных проектах

Денис Митрофанов

Генеральный директор QSOFT+7 (495) 771-73-63

Page 2: Стабильность проекта в условиях непрерывной интеграции

Основные причины падений

Сбой на уровне «железа»

Сбой на уровне канала (хостинга)

Сбой на уровне ПО (ОС, БД, web-сервер)

Сбой на уровне Продукта

Сбой от высокой неплановой нагрузки

Сбой в результате обновления Продукта

Page 3: Стабильность проекта в условиях непрерывной интеграции

Обновления – естественное состояние развивающегося проекта

Мы знаем точно только состав одной версии

Требования изменяются в результате опыта эксплуатации и изменений на рынке

Нужно поддерживать работающую версию

Нужно учитывать функционал и данные работающей версии при обновлениях

Page 4: Стабильность проекта в условиях непрерывной интеграции

Почему нельзя сразу сделать все

Нельзя спланировать и спроектировать на 5 лет вперед (3 года назад не было iPad)

Изменения требований ко 2-й версии после запуска 1-й

«Парадокс проектирования» (цена растет нелинейно от объема + точность)

Page 5: Стабильность проекта в условиях непрерывной интеграции

Плохой код – тоже причина падений

По мере развития проект превращается в «ласкутного монстра»

Никто не знает как он работает и почему

Доработка нового функционала требует нечеловеческих усилий

Проект «ложиться» под нагрузками

Page 6: Стабильность проекта в условиях непрерывной интеграции

Замкнутый круг

Сайты чаще всего падают из-за обновлений

Обновления неотъемлемая часть развития

Развитие (изменения, переделки) порождает плохой код

Чем хуже код, тем выше вероятность сбоя при обновлении

Page 7: Стабильность проекта в условиях непрерывной интеграции

Как обеспечить стабильность растущего проекта?

1)Процессы отгрузок2)Качество кода

Page 8: Стабильность проекта в условиях непрерывной интеграции

Разделение на Минорные и Мажорные итерации (3-6 мес.)

Рефакторинг

Нагрузочное тестирование

Доработка архитектуры, документирование

Проблема «продажи» рефакторинга: нет видимого результата (важно чтобы у заказчика был технический специалист) + видимые метрики

Page 9: Стабильность проекта в условиях непрерывной интеграции

Разделение производства и Поддержки. Культура отгрузок

Разделение Производства и поддержки. Минорных и мажорных итераций

Разные цели (KPI) и парадигмы Производства и Поддержки

Отгрузки через отдел Поддержки

Page 10: Стабильность проекта в условиях непрерывной интеграции

Не уверен – не отгружай!

Независимый аудит кода перед отгрузкой

Сфокусированная ответственность за отгрузку

Регулярный выборочный контроль кода со стороны эксперта (тех директора)

Автотесты

План-тесты и таблицы связанного функционала (работа отдела качества)

Page 11: Стабильность проекта в условиях непрерывной интеграции
Page 12: Стабильность проекта в условиях непрерывной интеграции

Тренируйтесь на кошках

Частичная отгрузка на боевой – в идеале если пользуетесь сами или часть лояльных пользователей

Отгрузка для части боевых пользователей (на выделенный сервер)

Полная идентичность финального тестового стенда и боевого (включая окружение)

Тестирование на реальных данных

Отгрузка одной кнопкой

Page 13: Стабильность проекта в условиях непрерывной интеграции

DNS

Балансировщик

Node 1

Node 2

Node N

Типовая схема

Page 14: Стабильность проекта в условиях непрерывной интеграции

DNS

Балансировщик

Node 1

Node 2

Node NStageStage

Отключаем одну ноду и обновляем со Stage

Page 15: Стабильность проекта в условиях непрерывной интеграции

DNS

Балансировщик

Node 1

Node 2

Node N

Тестовый трафик

Включаем ноду в тестовом режиме

Page 16: Стабильность проекта в условиях непрерывной интеграции

DNS

Балансировщик

Node 1

Node 2

Node N

Раздаем изменения с обновленной ноды

Page 17: Стабильность проекта в условиях непрерывной интеграции

Надежность и быстродействие

Откуда проблема: нельзя иметь 30-ти кратный запас по «железу» - все свободные ресурсы «отъест» плохой код

Ограничения по железу при разработке

Запуск нового для части трафика на отдельной ноде

Page 18: Стабильность проекта в условиях непрерывной интеграции

Стабилизация команды. Сохранение культуры

Люди устают, один проект надоедает, деньги не мотивируют

Своевременная передача знаний и культуры, а не удержание любой ценой 5-ти человек 5 лет

Команда 5-10 человек, 2 архитектора

Стабильный поток объемов

Page 19: Стабильность проекта в условиях непрерывной интеграции
Page 20: Стабильность проекта в условиях непрерывной интеграции
Page 21: Стабильность проекта в условиях непрерывной интеграции

Вопросы?

Митрофанов Денис

Спасибо за внимание!